αα αααααααααΆαααΈαααααΌαααααΆααα·αααααααα·αααααα·αααΆαααααΉααα»ααα αααα»αααΈαα»α α’αααααααΌααααααααααΌαα ααα»α ααΆα’αΆα ααΆαα ααα»ααααΆα αααΎαα α§ααΆα ααα, SIGSEGV - ααΆααααΆααααααααΆαααααα α»ααα αααα»ααααΆαααΈαααααΆααααααα ααα»αααααααααΊααααααΆααα ααΆαα αααΎα α’αααααααΆααααα’ααααα αααΆα α¬α’αααα αα αΆαα ααααα·αβααΎβα’αααβα’ααβααα αβαααα»αβααΆα ααΆαβααααΌαβααβαα½αβαααβααΊβαααααΎαβααα αβααααα α αΎαβα αΆααααααΎαβααΌαααααΆαβαα·ααααααβα‘αΎαβαα·αα
ααΆααααααα ααα·
αα αααααααααΆαααΈααα α¬ααααΎαααΆαα’ααα’αααα αα αΆα ααΈαα»α ααααααααααααααΆα 2α ααΆααααααααααααΆααααΌα α¬αααα ααααααΎαααΆα (αααααα·ααΈ) ααααααΈα’αααα αα αΆαα ααΆααΆααΆααααααΎααααα»αααΆααααα ααααααΎαααΆα αα·ααααααΆαα»α OS ααΈααΆαααΆααα ααα»ααα Out-Of-Memory Killer ααΊααΆααααΎαααΆαααααααααΆαααααααα·ααΈαα½αααΎααααΈαααααΆαα»αααΊαααααΈααΆαααΆααα ααΆααααααααααα·ααΈααΎααααΈαααααΆααααααααααααα·ααααα·ααΆαα ααααΌαααΎααα·ααΆααααΆααΈααααααα OOM ααααΎαααΆα αα·ααααααααααααααααΆ α αΎααααααΆααααααΎαααΈααααααα OOM Killer αααααα ααΆααΎαααααα·ααΈαα½αααΆαααααααΌααααα ααα
ααΆααα·α αα α αααααα½αααααΈαα»α ααΊααααΌααααα ααα’αααα αα αΆααααααΆααααααΎαααΆααα αααααααα½αααααααΎαα»αααΆα ααΆααααααΆ ααααΎαααΆα α¬αααααα·ααΈααααΎαα»αα’αααα αα αΆαααΈααααααααααααα·ααααα·ααΆα ααα»αααααα·αα’αΆα ααααΎααΆααΆαααααααααα ααααα·αααΎ OS αααααα’αααα αα αΆααααα’αααααΆααααααΆαααααααΎαα»αααΆ ααα»αααααα·αααΆαααααααααααΎααΆαα ααΆαααααα α’αααα αα αΆαααΉαα’αα α αΎαααααααααααΉααααΆαααα ααΎααααΈαααααΆααααα αΆααα ααααααααααααα·ααααα·ααΆααααααΆαα»αα’αααα αα αΆααααααΆααααααΎαααΆα ααα»αααααα·αααΆαα·αααΆααααα ααααΆααα α’αααα αα αΆαααααΌαααΆααααα αααααα ααααααααααΎαααΆααα·αααΆααΉαααααΎααΆα ααΆααΎαα‘αΎαααΆ OS αα·αααΆαα’αααα αα αΆαα₯ααα·ααααα ααα»ααααααΆαααααα’αααα αα αΆααα ααααΎαααΆααα½α α αΎααα ααααααααααΎαααΆαααααΌαααΆαααΆ OS αααα ααααΆααααα·αααΎααΆα’αΆα α αα»ααα·ααααα·ααΊααΆααααααα OS αααααΆαα»αα’αααα αα αΆα ααα»αααααα αααααααΉαααααΌααα·αααΆαα’αααα αα αΆαααααααα α αΎαααααααααααΆααα OOM ααΎααα½ααΆααΈαααΆαααααΆαααα αααα»αααααΆααΈαααΌααα αα·ααααα ααααααΎαααΆαααΎααααΈααΆαααΆαααΊαααααΈααΆαααααααααααααα αα ααααααααααΎαααΆα PostgreSQL ααααΌαααΆααααααα±αααααα αα ααΆααα½αααα α‘αΎααααα»ααααααα ααα»α
Out of Memory: Killed process 12345 (postgres).
ααααα·αααΎααααααααααΆαα’αααα
αα
αΆαααΆα α αΎαααΆαα·αα’αΆα
ααααΌαααΆααααααααα αα»αααΆαααααΌαααΆαα α
out_of_memory
. αα
ααααΆααααΆαααα ααΆααα
ααααααα·α
αα
ααΆααα½αααααααααααΌαααααΎ ααΊαααααααααΎαααΆααα½α α¬α
αααΎαα ααΎ OOM-killer αα½ααααααα
ααααααΎαααΆαααααΆαα α¬α’αΆα
αααα
αΆαααΆα? ααΆααααααααα
αααααα out_of_memory ααααΌαααΆαα α
ααΆαααααΆαααααΆααααα
αΆαααααα·ααααα·ααΆα I/O α¬ααΆααααααΌαααααααα
ααΆααααΆαα ααΌα
αααα ααΆααα OOM ααααΌαααααααΎααΆααααα½ααα·αα·αααααΆαα»ααα·α α αΎαααα’ααααΎαα½ααα αααααα
α
α·αααααΆ ααααΎαααΆαααααΌααααααα
ααα ααααα·αααΎααΆααααα½ααα·αα·αααααΆααα’ααααΆααααααααΆαααΆααα·αααααΆα OOM ααΉααααα
ααααααΎαααΆααααα
ααααΎαααΆαααααΎαααΎα
αα
ααααααα’αααα
αα
αΆαα’αα αα»αααΆαααααΌαααΆαα α
out_of_memory()
. ααΆααΆααα»αααΆα select_bad_process()
αααααα½αααΆαααΆαααΆααααααααΈαα»αααΆα badness()
. ααααΎαααΆα "α’αΆααααααααα»α" ααΉαααααΌααααααααααα
α αα»αααΆα badness()
ααααΎαααΎαααααΎαααΆααα½αααααα
ααΆαα
αααΆααααΆααααΆααα
- ααΊαααααααΌαααΆαα’αααα αα αΆαα’αααααααΆαααααααααΆαααααα½αααΆα
- α’αααααααΌααααααΎαα’αααα αα αΆαα±ααααΆαα αααΎαα
- αα·αα αΆαααΆα ααααα ααααααΎαααΆαααααααα»αααααΎα’αααα αα αΆααα·α αα½α ααα
- ααααΎαααΆαα’αααααααΆα αΆαααΆα αααααΌααααα ααα
- αααα½ααααααααΆααααα»αααααΆαααααααααΎαα±ααΆαααααΆααααα αααααααΆααααααΎαααΆαααΆααααααααα’αααααααΎααααΆαααααα½αααΆααα αααααα ααα
αααααΆααααα
ααααΆααααα½ααα·αα·αααααΆααα’ααααα OOM αα·αα·αααααΎααα·αααα» (oom_score
) OOM α
αΆααααΆαα oom_score
ααααΎαααΆαααΈαα½αα α αΎααααααΆαααααα»ααααααααααααα
ααα½αα’αααα
αα
αΆαα ααααΎαααΆαβαααβααΆαβαααααβααβααΆαβαααβααααβααΆβααααΆααβαααα½αβααΆβαααααααααβαα
βααΉα OOM Killerα ααααΎαααΆααααααααΆααααΆαα½αα’αααααααΎααααΆαα root ααΆααα·αααα»ααΆαααΆα α αΎαααααααΆαα·αααΌαααααΌαααΆααααααα±αααααα
αααααααα
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-Killer α α
αα»αααΆααααα oom_kill_task()
. αα»αααΆαααααααααΌααααααΆαααα
αααα
ααααΎαααΆαα αααα»αααααΈαααααααΆαα
αα
αΆα oom_kill()
α α
αα»αααΆααααααΎααααΈαααααΌααααααΆ SIGKILL αα
ααααΎαααΆαα ααΆααα½αααααΌαααΆαααααααα
ααΆαααααααα ααα»ααΊαααα
Out of Memory: Killed process [pid] [name].
αα·ααΈααααααααα OOM-Killer
αα
ααΎααΈαα»α
α’αααα’αΆα
ααΎα α¬αα·α OOM-Killer (αααααΈααΆααΆαα·αααααΌαααΆαααααΆαααααα)α ααΎααααΈααΎαα¬αα·αααααΎαααΆαααΆαααααα vm.oom-kill
. ααΎααααΈααΎα OOM-Killer αα
αααααααΎαααΆα ααΌαααααΎαααΆαααΆααααααααΆ 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-Killer αα·αααααΉαααα’αΆα
ααΎα αα·ααα·αααα»αααααααα ααΎαααΆααα·ααΆααα½α
ααα αΎαααΆααΈαα»α
α’αΆα
ααααα»ααα»αα’αααα
αα
αΆαααΆαα
αααΎααααααΆααααααΎαααΆαααΆααααα’αΆα
ααααΎααΆαααααα·αα
αΆαααΆα
ααααα
ααααΆ α αΎαα₯αα·ααΆαααααααααΌαααΆααααααααααααααααΆαααΆααααααααΊαααααΈαα»α
α α’αααααα½ααα»αααααΌαα
αααααααα αΆααα vm.overcommit_memory
.
α’αααα’αΆα αααααΆαααααααααΆαααααααααααΆααααΆα
0: ααΊααααααα½αα―ααααααα
α
α·αααααΆααΎααααΌααααααΆαα»αα’αααα
αα
αΆαα
αααΎααααα¬α’ααα αααααΊααΆααααΆαααΎααα
ααΎααααααΆαα
αααΎαααααΈαα»α
α
1: ααΊαααααΉααααααΆαα»αα’αααα
αα
αΆαααααααααΆαα·α
αα
α αααααΊααΆααΆαααααα»ααααααΆα ααΈαααααα’αααα
αα
αΆαα’αΆα
ααΉαα’αα αααααααααααΆααααααΆαα½α ααααΎαααΆαααΉαααααΌαααΆαααΆα
2: ααΊαααβααΉαβαα·αβαα»αβα’αααβα
αα
αΆαβα
αααΎαβααΆαβααΆαβαααααΆααβαααα»αβαααΆαααΆααααααβααα overcommit_ratio
.
ααΆαα½αααΉααααΆαααΆααααααααα α’ααααααααΆααααΆαααααα’αααα
αα
αΆααααααααΌαααΆαα’αα»ααααΆαα±αααααααΆαα»αααΎαα ααααα·αααΎβααααΆαβααααααβαααααΆααβααΆβαα αααβααΆαβα
αα
αΆαβαα·αβααααΌαβααΆαβαααα
ααβαα α αΎαβααΆαβαααβαα»αβααΉαβααααΌαβααα·αααα αααααΊααΆαααααΎααα»ααααα·ααΆααααα»ααααααααΌαααΆαααααΆααααααΆαα PostgreSQL α OOM-Killer ααααΌαααΆααααααΆαααααααΆαα»αα½ααααααααα - αααααααΆαααααΆααααααΌα αααααααΌαααΆαααααααααααααα’ααα cat /proc/sys/vm/swappiness
. αααααααΆαααααααααΆααααΊαααααΈααααααααααααααααααα αααααααΆααααααααα ααΆααααααΆαα·α
ααΆαααα OOM ααΉααααα
ααααααΎαααΆα ααα»αααααααααΆαααααα·ααααα·ααΆα I/O ααΆααΆααααααααΆααα’αα·αααααΆαααΎααΌαααααΆααα·ααααααα α αΎααααα»ααααα·α - αααααααΆααααααΆα ααααααΆαααααΆαα’αααααΆαααα OOM-Killer ααΆααααααααα ααα»ααααααααΎαααΆαααααΌαααααΆααα·αααααααααααααααΆααααα αααααααααΆαααΎαααΊ 60 ααα»ααααααααα·αααΎααΌαααααΆααα·ααααααααΆααααΌαααααΉαα’αααα
αα
αΆα ααΆααΆααΆααααααΎααααα»αααΆααααααααααααα
1 α
αααααα
αα»αα’αα "ααΆααα" αα
αααα»α OOM-Killer αααααα’αααα αααα»αααααΈααα ααΆαααααΉαααΆα’αααααααααααααααααααααααα’αααα ααΆ "αααααΆαα" ααααΎαααΆαααα’αΆααααααααα»α αα·ααααααΆαα»αααααααααααΈααΆαααΆααα ααΎααααΈαααααΆαααΆαααααΎ OOM-Killer ααΎααααΈαααα
αα PostgreSQL ααΌαααααααα
vm.overcommit_memory
ααααα 2. ααααα·αααΆααΆααΆ OOM-Killer ααΉααα·αα
αΆαααΆα
αααααΎα’αααααΆααααααααα ααα»ααααααΆααΉαααΆαααααααααααααΆαααααΆααααααα±ααααααΎαααΆα PostgreSQL αααα
ααα
ααααα: www.habr.com