获取异常I / O使用Postgresql和JBD2

时间:2013-09-07 07:03:38

标签: postgresql amazon-web-services io amazon-ec2 ext4

我目前正在使用EBS卷处理AWS上的EC2实例,并且我收到了警报,因为即使服务器处于空闲状态,我也有持续的I / O消耗。

iotop命令显示:

TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
160 be/3 root          0.00 B     27.58 M  0.00 %  0.06 % [jbd2/xvda1-8]
10016 be/4 root          0.00 B      0.00 B  0.00 %  0.00 % [flush-202:1]
10014 be/4 postgres      0.00 B    947.35 M  0.00 %  0.00 % postgres: stats collector     process
 534 be/4 root          0.00 B    136.00 K  0.00 %  0.00 % dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -1 eth0

postgresql运行postgis扩展,数据库几乎是空的,所以我真的不知道为什么它不断收集统计数据,有时候还有一个postgres写入过程。 另一件事是Jbd2(ext4 journal)进程,它也经常使用I / O

1 个答案:

答案 0 :(得分:1)

最佳答案是,如果您可以使用另一个卷将日志移动到另一个卷上。在这种情况下,EXT4的吞吐量要好得多。

可能发生的情况是,您在一定程度的一般负载下拥有一个小型数据库,并且autovacuum正在后台运行。 Autovacuum将定期分析使用过的表并将数据写入统计表。

如果负载较低,您可以调整autovacuum设置以避免此问题。