เช†เช‰เชŸ-เช“เชซ-เชฎเซ‡เชฎเชฐเซ€ เช•เชฟเชฒเชฐ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ Linux เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชเชธเช•เซเชฏเซเชเชฒ เชฎเชพเชŸเซ‡

เช†เช‰เชŸ-เช“เชซ-เชฎเซ‡เชฎเชฐเซ€ เช•เชฟเชฒเชฐ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ Linux เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชเชธเช•เซเชฏเซเชเชฒ เชฎเชพเชŸเซ‡

เชœเซเชฏเชพเชฐเซ‡ เชฎเชพเช‚ Linux เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชฐเซเชตเชฐ เช…เชฃเชงเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชฌเช‚เชง เชฅเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เช•เชพเชฐเชฃ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชคเซ‡เชจเชพ เช˜เชฃเชพ เช•เชพเชฐเชฃเซ‹ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, SIGSEGV โ€” เชฌเซ‡เช•เชเชจเซเชก เชธเชฐเซเชตเชฐเชฎเชพเช‚ เชญเซ‚เชฒเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชจเชฟเชทเซเชซเชณเชคเชพ. เชชเชฐเช‚เชคเซ เช† เชฆเซเชฐเซเชฒเชญ เช›เซ‡. เชฎเซ‹เชŸเซ‡ เชญเชพเช—เซ‡, เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช–เชพเชฒเซ€ เชกเชฟเชธเซเช• เชœเช—เซเชฏเชพ เช…เชฅเชตเชพ เชฎเซ‡เชฎเชฐเซ€ เชธเชฎเชพเชชเซเชค เชฅเชˆ เชœเชพเชฏ เช›เซ‡. เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชกเชฟเชธเซเช• เชธเซเชชเซ‡เชธ เชธเชฎเชพเชชเซเชค เชฅเชˆ เชœเชพเชฏ, เชคเซ‹ เชเช• เชœ เชฐเชธเซเชคเซ‹ เช›เซ‡ - เชœเช—เซเชฏเชพ เช–เชพเชฒเซ€ เช•เชฐเซ‹ เช…เชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ‹.

เช†เช‰เชŸ-เช“เชซ-เชฎเซ‡เชฎเชฐเซ€ เช•เชฟเชฒเชฐ

เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชธเชฐเซเชตเชฐ เช…เชฅเชตเชพ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฎเซ‡เชฎเชฐเซ€ เช–เชคเชฎ เชฅเชˆ เชœเชพเชฏ, Linux เช†เช‰เชŸ-เช“เชซ-เชฎเซ‡เชฎเชฐเซ€ เช•เชฟเชฒเชฐ เชฌเซ‡ เช‰เช•เซ‡เชฒเซ‹ เช†เชชเซ‡ เช›เซ‡: เช†เช–เซ€ เชธเชฟเชธเซเชŸเชฎ เช•เซเชฐเซ‡เชถ เช•เชฐเซ‹ เช…เชฅเชตเชพ เชฎเซ‡เชฎเชฐเซ€ เช–เชพเชˆ เชฐเชนเซ‡เชฒเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ (เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ) เชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเซ‹. เช…เชฒเชฌเชคเซเชค, เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเชตเซ€ เช…เชจเซ‡ OS เชจเซ‡ เช•เซเชฐเซ‡เชถ เชฅเชตเชพเชฅเซ€ เชฌเชšเชพเชตเชตเซ€ เชตเชงเซ เชธเชพเชฐเซเช‚ เช›เซ‡. เชŸเซ‚เช‚เช•เชฎเชพเช‚, เช†เช‰เชŸ-เช“เชซ-เชฎเซ‡เชฎเชฐเซ€ เช•เชฟเชฒเชฐ เช เชเช• เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช›เซ‡ เชœเซ‡ เช•เชฐเซเชจเชฒเชจเซ‡ เช•เซเชฐเซ‡เชถ เชฅเชตเชพเชฅเซ€ เชฌเชšเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡ OS เชจเซ‡ เชšเชพเชฒเซ เชฐเชพเช–เชตเชพ เชฎเชพเชŸเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซเช‚ เชฌเชฒเชฟเชฆเชพเชจ เช†เชชเซ‡ เช›เซ‡. เชšเชพเชฒเซ‹ เชชเชนเซ‡เชฒเชพ OOM เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเชตเซเช‚ เชคเซ‡เชจเซ€ เชšเชฐเซเชšเชพ เช•เชฐเซ€เช, เช…เชจเซ‡ เชชเช›เซ€ เชœเซ‹เชˆเช เช•เซ‡ OOM เช•เชฟเชฒเชฐ เช•เชˆ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเชตเซ€ เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเซ‡ เช›เซ‡.

เชฎเซเช–เซเชฏ เช•เชพเชฐเซเชฏเซ‹เชฎเชพเช‚เชจเซเช‚ เชเช• Linux โ€” เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชœเซเชฏเชพเชฐเซ‡ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชซเชพเชณเชตเซ‹. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช•เซ‹เชˆ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช…เชฅเชตเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ OS เชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ‡ เช›เซ‡ เชชเชฐเช‚เชคเซ เชคเซ‡เชจเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชจเชฅเซ€. เชœเซ‹ OS เชฆเชฐเซ‡เช•เชจเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชซเชพเชณเชตเซ‡ เช›เซ‡ เชœเซ‡ เชคเซ‡เชจเซ‡ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ‡ เช›เซ‡ เชชเชฐเช‚เชคเซ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชฏเซ‹เชœเชจเชพ เชจเชฅเซ€ เชฌเชจเชพเชตเชคเซ€, เชคเซ‹ เชธเชฟเชธเซเชŸเชฎ เชเชกเชชเชฅเซ€ เชฎเซ‡เชฎเชฐเซ€ เชธเชฎเชพเชชเซเชค เชฅเชˆ เชœเชถเซ‡, เช…เชจเซ‡ เชธเชฟเชธเซเชŸเชฎ เช•เซเชฐเซ‡เชถ เชฅเชˆ เชœเชถเซ‡. เช†เชจเซ‡ เชฐเซ‹เช•เชตเชพ เชฎเชพเชŸเซ‡, OS เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฎเชพเชŸเซ‡ เชฎเซ‡เชฎเชฐเซ€ เช…เชจเชพเชฎเชค เชฐเชพเช–เซ‡ เช›เซ‡ เชชเชฐเช‚เชคเซ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เชคเซ‡เชจเซ‡ เชซเชพเชณเชตเชคเซเช‚ เชจเชฅเซ€. เชฎเซ‡เชฎเชฐเซ€ เชคเซเชฏเชพเชฐเซ‡ เชœ เชซเชพเชณเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช–เชฐเซ‡เช–เชฐ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เช‡เชฐเชพเชฆเซ‹ เชงเชฐเชพเชตเซ‡ เช›เซ‡. เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ OS เชชเชพเชธเซ‡ เชฎเชซเชค เชฎเซ‡เชฎเชฐเซ€ เชนเซ‹เชคเซ€ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชซเชพเชณเชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ, เชคเซเชฏเชพเชฐเซ‡ OS เชคเซ‡เชจเซ‡ เชซเชพเชณเชตเซ‡ เช›เซ‡ เชœเซ‹ เชคเซ‡ เช•เชฐเซ€ เชถเช•เซ‡. เชจเซเช•เชธเชพเชจ เช เช›เซ‡ เช•เซ‡ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ OS เชฎเซ‡เชฎเชฐเซ€ เช…เชจเชพเชฎเชค เชฐเชพเช–เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชœเซเชฏเชพเชฐเซ‡ เชœเชฐเซ‚เชฐ เชชเชกเซ‡ เชคเซเชฏเชพเชฐเซ‡, เช•เซ‹เชˆ เชฎเชซเชค เชฎเซ‡เชฎเชฐเซ€ เชนเซ‹เชคเซ€ เชจเชฅเซ€, เชœเซ‡เชจเชพ เช•เชพเชฐเชฃเซ‡ เชธเชฟเชธเซเชŸเชฎ เช•เซเชฐเซ‡เชถ เชฅเชพเชฏ เช›เซ‡. เช† เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ OOM เชฎเซเช–เซเชฏ เชญเซ‚เชฎเชฟเช•เชพ เชญเชœเชตเซ‡ เช›เซ‡, เช•เชฐเซเชจเชฒเชจเซ‡ เช—เชญเชฐเชพเชŸเชฅเซ€ เชฌเชšเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเซ‡ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ PostgreSQL เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฌเชณเชœเชฌเชฐเซ€เชฅเซ€ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชฒเซ‹เช—เชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเซ‹ เชธเช‚เชฆเซ‡เชถ เชฆเซ‡เช–เชพเชฏ เช›เซ‡:

Out of Memory: Killed process 12345 (postgres).

เชœเซ‹ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เชฎเซ‡เชฎเชฐเซ€ เช“เช›เซ€ เชนเซ‹เชฏ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฎเซเช•เซเชค เช•เชฐเซ€ เชถเช•เชพเชคเซ€ เชจเชฅเซ€, เชคเซ‹ เชซเช‚เช•เซเชถเชจ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ out_of_memory. เช† เชคเชฌเช•เซเช•เซ‡, เชคเซ‡เชฃเซ€ เชชเชพเชธเซ‡ เชฎเชพเชคเซเชฐ เชเช• เชœ เชตเชธเซเชคเซ เชฌเชพเช•เซ€ เช›เซ‡ - เชเช• เช…เชฅเชตเชพ เชตเชงเซ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชชเซ‚เชฐเซเชฃ เช•เชฐเซ‹. เชถเซเช‚ OOM-เช•เชฟเชฒเชฐ เชคเชฐเชค เชœ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเซ‡ เช…เชฅเชตเชพ เชคเซ‡ เชฐเชพเชน เชœเซ‹เชˆ เชถเช•เซ‡? เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡, เชœเซเชฏเชพเชฐเซ‡ out_of_memory เช•เซ‰เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‡ I/O เช‘เชชเชฐเซ‡เชถเชจ เช…เชฅเชตเชพ เชกเชฟเชธเซเช• เชชเชฐ เชชเซ‡เชœเชฟเช‚เช—เชจเซ€ เชฐเชพเชน เชœเซ‹เชตเชพเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€, OOM เช•เชฟเชฒเชฐเซ‡ เชชเชนเซ‡เชฒเชพ เชคเชชเชพเชธ เช•เชฐเชตเซ€ เชœเซ‹เชˆเช เช…เชจเซ‡ เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช เช•เซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชœเซ‹ เชจเซ€เชšเซ‡เชจเซ€ เชคเชฎเชพเชฎ เชคเชชเชพเชธเซ‹ เชนเช•เชพเชฐเชพเชคเซเชฎเช• เช›เซ‡, เชคเซ‹ OOM เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเชถเซ‡.

เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชชเชธเช‚เชฆเช—เซ€

เชœเซเชฏเชพเชฐเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เช•เชพเชฐเซเชฏ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ out_of_memory(). เชคเซ‡เชจเซเช‚ เชเช• เช•เชพเชฐเซเชฏ เช›เซ‡ select_bad_process(), เชœเซ‡ เช•เชพเชฐเซเชฏเชฎเชพเช‚เชฅเซ€ เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡ badness(). "เชธเซŒเชฅเซ€ เช–เชฐเชพเชฌ" เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชฒเช•เซเชทเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เช•เชพเชฐเซเชฏ badness() เชšเซ‹เช•เซเช•เชธ เชจเชฟเชฏเชฎเซ‹ เช…เชจเซเชธเชพเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชชเชธเช‚เชฆ เช•เชฐเซ‡ เช›เซ‡.

  1. เช•เชฐเซเชจเชฒเชจเซ‡ เชชเซ‹เชคเชพเชจเชพ เชฎเชพเชŸเซ‡ เช•เซ‡เชŸเชฒเซ€เช• เชจเซเชฏเซ‚เชจเชคเชฎ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.
  2. เชคเชฎเชพเชฐเซ‡ เช˜เชฃเซ€ เชฌเชงเซ€ เชฎเซ‡เชฎเชฐเซ€ เช–เชพเชฒเซ€ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.
  3. เช“เช›เซ€ เชฎเซ‡เชฎเชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€.
  4. เชจเซเชฏเซ‚เชจเชคเชฎ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชชเซ‚เชฐเซเชฃ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.
  5. เชœเชŸเชฟเชฒ เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเซเชธ เช•เซ‡ เชœเซ‡ เชคเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเซเชฃ เชฅเชตเชพเชจเซ€ เชคเช•เซ‹ เชตเชงเชพเชฐเซ‡ เช›เซ‡ เชœเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชชเซ‹เชคเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡.

เช† เชคเชฎเชพเชฎ เชคเชชเชพเชธเซ‹ เชชเซ‚เชฐเซเชฃ เช•เชฐเซเชฏเชพ เชชเช›เซ€, OOM เชธเซเช•เซ‹เชฐเชจเซ€ เชคเชชเชพเชธ เช•เชฐเซ‡ เช›เซ‡ (oom_score). OOM เชจเชฟเชฎเชฃเซ‚เช‚เช• เช•เชฐเซ‡ เช›เซ‡ oom_score เชฆเชฐเซ‡เช• เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ, เช…เชจเซ‡ เชชเช›เซ€ เชฎเซ‡เชฎเชฐเซ€เชจเชพ เชœเชฅเซเชฅเชพ เชฆเซเชตเชพเชฐเชพ เช† เชฎเซ‚เชฒเซเชฏเชจเซ‡ เช—เซเชฃเชพเช•เชพเชฐ เช•เชฐเซ‡ เช›เซ‡. เชฎเซ‹เชŸเชพ เชฎเซ‚เชฒเซเชฏเซ‹ เชธเชพเชฅเซ‡เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ OOM เช•เชฟเชฒเชฐเชจเซ‹ เชญเซ‹เช— เชฌเชจเชตเชพเชจเซ€ เชถเช•เซเชฏเชคเชพ เชตเชงเชพเชฐเซ‡ เช›เซ‡. เชฐเซ‚เชŸ เชฏเซเชเชฐ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‹ เชธเซเช•เซ‹เชฐ เช“เช›เซ‹ เชนเซ‹เชฏ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเชตเชพเชจเซ€ เชซเชฐเชœ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซ‡เชตเซ€ เชถเช•เซเชฏเชคเชพ เช“เช›เซ€ เชนเซ‹เชฏ เช›เซ‡.

postgres=# SELECT pg_backend_pid();
pg_backend_pid 
----------------
    3813
(1 row)

Postgres เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ ID 3813 เช›เซ‡, เชคเซ‡เชฅเซ€ เช…เชจเซเชฏ เชถเซ‡เชฒเชฎเชพเช‚ เช† เช•เชฐเซเชจเชฒ เชชเชฐเชฟเชฎเชพเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซเช•เซ‹เชฐ เชฎเซ‡เชณเชตเชตเซ‹ เชถเช•เซเชฏ เช›เซ‡. oom_score:

vagrant@vagrant:~$ sudo cat /proc/3813/oom_score
2

เชœเซ‹ เชคเชฎเซ‡ OOM-Killer เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชฌเชฟเชฒเช•เซเชฒ เชจเชทเซเชŸ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชจเชฅเซ€, เชคเซ‹ เชฌเซ€เชœเซ‹ เช•เชฐเซเชจเชฒ เชตเชฟเช•เชฒเซเชช เช›เซ‡: oom_score_adj. เชคเชฎเชพเชฐเชพ เชฎเซ‚เชฒเซเชฏเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชชเซ‚เชฐเซเชฃ เช•เชฐเชตเชพเชจเซ€ เชถเช•เซเชฏเชคเชพ เช˜เชŸเชพเชกเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‹เชŸเซเช‚ เชจเช•เชพเชฐเชพเชคเซเชฎเช• เชฎเซ‚เชฒเซเชฏ เช‰เชฎเซ‡เชฐเซ‹.

sudo echo -100 > /proc/3813/oom_score_adj

เชฎเซ‚เชฒเซเชฏ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ oom_score_adj, เชธเซ‡เชตเชพ เชฌเซเชฒเซ‹เช•เชฎเชพเช‚ OOMScoreAdjust เชธเซ‡เชŸ เช•เชฐเซ‹:

[Service]
OOMScoreAdjust=-1000

เช…เชฅเชตเชพ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ oomprotect เชเช• เชŸเซ€เชฎเชฎเชพเช‚ rcctl.

rcctl set <i>servicename</i> oomprotect -1000

เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชฌเชณเชœเชฌเชฐเซ€เชฅเซ€ เชธเชฎเชพเชชเซเชค เช•เชฐเซ‹

เชœเซเชฏเชพเชฐเซ‡ เชเช• เช…เชฅเชตเชพ เชตเชงเซ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชชเชธเช‚เชฆ เช•เชฐเซ‡เชฒ เชนเซ‹เชฏ, เชคเซเชฏเชพเชฐเซ‡ OOM-Killer เชซเช‚เช•เซเชถเชจเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ‡ เช›เซ‡ oom_kill_task(). เช† เช•เชพเชฐเซเชฏ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเชฎเชพเชชเซเชคเชฟ เชธเช‚เช•เซ‡เชค เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡. เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เช…เช›เชคเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ oom_kill() เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ SIGKILL เชธเชฟเช—เซเชจเชฒ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เช† เชซเช‚เช•เซเชถเชจเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ‡ เช›เซ‡. เช•เชฐเซเชจเชฒ เชฒเซ‹เช— เชชเชฐ เชธเช‚เชฆเซ‡เชถ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

Out of Memory: Killed process [pid] [name].

OOM-เช•เชฟเชฒเชฐเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเชตเซเช‚

ะ’ Linux เชคเชฎเซ‡ OOM-Killer เชจเซ‡ เชธเช•เซเชทเชฎ เช…เชฅเชตเชพ เช…เช•เซเชทเชฎ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ (เชœเซ‹เช•เซ‡ เชฌเชพเชฆเชฎเชพเช‚ เช†เช—เซเชฐเชนเชฃเซ€เชฏ เชจเชฅเซ€). เชคเซ‡เชจเซ‡ เชธเช•เซเชทเชฎ เช…เชฅเชตเชพ เช…เช•เซเชทเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชชเชฐเชฟเชฎเชพเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ vm.oom-kill. เชฐเชจเชŸเชพเช‡เชฎ เชชเชฐ OOM-เช•เชฟเชฒเชฐเชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ‹ sysctl.

sudo -s sysctl -w vm.oom-kill = 1

OOM-Killer เชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชธเชฎเชพเชจ เช†เชฆเซ‡เชถเชฎเชพเช‚ เชฎเซ‚เชฒเซเชฏ 0 เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ‹:

sudo -s sysctl -w vm.oom-kill = 0

เช† เช†เชฆเซ‡เชถเชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เช•เชพเชฏเชฎ เชฎเชพเชŸเซ‡ เชธเชพเชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชซเช•เซเชค เชชเซเชฐเชฅเชฎ เชฐเซ€เชฌเซ‚เชŸ เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€. เชœเซ‹ เชคเชฎเชจเซ‡ เชตเชงเซ เชฆเซเชฐเชขเชคเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ, เชคเซ‹ เชซเชพเช‡เชฒเชฎเชพเช‚ เช† เชฒเชพเช‡เชจ เช‰เชฎเซ‡เชฐเซ‹ /etc/sysctl.conf:

echo vm.oom-kill = 1 >>/etc/sysctl.conf

เชธเช•เซเชทเชฎ เช…เชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเชตเชพเชจเซ€ เชฌเซ€เชœเซ€ เชฐเซ€เชค เช เช›เซ‡ เช•เซ‡ เชšเชฒ เชฒเช–เชตเซเช‚ panic_on_oom. เชฎเซ‚เชฒเซเชฏ เชนเช‚เชฎเซ‡เชถเชพ เชšเซ‡เช• เช‡เชจ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ /proc.

$ cat /proc/sys/vm/panic_on_oom
0

เชœเซ‹ เชคเชฎเซ‡ 0 เชชเชฐ เช•เชฟเช‚เชฎเชค เชธเซเชฏเซ‹เชœเชฟเชค เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชชเช›เซ€ เชœเซเชฏเชพเชฐเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชธเชฎเชพเชชเซเชค เชฅเชˆ เชœเชถเซ‡, เชคเซเชฏเชพเช‚ เช•เซ‹เชˆ เช•เชฐเซเชจเชฒ เช—เชญเชฐเชพเชŸ เชฐเชนเซ‡เชถเซ‡ เชจเชนเซ€เช‚.

$ echo 0 > /proc/sys/vm/panic_on_oom

เชœเซ‹ เชคเชฎเซ‡ เชตเซ‡เชฒเซเชฏเซเชจเซ‡ 1 เชชเชฐ เชธเซเชฏเซ‹เชœเชฟเชค เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชœเซเชฏเชพเชฐเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เช•เชฐเซเชจเชฒ เช—เชญเชฐเชพเชŸ เชฅเชถเซ‡.

echo 1 > /proc/sys/vm/panic_on_oom

เชœเซ‡เชฎ เช†เชชเชฃเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซเชฏเซ‹ เช›เซ‡, OOM-เช•เชฟเชฒเชฐ เชšเชพเชฒเซ เช…เชจเซ‡ เชฌเช‚เชง เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. Linux เช‰เชชเชฒเชฌเซเชง เช•เชฐเชคเชพเช‚ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชฎเชพเชŸเซ‡ เชตเชงเซ เชฎเซ‡เชฎเชฐเซ€ เช…เชจเชพเชฎเชค เชฐเชพเช–เซ€ เชถเช•เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เชคเซ‡เชจเซ‡ เชซเชพเชณเชตเซ€ เชถเช•เชคเซ€ เชจเชฅเซ€, เช…เชจเซ‡ เช† เชตเชฐเซเชคเชฃเซ‚เช• เช•เชฐเซเชจเชฒ เชชเชฐเชฟเชฎเชพเชฃ เชฆเซเชตเชพเชฐเชพ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡. Linuxเช† เชฎเชพเชŸเซ‡ เชšเชฒ เชœเชตเชพเชฌเชฆเชพเชฐ เช›เซ‡. vm.overcommit_memory.

เชคเชฎเซ‡ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:

0: เช•เชฐเซเชจเชฒ เชชเซ‹เชคเซ‡ เชœ เชจเช•เซเช•เซ€ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เชตเชงเชพเชฐเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชฐเชฟเชเชฐเซเชต เช•เชฐเชตเซ€ เช•เซ‡ เชจเชนเซ€เช‚. เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชตเชฐเซเชเชจเชฎเชพเช‚ เช† เชกเชฟเชซเซ‹เชฒเซเชŸ เชฎเซ‚เชฒเซเชฏ เช›เซ‡. Linux.
1: เช•เชฐเซเชจเชฒ เชนเช‚เชฎเซ‡เชถเชพ เชตเชงเชพเชฐเชพเชจเซ€ เชฎเซ‡เชฎเชฐเซ€ เช…เชจเชพเชฎเชค เชฐเชพเช–เชถเซ‡. เช† เชœเซ‹เช–เชฎเซ€ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชฎเซ‡เชฎเชฐเซ€ เชธเชฎเชพเชชเซเชค เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡, เชธเช‚เชญเชตเชคเชƒ, เชเช• เชฆเชฟเชตเชธ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.
2: เช•เชฐเซเชจเชฒ เชชเชฐเชฟเชฎเชพเชฃเชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เช•เชฐเชคเชพเช‚ เชตเชงเซ เชฎเซ‡เชฎเชฐเซ€ เช…เชจเชพเชฎเชค เชฐเชพเช–เชถเซ‡ เชจเชนเซ€เช‚ overcommit_ratio.

เช† เชชเชฐเชฟเชฎเชพเชฃ เชธเชพเชฅเซ‡, เชคเชฎเซ‡ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชŸเช•เชพเชตเชพเชฐเซ€เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ‹ เช›เซ‹ เชœเซ‡เชจเซ‡ เช“เชตเชฐ-เชฐเชฟเชเชฐเซเชต เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช›เซ‡. เชœเซ‹ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชˆ เชœเช—เซเชฏเชพ เชจ เชนเซ‹เชฏ, เชคเซ‹ เช•เซ‹เชˆ เชฎเซ‡เชฎเชฐเซ€ เชซเชพเชณเชตเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชจเชฅเซ€, เช…เชจเซ‡ เช†เชฐเช•เซเชทเชฃ เชจเช•เชพเชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. PostgreSQL เชฎเชพเชŸเซ‡ เชญเชฒเชพเชฎเชฃ เช•เชฐเซ‡เชฒ เช† เชธเซŒเชฅเซ€ เชธเชฒเชพเชฎเชค เชตเชฟเช•เชฒเซเชช เช›เซ‡. OOM-เช•เชฟเชฒเชฐ เช…เชจเซเชฏ เชคเชคเซเชต เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชญเชพเชตเชฟเชค เชฅเชพเชฏ เช›เซ‡ - เชธเซเชตเซ‡เชชเชฟเช‚เช— เช•เซเชทเชฎเชคเชพ, เชœเซ‡ เชšเชฒ เชฆเซเชตเชพเชฐเชพ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡ cat /proc/sys/vm/swappiness. เช† เชฎเซ‚เชฒเซเชฏเซ‹ เช•เชฐเซเชจเชฒเชจเซ‡ เชชเซ‡เชœเซ€เช‚เช—เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเชตเซเช‚ เชคเซ‡ เช•เชนเซ‡ เช›เซ‡. เชฎเซ‚เชฒเซเชฏ เชœเซ‡เชŸเชฒเซเช‚ เชŠเช‚เชšเซเช‚ เชนเชถเซ‡, OOM เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเซ‡ เชคเซ‡เชตเซ€ เชถเช•เซเชฏเชคเชพ เช“เช›เซ€ เช›เซ‡, เชชเชฐเช‚เชคเซ I/O เช•เชพเชฎเช—เซ€เชฐเซ€เชจเซ‡ เชฒเซ€เชงเซ‡ เชคเซ‡เชจเซ€ เชกเซ‡เชŸเชพเชฌเซ‡เช เชชเชฐ เชจเช•เชพเชฐเชพเชคเซเชฎเช• เช…เชธเชฐ เชชเชกเซ‡ เช›เซ‡. เช…เชจเซ‡ เชŠเชฒเชŸเซเช‚ - เชฎเซ‚เชฒเซเชฏ เชœเซ‡เชŸเชฒเซเช‚ เช“เช›เซเช‚ เช›เซ‡, OOM-เช•เชฟเชฒเชฐ เชนเชธเซเชคเช•เซเชทเซ‡เชชเชจเซ€ เชธเช‚เชญเชพเชตเชจเชพ เชตเชงเชพเชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจ เชชเชฃ เชตเชงเชพเชฐเซ‡ เช›เซ‡. เชกเชฟเชซเซ‰เชฒเซเชŸ เชฎเซ‚เชฒเซเชฏ 60 เช›เซ‡, เชชเชฐเช‚เชคเซ เชœเซ‹ เชธเชฎเช—เซเชฐ เชกเซ‡เชŸเชพเชฌเซ‡เช เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชฌเช‚เชงเชฌเซ‡เชธเซ‡ เช›เซ‡, เชคเซ‹ เชฎเซ‚เชฒเซเชฏเชจเซ‡ 1 เชชเชฐ เชธเซ‡เชŸ เช•เชฐเชตเซเช‚ เชตเชงเซ เชธเชพเชฐเซเช‚ เช›เซ‡.

เชชเชฐเชฟเชฃเชพเชฎเซ‹

OOM-เช•เชฟเชฒเชฐเชฎเชพเช‚ "เช•เชฟเชฒเชฐ" เชจเซ‡ เชคเชฎเชจเซ‡ เชกเชฐเชพเชตเชตเชพ เชจ เชฆเซ‹. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช•เชฟเชฒเชฐ เชคเชฎเชพเชฐเซ€ เชธเชฟเชธเซเชŸเชฎเชจเซ‹ เชคเชพเชฐเชฃเชนเชพเชฐ เชนเชถเซ‡. เชคเซ‡ เชธเซŒเชฅเซ€ เช–เชฐเชพเชฌ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ "เชฎเชพเชฐเซ€ เชจเชพเช–เซ‡ เช›เซ‡" เช…เชจเซ‡ เชธเชฟเชธเซเชŸเชฎเชจเซ‡ เช•เซเชฐเซ‡เชถ เชฅเชตเชพเชฅเซ€ เชฌเชšเชพเชตเซ‡ เช›เซ‡. PostgreSQL เชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ OOM-Killer เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชŸเชพเชณเชตเชพ เชฎเชพเชŸเซ‡, เชชเชฐ เชธเซ‡เชŸ เช•เชฐเซ‹ vm.overcommit_memory เชฎเซ‚เชฒเซเชฏ 2. เช† เชฌเชพเช‚เชนเซ‡เชงเชฐเซ€ เช†เชชเชคเซเช‚ เชจเชฅเซ€ เช•เซ‡ OOM-เช•เชฟเชฒเชฐเชจเซ‡ เชนเชธเซเชคเช•เซเชทเซ‡เชช เช•เชฐเชตเซ‹ เชชเชกเชถเซ‡ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชคเซ‡ PostgreSQL เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเชตเชพเชจเซ€ เชซเชฐเชœ เชชเชพเชกเชตเชพเชจเซ€ เชธเช‚เชญเชพเชตเชจเชพเชจเซ‡ เช˜เชŸเชพเชกเชถเซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

DDoS เชธเซเชฐเช•เซเชทเชพ, VPS VDS เชธเชฐเซเชตเชฐ เชงเชฐเชพเชตเชคเซ€ เชธเชพเช‡เชŸเซเชธ เชฎเชพเชŸเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชนเซ‹เชธเซเชŸเชฟเช‚เช— เช–เชฐเซ€เชฆเซ‹ ๐Ÿ”ฅ DDoS เชธเซเชฐเช•เซเชทเชพ, VPS VDS เชธเชฐเซเชตเชฐเซเชธ เชธเชพเชฅเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชนเซ‹เชธเซเชŸเชฟเช‚เช— เช–เชฐเซ€เชฆเซ‹ | ProHoster