Próbuję zdiagnozować niektóre przypadkowe awarie na bezgłowym serwerze i jedną z rzeczy, która wydaje się ciekawa, jest to, że zdarzają się one tylko pod presją pamięci, a mój rozmiar wymiany nie przekroczy 0.
Jak zmusić maszynę do zamiany, aby upewnić się, że działa poprawnie?
orca ~ # free
total used free shared buffers cached
Mem: 1551140 1472392 78748 0 333920 1046368
-/+ buffers/cache: 92104 1459036
Swap: 1060280 0 1060280
orca ~ # swapon -s
Filename Type Size Used Priority
/dev/sdb2 partition 1060280 0 -1
kern.log
czasie segfault są jakieś wiadomości ? Komunikat ooom-killer
oznacza, że twój system nie ma wystarczającej ilości pamięci wirtualnej, co może oznaczać, że swap nie jest używany. Czy to zwirtualizowany serwer (i jakiego rodzaju)?segfault at 54 ip b7619ba8 sp bf9c3380 error 4
myślę, że jest to problem sprzętowy, który będzie trudny do wyśledzenia. Jest to fizyczny serwer z dwoma procesorami Athlon MP 2000+ i 1,5 GB pamięci RAM. Działa dość stabilnie, ale nie działa poprawnie podczas kompilacji.Odpowiedzi:
Czy to jest linux? Jeśli tak, możesz spróbować:
A następnie albo użyj programu (programów), który wykorzystuje dużo pamięci RAM, albo napisz małą aplikację, która po prostu zjada RAM. Zrobią to (źródło: http://www.linuxatemyram.com/play.html ):
Dodałem sleep (1), aby dać ci więcej czasu na obserwowanie procesów, gdy pochłania barana i zamiany. Zabójca OOM powinien go zabić, gdy skończy Ci się pamięć RAM i SWAP, aby dać programowi. Możesz to skompilować
gdzie nazwa_pliku.c to plik, w którym zapisałeś powyższy program. Następnie możesz go uruchomić za pomocą ./memeater.
Nie zrobiłbym tego na maszynie produkcyjnej.
źródło
/proc/self/oom_score_adj
upewnić się, że jest to najbardziej prawdopodobna ofiara zabójcy OOM ...<unistd.h>
do snu, w przeciwnym razie generuje ostrzeżeniewarning: implicit declaration of function ‘sleep’;