Od czasu do czasu „mój” serwer zatrzymuje się, ponieważ zabrakło mu zarówno pamięci, jak i przestrzeni wymiany. (wciąż reaguje na ping, ale nic więcej, nawet ssh).
Powiedziano mi, że linux robi nadmierne zaangażowanie w pamięć, co, o ile rozumiem, jest tym samym, co banki robią z pieniędzmi: zapewnia procesom więcej pamięci niż faktycznie dostępna, zakładając, że większość procesów nie wykorzysta całej pamięci, o którą proszą przynajmniej nie wszystkie jednocześnie.
Załóżmy, że jest to faktycznie przyczyna, dla której mój system czasami się zawiesza, nie omawiajmy tutaj, czy tak jest (zobacz Co może spowodować, że WSZYSTKIE usługi na serwerze przestaną działać, ale nadal reagują na ping? I jak to wymyślić ) .
Więc,
jak mogę wyłączyć lub drastycznie zmniejszyć nadmierne zaangażowanie pamięci w CentOS? Przeczytałem, że istnieją dwa ustawienia o nazwie vm.overcommit_memory (wartości 0, 1 lub 2) i vm.overcommit_ratiom, ale nie mam pojęcia, gdzie muszę je znaleźć i zmienić (mam nadzieję, że plik konfiguracyjny), jakie wartości powinienem spróbować i czy muszę ponownie uruchomić serwer, aby zmiany były skuteczne.
i czy to jest bezpieczne? Jakich skutków ubocznych mogę się spodziewać? Kiedy google szukają nadmiernej pamięci, widzę przerażające rzeczy, takie jak ludzie twierdzący, że ich serwer nie może się już uruchomić.
Ponieważ tym, co powoduje nagły wzrost zużycia pamięci, jest mysql z powodu zapytań wykonywanych przez php, które z kolei wywoływane są podczas obsługi żądań HTTP, oczekiwałbym, że tylko jakiś skrypt php się nie zakończy, a więc od czasu do czasu około 500 odpowiedzi serwer jest zbyt zajęty, co jest ryzykiem, które mogę podjąć (na pewno lepiej, aby cały serwer stał się niedostępny i musiał mocno go zrestartować).
Czy może to naprawdę spowodować, że mój serwer nie będzie mógł zrestartować się, jeśli wybiorę złe ustawienia?