Көмек

OOM Killer әрекетінің салдары

OOM Killer — Linux ядросының құрамдас бөлігі. Жад таусылған кезде ол RAM-ды босату үшін сервердегі белгілі бір процестерді автоматты түрде тоқтатады. Босатылған жад операциялық жүйенің ядросына қайтарылады, содан кейін оны жады жетпей тұрған басқа процестерге беруге болады.

OOM Killer тоқтатылатын процестерді таңдау үшін белгілі бір ережелерді басшылыққа алады. Ең алдымен ол жақында іске қосылған, көп жад тұтынатын және/немесе көптеген еншілес процестері бар пайдаланушы процестеріне назар аударады. OOM Killer ең соңында root пайдаланушысының ұзақ уақыт бойы жұмыс істеп тұрған жүйелік процестерін тоқтатады.

Алайда OOM Killer процестерді тоқтату үшін SIGKILL сигналын қолданатынын ескеру керек. Бұл сигнал процестерге жұмысын дұрыс аяқтап, деректерін сақтауға мүмкіндік бермейді. Егер OOM Killer тым жиі іске қосылса, бұл жүйе жұмысында елеулі ақауларға әкелуі мүмкін.

OOM Killer іске қосылса не істеу керек

  • Егер OOM Killer тек жоғары жүктеме кезінде, мысалы, серверді оңтайландыру барысында іске қосылатынын байқасаңыз, антивирустық бағдарламалық жасақтаманы уақытша өшіріңіз. Бұл жедел жадтың біраз бөлігін босатып, қажетті процестерді сәтті орындауға мүмкіндік береді. Дегенмен бұл сервердің қауіпсіздігін төмендетеді, сондықтан бұл әдісті абайлап және тек уақытша пайдаланған жөн.
  • Егер OOM Killer үнемі іске қосылып тұрса, мәселенің түпкі себебін жою үшін сервердің, дерекқорлар мен веб-сайттардың жұмысын талдап, оларды оңтайландыру қажет.
  • Егер сервер оңтайландырылған болса да, жад бәрібір жетпесе, жедел жад көлемін ұлғайтуды немесе RAM көлемі үлкенірек тарифтік жоспарға көшуді қарастырыңыз (тарифтер мен конфигурациялар туралы ақпаратты қараңыз).
  • Сондай-ақ OOM Killer белгілі бір процестің жұмысын тоқтатпауы үшін сол процеске басымдық орнатуға болады. Басымдық әр процесс іске қосылған кезде жасалатын /proc/$PID/oom_adj файлында орнатылады. Басымдықты орнату үшін қажетті процестің PID нөмірін біліп, келесі команданы орындаңыз:
echo -17 > /proc/процесс_PID/oom_adj

Сондай-ақ процесс атауын да пайдалануға болады, мысалы, sshd процесі үшін:

pgrep -f "/usr/sbin/sshd" | while read PID; do echo -17 > /proc/$PID/oom_adj; done

Бұл жағдайда орнатылатын басымдық — -17. Қауіпсізірек балама — -15 басымдығын пайдалану. Бұл жағдайда OOM Killer процесті тек төтенше жағдайларда ғана тоқтатады, бұл жүйенің күрделі ақауларының алдын алады.

Сұрақтарыңыз бар болса, жазыңыз