
ืืืขื ืืื Linux ืืขืจ ืืึทืืึทืืืืก ืกืขืจืืืขืจ ืขื ืืืื ืืื ืืืืืขืจืืื, ืืื ืื ืกืืื ืืึทืจืฃ ืืึทืฉืืืื ืืืขืจื. ืขืก ืงืขื ืขื ืืืื ืขืืืขืืข ืกืืืืช. ืืืฉื, SIGSEGV - ืืืจืืคืึทื ืจืขืื ืฆื ืึท ืืฉืืง ืืื ืื ืืึทืงืขื ื ืกืขืจืืืขืจ. ืืืขืจ ืืึธืก ืืื ืืขืืื. ืจืืึฟ ืึธืคื ืืืจ ื ืึธืจ ืืืืคื ืืืืก ืคืื ืืืกืง ืคึผืืึทืฅ ืึธืืขืจ ืืึผืจืื. ืืืื ืืืจ ืืืืคื ืืืืก ืคืื ืืืกืง ืคึผืืึทืฅ, ืขืก ืืื ืืืืื ืืืื ืืืขื ืืืืก - ืคืจืื ืคึผืืึทืฅ ืืื ืจืืกืืึทืจื ืื ืืึทืืึทืืืืก.
ืืืืก-ืคืื-ืืืงืึธืจื ืงืืืืขืจ
ืืืขื ืื ืกืขืจืืืืจืขืจ ืืืขืจ ืืขืจ ืคึผืจืึธืฆืขืก ืืืืคื ืืืืก ืคืื ืืึผืจืื, Linux ืืขืจ "ืืืืก-ืคืื-ืืืจืื ืงืืืขืจ" ืึธืคืคืขืจื ืฆืืืื ืืืืืื ืืขื: ืงืจืึทืื ืืึธืก ืืึทื ืฆืข ืกืืกืืขื ืึธืืขืจ ืขื ืืืงื ืืขื ืคึผืจืึธืฆืขืก (ืึทืคึผืืืงืึทืฆืืข) ืืืึธืก ืขืกื ืืืืฃ ืืึผืจืื. ืขืก ืืื ืืขืกืขืจ, ืคึฟืึทืจืฉืืืื ืืื, ืฆื ืขื ืืืงื ืืขื ืคึผืจืึธืฆืขืก ืืื ืจืึทืืขืืืขื ืืขื ืึธืคึผืขืจืืจื ืกืืกืืขื ืคึฟืื ืงืจืึทืื. ืืื ืงืืจืฆื, ืืขืจ "ืืืืก-ืคืื-ืืืจืื ืงืืืขืจ" ืืื ืึท ืคึผืจืึธืฆืขืก ืืืึธืก ืขื ืืืงื ืึทื ืึทืคึผืืืงืึทืฆืืข ืฆื ืจืึทืืขืืืขื ืืขื ืงืขืจื ืขื ืคึฟืื ืงืจืึทืื. ืขืก ืงืจืื ืื ืึทืคึผืืืงืึทืฆืืข ืฆื ืืึทืืื ืืขื ืึธืคึผืขืจืืจื ืกืืกืืขื ืืื ืืึทื ื. ืืึธืืืจ ืขืจืฉื ืืืกืงืืืืจื ืืื OOM ืึทืจืืขื ืืื ืืื ืขืก ืฆื ืงืึธื ืืจืึธืืืจื, ืืื ืืขืจื ืึธื ืงืืงื ืืื ืืขืจ OOM ืงืืืขืจ ืืึทืฉืืืกื ืืืขืืืข ืึทืคึผืืืงืึทืฆืืขืก ืฆื ืขื ืืืงื.
ืืืื ืข ืคืื โโืื ืืืืคึผื ืืืืคืืึทืื Linux โ ืฆืืืืืื ืืึผืจืื ืฆื ืคึผืจืึธืฆืขืกื ืืืขื ืืื ืืขืื ืขืก. ืืืคึผืืฉืขืจืืืืึทื, ืืขื ืึท ืคึผืจืึธืฆืขืก ืึธืืขืจ ืึทืคึผืืืงืึทืฆืืข ืืึผืจืื ืคึฟืื ืืขืจ ืึธืคึผืขืจืืจื ืกืืกืืขื ืึธืืขืจ ื ืืฆื ืขืก ื ืืฉื ืืื ืืึทื ืฆื. ืืืื ืื ืึธืคึผืขืจืืจื ืกืืกืืขื ืึทืืึธืงืืจื ืืึผืจืื ืฆื ืึทืืขืืขื ืืืึธืก ืืขื ืขืก ืึธืืขืจ ืคึผืืึทื ืืจื ื ืืฉื ืฆื ื ืืฆื ืขืก, ืืืขื ืื ืกืืกืืขื ืฉื ืขื ืืืืกืืึธืคึฟื ืคึฟืื ืืึผืจืื, ืืื ืื ืกืืกืืขื ืืืขื ืงืจืึทืื. ืึผืื ืืึธืก ืฆื ืคึฟืึทืจืืืึทืื, ืจืขืืขืจืืืืจื ืื ืึธืคึผืขืจืืจื ืกืืกืืขื ืืึผืจืื ืคึฟืึทืจ ืึท ืคึผืจืึธืฆืขืก ืึธืืขืจ ืึทืืึธืงืืจื ืขืก ื ืืฉื ืืึทืงืข. ืืึผืจืื ืืืขืจื ืึทืืึธืงืืจื ื ืึธืจ ืืืขื ืึท ืคึผืจืึธืฆืขืก ืคึผืืึทื ืืจื ืขืก ืืึทืงืข ืฆื ื ืืฆื. ืืึทื ืืฉืืึธื ืืึธื ืื ืึธืคึผืขืจืืจื ืกืืกืืขื ื ืืฉื ืงืืื ืคึฟืจืฒึทืข ืืึผืจืื, ืึธืืขืจ ืื ืึทืืึธืงืืจื ืืึผืจืื ืฆื ืึท ืคึผืจืึธืฆืขืก, ืืื ืืืขื ืืขืจ ืคึผืจืึธืฆืขืก ืืึทืจืฃ ืขืก, ืึทืืึธืงืืจื ืื ืึธืคึผืขืจืืจื ืกืืกืืขื ืขืก ืืืื ืื ืงืขื. ืืขืจ ืืกืจืื ืืื ืึทื ืืึทื ืืฉืืึธื ืจืขืืขืจืืืืจื ืื ืึธืคึผืขืจืืจื ืกืืกืืขื ืืึผืจืื, ืึธืืขืจ ืืืขื ื ืืืืืง, ืืื ื ืืฉืืึธ ืงืืื ืคึฟืจืฒึทืข ืืึผืจืื, ืืืึธืก ืคึฟืึทืจืืืจืืึทืื ืึท ืกืืกืืขื ืงืจืึทื. OOM ืฉืคึผืืื ืึท ืฉืืืกื ืจืึธืืข ืืื ืืขื ืกืฆืขื ืึทืจ, ืขื ืืืงื ืืืง ืคึผืจืึธืฆืขืกื ืึผืื ืฆื ืคึฟืึทืจืืืึทืื ืืขื ืงืขืจื ืขื ืคึฟืื ืคึผืึทื ืืงืืจื. ืืืขื ืืขืจ PostgreSQL ืคึผืจืึธืฆืขืก ืืืขืจื ืืขืฆืืืืื ืืขื ืขื ืืืงื, ืืขืจืฉืฒึทื ื ืื ืคึฟืึธืืื ืืืงืข ืืขืกืขืืืฉ ืืื ืืึธื:
Out of Memory: Killed process 12345 (postgres).ืืืื ืื ืกืืกืืขื ืืื ื ืืืขืจืืง ืืืืฃ ืืึผืจืื ืืื ืขืก ืงืขื ื ืืฉื ืืืื ืคืจืื, ืื ืคึฟืื ืงืฆืืข ืืื ืืขืจืืคื out_of_memory. ืืื ืืขื ืืื ืข, ืื ืืื ืืืืื ืืืื ืืึทื ืฆื ืืึธื - ืคืึทืจืขื ืืืงื ืืืื ืึธืืขืจ ืืขืจ ืคึผืจืึทืกืขืกืึทื. ืืึธื OOM-killer ืคืึทืจืขื ืืืงื ืืขื ืคึผืจืึธืฆืขืก ืืืืื ืึธืืขืจ ืงืขื ืขืก ืืืึทืจืื? ืืึธื, ืืืขื ืึธืื_ืคืื_ืืขืืึธืจื ืืื ืืขืจืืคื, ืืึธืก ืืื ืจืขืื ืฆื ืืืืจืื ืคึฟืึทืจ ืึทื I/O ืึธืคึผืขืจืึทืฆืืข ืึธืืขืจ ืคึผืืืืืฉืื ื ืฆื ืืืกืง. ืืขืจืืืขืจ, ืืขืจ OOM ืงืืืืขืจ ืืืื ืขืจืฉืืขืจ ืืืจืืคืืจื ืืฉืขืงืก ืืื, ืืืืืจื ืืืืฃ ืืื, ืืึทืฉืืืกื ืึทื ืืขืจ ืคึผืจืึธืฆืขืก ืืึทืจืฃ ืืืื ืืขืจืืึทื ืืืืื. ืืืื ืึทืืข ืื ืืฉืขืงืก ืืื ืื ืืขื ืขื positive, OOM ืืืขื ืคืึทืจืขื ืืืงื ืืขื ืคึผืจืึธืฆืขืก.
ืคึผืจืึธืฆืขืก ืกืขืืขืงืฆืืข
ืืืขื ืืึผืจืื ืืืืคื ืืืืก, ืื ืคึฟืื ืงืฆืืข ืืื ืืขืจืืคื out_of_memory(). ืขืก ืืื ืึท ืคึฟืื ืงืฆืืข select_bad_process(), ืืืึธืก ืืืงืืื ืึทื ืืคืฉืืฆืื ื ืคืื ืื ืคึฟืื ืงืฆืืข badness(). ืืขืจ "ืขืจืืกื" ืคึผืจืึธืฆืขืก ืืืขื ืืืื ืืึทืจืืขืืขื. ืคึฟืื ืงืฆืืข badness() ืกืึทืืขืงืฅ ืึท ืคึผืจืึธืฆืขืก ืืืื ืืืืขืจ ืึผืืืื.
- ืืขืจ ืงืขืจื ืืึทืจืฃ ืขืืืขืืข ืืื ืืืื ืืึผืจืื ืคึฟืึทืจ ืืื.
- ืืืจ ืืึทืจืคึฟื ืฆื ืืึทืคืจืืึทืขื ืึท ืคึผืืึทืฅ ืคืื ืืึผืจืื.
- ืขืก ืืื ื ืื ืืึทืจืคึฟื ืฆื ืคืึทืจืขื ืืืงื ืคึผืจืึทืกืขืกืึทื ืืืึธืก ื ืืฆื ืงืืืื ืืึผืจืื.
- ืืื ืืืื ืคึผืจืึทืกืขืกืึทื ืืึทืจืคึฟื ืฆื ืืืื ืืขืขื ืืืงื.
- ืงืึธืืคึผืืขืงืก ืึทืืืขืจืืืึทืื ืืืึธืก ืคืึทืจืืจืขืกืขืจื ืื ืืืืขืจ ืคืื ืงืึทืืคึผืืืฉืึทื ืคึฟืึทืจ ืื ืคึผืจืึทืกืขืกืึทื ืืืึธืก ืืขืจ ืืึทื ืืฆืขืจ ืืื ืืืื ืฆื ืคืึทืจืขื ืืืงื.
ื ืึธื ืคืึทืจืขื ืืืงื ืึทืืข ืื ืืฉืขืงืก, OOM ืืืืึทืืึทื ื ืื ืืขืืฉืื (oom_score). OOM ืึทืคึผืืื ืืืึทื ืฅ oom_score ืืขืืขืจ ืคึผืจืึธืฆืขืก, ืืื ืืขืืึธืื ืืึทืืืึทืคึผืืืื ืืขื ืืืขืจื ืืืจื ืื ืกืืืข ืคืื โโืืึผืจืื. ืคึผืจืึทืกืขืกืึทื ืืื ืืจืขืกืขืจืข ืืืึทืืืขืก ืืขื ืขื ืืขืจ ืืกืชึผืื ืฆื ืคืึทืื ืงืึธืจืื ืฆื ืื OOM Killer. ืคึผืจืึทืกืขืกืึทื ืคึฟืึทืจืืื ืื ืืื ืืขืจ ืืืึธืจืฆื ืืึทื ืืฆืขืจ ืืึธืื ืึท ื ืืืขืจืืงืขืจ ืืขืืฉืื ืืื ืืขื ืขื ืืืืื ืืงืขืจ ืืกืชึผืื ืฆื ืืืื ืืขืฆืืืื ืืขื ืฆื ืคืึทืจืขื ืืืงื.
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
ะ Linux ืืืจ ืงืขื ื ืึทืงืืืืืืจื ืึธืืขืจ ืืืึทืงืืืืืืจื 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_oomOOM-Killer ืงืขื ืืขื ืื ืฆืื ืื ืืื ืืืืกืืขืฉื, ืืื ืืืจ ืืืื ืฉืืื ืืขืจืืื ื. Linux ืงืขื ืจืขืืขืจืืืืจื ืืขืจ ืืึผืจืื ืคึฟืึทืจ ืคึผืจืึธืฆืขืกื ืืื ืืื ืคึฟืึทืจืึทื, ืึธืืขืจ ื ืืฉื ืืึทืงืข ืฆืืืืืื ืขืก, ืืื ืืึธืก ื ืึทืืืจ ืืืขืจื ืงืึธื ืืจืึธืืืจื ืืืจื ืึท ืงืขืจื ืขื ืคึผืึทืจืึทืืขืืขืจ Linuxืื ืืืขืจืืึทืืืข ืืื ืคืึทืจืึทื ืืืืึธืจืืืขื ืคึฟืึทืจ ืืขื. vm.overcommit_memory.
ืืืจ ืงืขื ืขื ืกืคึผืขืฆืืคืืฆืืจื ืื ืคืืืืขื ืืข ืืืึทืืืขืก ืคึฟืึทืจ ืขืก:
0: ืืขืจ ืงืขืจื ืขื ืืืืื ืืึทืฉืืืกื ืฆื ืฆื ืจืขืืขืจืืืืจื ืฆื ืคืื ืืึผืจืื. ืืึธืก ืืื ืืขืจ ืคืขืืืงืืื ืืืขืจื ืืื ืจืืึฟ ืืืขืจืกืืขืก. Linux.
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
