Śledź błędy pamięci aktualizacji SLES przed ponowną próbą

Jeśli podczas aktualizacji SLES zgłasza komunikat „Nie można przydzielić pamięci”, najpierw sprawdź, czy jądro zarejestrowało zdarzenie braku pamięci i czy pamięć RAM lub swap zostały wyczerpane. Wstrzymaj znane, nieistotne obciążenie lub zwiększ przypisaną pamięć maszyny wirtualnej dopiero po potwierdzeniu obciążenia, a następnie sprawdź, czy Zypper i RPM nie są już aktywne przed wznowieniem pierwotnej procedury aktualizacji.

Hipotetyczny przykład: wyobraź sobie maszynę wirtualną SLES 15, na której administrator uruchamia zaplanowaną aktualizację pakietu podczas działania dużego zadania wsadowego. Zypper zatrzymuje się z powodu błędu alokacji pamięci. Poniższy przykład ma charakter poglądowy, a nie jest raportem z rzeczywistego incydentu lub testu; użyj poleceń, aby zebrać dowody na własnym hoście, zanim wybierzesz rozwiązanie.

Przykład terminala SLES pokazujący sprawdzanie dostępności, wymiany i statusu vmstat przy małej ilości dostępnej pamięci i prawie pełnym obszarze wymiany
W hipotetycznym przypadku przed zmianą uaktualnienia należy porównać dostępną pamięć RAM, skonfigurowaną pamięć wymiany i trwającą aktywność pamięci wymiany.

1. Sprawdź, czy serwer nadal jest aktualizowany

Nie restartuj, nie zamykaj procesów pakietów ani nie uruchamiaj drugiego polecenia aktualizacji tylko dlatego, że sesja SSH wyświetliła błąd. Połącz się ponownie w drugiej sesji i sprawdź, czy są aktywne procesy Zypper lub RPM:

pgrep -a 'zypper|rpm'

Jeśli proces pakietu nadal działa, odczekaj chwilę i sprawdź jego dane wyjściowe lub logi. Nie usuwaj plików blokady Zypper, gdy operacja pakietu jest aktywna. Jeśli żaden proces nie jest uruchomiony, zachowaj dokładny tekst błędu i zanotuj, kiedy wystąpił; ten znacznik czasu pomaga powiązać logi jądra i pakietu.

2. Potwierdź lub wyklucz obciążenie pamięci

Zbierz aktualną migawkę pamięci RAM i wymiany:

free -h
swapon --show
vmstat 1 5
Przykład terminala SLES z wpisem w dzienniku braku pamięci jądra i kontekstem niepowodzenia instalacji Zyppera
Rekordy OOM jądra w pobliżu awarii Zyppera stanowią silniejszy dowód niż sam tekst błędu. Ten dziennik jest tego przykładem.

W free -hsprawdź kolumnę available, nie tylko ilość oznaczoną free; Linux używa również pamięci RAM jako pamięci podręcznej. swapon --showRaportuje, czy istnieje wymiana i ile jest jej wykorzystane. W vmstat, powtarzające się wartości niezerowe sii sow ostatnich wierszach wskazują na aktywną wymianę; pierwszy wiersz to średnia od momentu uruchomienia, więc skup się na kolejnych wierszach.

Następnie poszukaj komunikatu o braku pamięci jądra (OOM) w miejscu wystąpienia awarii i przeczytaj dziennik Zyppera:

sudo journalctl -k -b --since "30 minutes ago" | grep -Ei 'oom|out of memory|killed process'
sudo tail -n 80 /var/log/zypper.log

Rekord OOM-kill o nazwie RPM, Zypper lub inny proces wskazuje na rzeczywistą diagnostykę przeciążenia pamięci. Sam niski poziom „wolnej” pamięci RAM nie jest wystarczający: pamięć podręczną można odzyskać, a komunikat może również wynikać z limitu pamięci procesu lub usługi. Jeśli nie pojawi się żaden wpis OOM jądra, przed dodaniem pamięci hosta należy sprawdzić limity błędnego polecenia oraz ewentualne ograniczenia pamięci systemd lub kontenera. Dokładnej przyczyny nie można ustalić na podstawie samego komunikatu „Nie można przydzielić pamięci”.

3. Zmniejsz ciśnienie przed ponowną próbą

Wróć do hipotetycznej maszyny wirtualnej. Jeśli zadanie wsadowe zużywa pamięć, a system wykazuje ciągłą aktywność wymiany lub brak pamięci jądra (OOM), użyj obsługiwanej przez aplikację procedury wstrzymywania lub zatrzymywania. Nie zamykaj bazy danych, obciążenia SAP ani innej usługi stanowej bez wykonania kroków operatora. Sprawdź pamięć RAM i ponownie wykonaj wymianę po wstrzymaniu obciążenia.

Przykład terminala SLES sprawdzającego przykładową usługę wsadową i sortującego procesy według pamięci rezydentnej
Zidentyfikuj obciążenie pracą za pomocą pamięci zanim poprosisz jego właściciela o jego wstrzymanie; dane dotyczące usług i procesów są hipotetycznymi przykładami.

Jeśli podczas normalnej konserwacji gościowi brakuje pamięci, zwiększ przydzieloną mu pamięć RAM za pośrednictwem obsługiwanego hiperwizora lub platformy sterowania w chmurze, a następnie sprawdź, czy system operacyjny widzi nową ilość. Dodanie pamięci wymiany może zapewnić tymczasową rezerwę, ale jest wolniejsze niż pamięć RAM i nie rozwiązuje problemu stałego zapotrzebowania na pamięć. Układ pamięci masowej w systemie SLES ma znaczenie: na przykład SUSE dokumentuje określone ograniczenia dotyczące plików wymiany w systemie Btrfs. Unikaj tworzenia lub zmiany rozmiaru pamięci wymiany podczas aktualizacji, chyba że sprawdzisz wymagania dotyczące systemu plików, migawki i platformy.

W przypadku braku rekordów OOM należy sprawdzić limit obowiązujący dla procesu, który uległ awarii. W systemie SLES 15 należy sprawdzić skonfigurowany limit pamięci obciążenia zarządzanego przez systemd, zastępując nazwę przykładowej jednostki usługą, której dotyczy problem:

sudo systemctl show example-batch.service -p MemoryMax

Porównaj tę wartość z dostępną pamięcią. Limit cgroup nie zostanie naprawiony przez zwiększenie pamięci RAM maszyny wirtualnej, chyba że limit zostanie odpowiednio podniesiony. W przypadku starszych pakietów Service Pack należy sprawdzić nazwę właściwości w dokumentacji systemd danej wersji.

4. Wznów tę samą obsługiwaną aktualizację i ją zweryfikuj

Po zakończeniu procesu pakietowania sprawdź, /var/log/zypper.logczy ostatnio ukończono akcję i czy pakiety zostały nieudane. Jeśli RPM lub Zypper zgłosi niekompletną transakcję, przed ponowną próbą postępuj zgodnie ze wskazówkami odzyskiwania systemu SUSE dotyczącymi tego konkretnego błędu. Nie usuwaj ręcznie plików bazy danych ani blokad pakietów.

Użyj tej samej ścieżki aktualizacji, którą pierwotnie uruchomiłeś. Rutynowa konserwacja pakietów i migracja Service Packa to różne operacje: dokumenty SUSE zypper patchdotyczące instalowania odpowiednich wydanych poprawek, podczas gdy aktualizacje Service Packa i głównej wersji mają własne obsługiwane ścieżki i procedury przygotowawcze. Nie przełączaj się na tę opcję zypper duptylko po to, by obejść ograniczenia pamięci. W przypadku rutynowego uruchomienia poprawki, najpierw sprawdź transakcję:

sudo zypper patch --dry-run
Przykład terminala SLES sprawdzającego testową wersję poprawki Zypper przed planowaną aktualizacją pakietu
Przed ponownym rozpoczęciem rutynowego stosowania poprawek należy przejrzeć plan pakietu testowego; zamiast tego należy użyć udokumentowanego polecenia migracji pakietu Service Pack.

Jeśli test pokaże rozsądny plan, a pamięć jest stabilna, zaplanuj okno konserwacji i uruchom odpowiednie polecenie dla pierwotnego zadania. Utrzymuj dostępną sesję SSH, monitoruj proces i sprawdź wynik później:

sudo tail -n 80 /var/log/zypper.log
sudo journalctl -k -b --since "30 minutes ago" | grep -Ei 'oom|out of memory|killed process'

Pomyślne odzyskiwanie oznacza, że ​​zamierzone pakiety lub migracja zostały ukończone, Zypper zakończył działanie bez problemów i nie pojawiło się żadne nowe zdarzenie braku pamięci (OOM) podczas wykonywania operacji. Jeśli system jest bootowalny, ale sama migracja Service Packa SLES musi zostać cofnięta, udokumentowane wycofanie Snappera przez SUSE ma zastosowanie tylko wtedy, gdy spełnione są jego wymagania, w tym obsługiwany katalog główny Btrfs i skonfigurowane migawki. Nie należy traktować wycofania jako ogólnej odpowiedzi na nieudaną poprawkę pakietu.

Kiedy zatrzymać się i eskalować

Jeśli błąd powtarza się po usunięciu obciążenia pamięci, procesy pakietów nadal się zawieszają lub baza danych RPM zgłasza uszkodzenie, przerwij ponawianie prób. Zachowaj dziennik Zyppera, dziennik jądra, wersję produktu i Service Pack oraz dokładną nazwę użytego polecenia. Systemy SUSE supportconfigmogą gromadzić dane diagnostyczne na potrzeby zgłoszenia do pomocy technicznej. Poniższe kroki pomagają odróżnić obciążenie pamięci od innych błędów alokacji; nie są one w stanie określić usterki specyficznej dla produktu bez pełnych dzienników i konfiguracji systemu.

Aby uzyskać szczegółowe informacje o SLES 15 SP7, zapoznaj się z narzędziami do monitorowania systemu SUSE , informacjami o plikach dziennika , wskazówkami dotyczącymi administracji Zypperem , wymaganiami dotyczącymi wymiany i Btrfs oraz instrukcjami aktualizacji i przywracania online . Polecenia i ścieżki odzyskiwania mogą się różnić w zależności od pakietu Service Pack SLES, architektury, systemu plików oraz tego, czy zadanie dotyczy poprawek, czy migracji wersji.

Zostaw komentarz

Kiedy SLES Btrfs przechodzi w tryb tylko do odczytu: diagnoza przed ponownym zamontowaniem

Kiedy SLES Btrfs przechodzi w tryb tylko do odczytu: diagnoza przed ponownym zamontowaniem

Określ, czy system Btrfs jest celowo przeznaczony tylko do odczytu, ma mało miejsca lub chroni dane po błędach, a następnie wybierz ścieżkę odzyskiwania odpowiadającą danej przyczynie.

Rejestracja systemu SLES 15 za pomocą programu SUSE Manager w sieci offline

Rejestracja systemu SLES 15 za pomocą programu SUSE Manager w sieci offline

Przygotuj kanały lustrzane, utwórz klucz aktywacyjny i uruchom klienta SLES 15 bez bezpośredniego dostępu do Internetu, zachowując połączenie niezbędne do meldowania się menedżera.

Uruchomienie przekierowania X11 w YaST przez SSH

Uruchomienie przekierowania X11 w YaST przez SSH

Naprawiono błąd uruchamiania XIO w YaST przez SSH, zweryfikowano przekazywanie X11 i xauth oraz przełączono na interfejs ncurses, gdy zdalne okno nie jest potrzebne.

Bezpieczne przywracanie nieudanej aktualizacji SLES za pomocą Snappera

Bezpieczne przywracanie nieudanej aktualizacji SLES za pomocą Snappera

Znajdź migawkę Btrfs sprzed aktualizacji, przetestuj ją w trybie tylko do odczytu i wykonaj trwałe odzyskiwanie za pomocą Snapper, pamiętając o tym, które dane pozostają poza wycofaniem do katalogu głównego.

Bezpieczne przekazywanie dziennika systemowego SLES za pomocą rsyslog i wzajemnego protokołu TLS

Bezpieczne przekazywanie dziennika systemowego SLES za pomocą rsyslog i wzajemnego protokołu TLS

Wysyłaj logi systemu SLES do zdalnego kolektora rsyslog za pośrednictwem uwierzytelnionego protokołu TLS, z kontrolą certyfikatów, buforowaniem przerw i testami dostarczania.

Śledź błędy pamięci aktualizacji SLES przed ponowną próbą

Śledź błędy pamięci aktualizacji SLES przed ponowną próbą

Użyj pamięci RAM, wymiany, jądra i dzienników Zypper, aby zidentyfikować rzeczywiste obciążenie pamięci, chronić stan pakietu i wybrać bezpieczniejszą ponowną próbę aktualizacji SLES.

Utrzymywanie aktualizacji zabezpieczeń Debiana 12 na serwerze bez interfejsu graficznego

Utrzymywanie aktualizacji zabezpieczeń Debiana 12 na serwerze bez interfejsu graficznego

Włącz automatyczne aktualizacje zabezpieczeń Debiana przez SSH, zachowaj domyślne źródła pakietów i zweryfikuj zaplanowane uruchomienia za pomocą dzienników systemd i APT.

Otrzymuj ostrzeżenia dotyczące dysku SMART Ubuntu e-mailem za pomocą smartd

Otrzymuj ostrzeżenia dotyczące dysku SMART Ubuntu e-mailem za pomocą smartd

Porównaj opcje dostarczania poczty, skonfiguruj smartd w systemie Ubuntu i sprawdź, czy ostrzeżenia dotyczące stanu dysku docierają do Twojej skrzynki odbiorczej.

Niepowodzenia wyszukiwania DNS w systemie Debian 12: naprawa błędu systemd-resolved

Niepowodzenia wyszukiwania DNS w systemie Debian 12: naprawa błędu systemd-resolved

Przywróć wyszukiwania DNS w systemie Debian 12, sprawdzając systemd-resolved, naprawiając w razie potrzeby resolv.conf oraz weryfikując rozdzielczość DNS i aplikacji.

Ubuntu 24.04 nie wyświetla dźwięku HDMI? Przywróć wyjście

Ubuntu 24.04 nie wyświetla dźwięku HDMI? Przywróć wyjście

Spraw, aby Ubuntu wykrył monitor lub telewizor jako wyjście audio, wybierz je w ustawieniach dźwięku i sprawdź połączenie lub listę urządzeń PipeWire, jeśli brakuje złącza HDMI.