PostgreSQL-เดจเดพเดฏเดฟ Linux-เตฝ เด”เดŸเตเดŸเต-เด“เดซเต-เดฎเต†เดฎเตเดฎเดฑเดฟ เด•เดฟเดฒเตเดฒเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

PostgreSQL-เดจเดพเดฏเดฟ Linux-เตฝ เด”เดŸเตเดŸเต-เด“เดซเต-เดฎเต†เดฎเตเดฎเดฑเดฟ เด•เดฟเดฒเตเดฒเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เดฒเดฟเดจเด•เตเดธเดฟเตฝ เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเต†เตผเดตเตผ เด…เดชเตเดฐเดคเต€เด•เตเดทเดฟเดคเดฎเดพเดฏเดฟ เดชเตเดฑเดคเตเดคเตเด•เดŸเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดจเดฟเด™เตเด™เตพ เด•เดพเดฐเดฃเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดจเดฟเดฐเดตเดงเดฟ เด•เดพเดฐเดฃเด™เตเด™เดณเตเดฃเตเดŸเดพเด•เดพเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, SIGSEGV - เดฌเดพเด•เตเด•เต†เตปเดกเต เดธเต†เตผเดตเดฑเดฟเดฒเต† เด’เดฐเต เดฌเด—เต เด•เดพเดฐเดฃเด‚ เดชเดฐเดพเดœเดฏเด‚. เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เด…เดชเต‚เตผเดตเดฎเดพเดฃเต. เดฎเดฟเด•เตเด•เดชเตเดชเต‹เดดเตเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดกเดฟเดธเตเด•เดฟเตฝ เดธเตเดฅเดฒเดฎเต‹ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเต‹ เดคเต€เตผเดจเตเดจเต. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดกเดฟเดธเตเด•เดฟเตฝ เด‡เดŸเด‚ เดคเต€เตผเดจเตเดจเดพเตฝ, เด’เดฐเต เดชเต‹เด‚เดตเดดเดฟ เดฎเดพเดคเตเดฐเดฎเต‡เดฏเตเดณเตเดณเต‚ - เดธเตเดฅเดฒเด‚ เดถเต‚เดจเตเดฏเดฎเดพเด•เตเด•เดฟ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•.

เด“เตผเดฎเตเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เด•เตŠเดฒเดฏเดพเดณเดฟ

เด’เดฐเต เดธเต†เตผเดตเดฑเต‹ เดชเตเดฐเต‹เดธเดธเตเดธเต‹ เดฎเต†เดฎเตเดฎเดฑเดฟ เดคเต€เดฐเตเดฎเตเดชเต‹เตพ, Linux 2 เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต: เดฎเตเดดเตเดตเตป เดธเดฟเดธเตเดฑเตเดฑเดตเตเด‚ เด•เตเดฐเดพเดทเต เดšเต†เดฏเตเดฏเตเด• เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเต†เดฎเตเดฎเดฑเดฟ เดจเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏ (เด…เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป) เด…เดตเดธเดพเดจเดฟเดชเตเดชเดฟเด•เตเด•เตเด•. เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดชเตเดฐเด•เตเดฐเดฟเดฏ เด…เดตเดธเดพเดจเดฟเดชเตเดชเดฟเดšเตเดšเต OS เด•เตเดฐเดพเดทเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต. เดšเตเดฐเตเด•เตเด•เดคเตเดคเดฟเตฝ, เด•เต‡เตผเดฃเดฒเดฟเดจเต† เด•เตเดฐเดพเดทเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต† เดจเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดพเดฃเต เด”เดŸเตเดŸเต-เด“เดซเต-เดฎเต†เดฎเตเดฎเดฑเดฟ เด•เดฟเดฒเตเดฒเตผ. OS เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเดพเตป เด‡เดคเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต† เดฌเดฒเดฟเด•เดดเดฟเด•เตเด•เตเดจเตเดจเต. OOM เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเตเด‚ เด…เดคเต เดŽเด™เตเด™เดจเต† เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เด†เดฆเตเดฏเด‚ เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเดพเด‚, เดคเตเดŸเตผเดจเตเดจเต OOM เด•เดฟเดฒเตเดฒเตผ เดเดคเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด…เดตเดธเดพเดจเดฟเดชเตเดชเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเต เดคเต€เดฐเตเดฎเดพเดจเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเด™เตเด™เดจเต†เดฏเต†เดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚.

เดฒเดฟเดจเด•เตเดธเดฟเดจเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดœเต‹เดฒเดฟเด•เดณเดฟเดฒเตŠเดจเตเดจเต, เดชเตเดฐเต‹เดธเดธเตเดธเตเด•เตพ เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเดฎเตเดชเต‹เตพ เดฎเต†เดฎเตเดฎเดฑเดฟ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต. เดธเดพเดงเดพเดฐเดฃเด—เดคเดฟเดฏเดฟเตฝ, เด’เดฐเต เดชเตเดฐเต‹เดธเดธเตเดธเต‹ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต‹ 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 เดชเตเดฐเต‹เดธเดธเตเดธเต เดเดกเดฟ 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-เด•เดฟเดฒเตเดฒเตผ เดซเด‚เด—เตโ€Œเดทเดจเต† เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต 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-เด•เดฟเดฒเตเดฒเตผ เด“เดฃเดพเด•เตเด•เดพเดจเตเด‚ เด“เดซเดพเด•เตเด•เดพเดจเตเด‚ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ. เดฒเดฟเดจเด•เตโ€Œเดธเดฟเดจเต เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด…เดจเตเดตเดฆเดฟเด•เตเด•เดพเดคเต† เดคเดจเตเดจเต† เดฒเดญเตเดฏเดฎเดพเดฏเดคเดฟเดจเต‡เด•เตเด•เดพเตพ เด•เต‚เดŸเตเดคเตฝ เดฎเต†เดฎเตเดฎเดฑเดฟ เดชเตเดฐเต‹เดธเดธเตเดธเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดฑเดฟเดธเตผเดตเต เดšเต†เดฏเตเดฏเดพเดจเดพเด•เตเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เดชเดฑเดžเตเดžเดฟเดŸเตเดŸเตเดฃเตเดŸเต, เดˆ เดธเตเดตเดญเดพเดตเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เด’เดฐเต เดฒเดฟเดจเด•เตเดธเต เด•เต‡เตผเดฃเตฝ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดพเดฃเต. เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เด‡เดคเดฟเดจเต เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดฏเดพเดฃเต vm.overcommit_memory.

เด…เดคเดฟเดจเดพเดฏเดฟ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚:

0: เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดฎเต†เดฎเตเดฎเดฑเดฟ เดฑเดฟเดธเตผเดตเต เดšเต†เดฏเตเดฏเดฃเดฎเต‹ เดŽเดจเตเดจเต เด•เต‡เตผเดฃเตฝ เดคเดจเตเดจเต† เดคเต€เดฐเตเดฎเดพเดจเดฟเด•เตเด•เตเดจเตเดจเต. เดฒเดฟเดจเด•เตเดธเดฟเดจเตเดฑเต† เดฎเดฟเด•เตเด• เดชเดคเดฟเดชเตเดชเตเด•เดณเดฟเดฒเตเด‚ เด‡เดคเต เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฃเต.
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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•