2016-12-02 61 views
0

我运行RDS postgresql实例。曾经有一段时间,实例遇到硬盘写入活动的高峰,查询性能似乎受到影响。秒杀持续5-10分钟,然后自行消失。是什么导致写入活动

该数据库支持大量的工作负载,包括Web查询和批量数据加载。我想将书写活动中的峰值与特定类型的工作负荷相关联,例如,网络流量的增加,或比正常数据集更大的负载,但迄今尚未成功。

我想知道postgresql服务器是否有任何可用于此目的的仪器?例如,是否有办法将磁盘写入与特定查询/事务相关联?如果是这样,我可能能够汇总这些信息,以查看哪种类型的事务导致大部分磁盘写入。

我知道这很含糊。任何建议,将不胜感激。

回答

0

取决于您的环境 - 比如我必须使用的主要是终端命令行的东西,所以我必须要登录顶部使用sudo iotop -b -n 1|head -15 I/O进程或顶“Postgres的过程sudo iotop -b -n 1 -u postgres的时间点快照 - 在这里我会找到的TID顶级I/O进程。

使用psql -U ... -d ... -t -c "select pid, query from pg_stat_activity where state='active' "我可以将TID匹配到postgresql进程列表中的pid。

但这些尖峰也可能是由“统计收集器”或autovacuum进程引起的,这只能在操作系统级别上看到。