postgresql 发生 oom 的分析之一

本文详细描述了在CentOS 7.4上,PostgreSQL 10.4运行过程中遇到的OOM(Out of Memory)问题。通过观察进程内存占用和日志分析,发现由于大事务导致的内存不足,最终由OS的OOM Killer终止了进程。通过调整`vm.overcommit_ratio`参数来限制内存分配,并提出使用cgroups进行更精细的内存控制作为后续解决方案。
摘要由CSDN通过智能技术生成

os:centos 7.4
postgresql:10.4

第一个窗口
创建表,向表中插入大量数据

$ psql
psql (10.4)
Type "help" for help.

postgres=# create table test01(id integer, val char(1000)); 
CREATE TABLE
postgres=# insert into test01 values(generate_series(1,5000000),repeat( chr(int4(random()*26)+65),1000));

第二个窗口,观察os层面postgres用户的进程内存占用

# watch "ps -aux |head -1;ps -aux|grep -i postgres;free -m"

Every 2.0s: ps -aux |grep -i postgres                                                                                        Mon Aug 20 23:20:43 2018

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1570  0.0  0.0 220660    96 pts/0    S    22:53   0:00 su - postgres
postgres  1571  0.0  0.0 116720    68 pts/0    S    22:53   0:00 -bash
postgres  1629  0.0  1.3 729832 27040 pts/0    S    22:53   0:00 /usr/pgsql-10/bin/postgres -D /var/lib/pgsql/10/data
postgres  1630  0.0  0.0 170624   212 ?        Ss   22:53   0:00 postgres: peiyb: logger process
postgres  1632  0.0 18.2 730124 372980 ?       Ss   22:53   0:00 postgres: peiyb: checkpointer process
postgres  1633  0.0  0.1 729968  2604 ?        Ss   22:53   0:00 postgres: peiyb: writer process
postgres  1634  0.0  0.8 729832 16592 ?        Ds   22:53   0:00 postgres: peiyb: wal writer process
postgres  1635  0.0  0.0 730396   540 ?        Ss   22:53   0:00 postgres: peiyb: autovacuum launcher process
postgres  1636  0.0  0.0 172884   272 ?        Ss   22:53   0:00 postgres: peiyb: stats collector process
postgres  1637  0.0  0.0 730252   240 ?        Ss   22:53   0:00 postgres: peiyb: bgworker: logical replication launcher
postgres  1649  0.0  0.0 156728   136 pts/0    S+   22:54   0:00 ./bin/psql
postgres  1650  0.4 90.5 2051040 1854772 ?     Ss   22:54   0:07 postgres: peiyb: postgres postgres [local] INSERT
root      2178  0.0  0.0 126428   480 pts/1    S+   23:04   0:00
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值