Postgres 9.0locking,100%的CPU

我们有一个问题,我们的Postgres 9.0服务器偶尔会locking并杀死我们的Web应用程序。 重新启动Postgres修复了这个问题。

这是我能够观察到的:

  • 首先,一个CPU的使用跳到100%几分钟
    • 在此期间磁盘操作将降至〜0
    • 数据库操作下降到0(块和元组每秒)
    • 日志显示在这段时间内:
      • 警告:工人花了太长时间才能启动; 取消
      • 警告:工人花了太长时间才能启动; 取消
      • 日志中没有查询(仅logging超过200毫秒)
    • 在之前或之前没有loggingexception长时间运行的查询
  • 然后第二个CPU跳到100%
    • postgres进程的数量从平常的8-10跳到〜20
    • 在Postgres块每秒秒杀(大约两倍正常)
    • 日志显示
      • 日志:无法接受SSL连接:检测到EOF
      • 查询正在运行,但速度很慢
  • 重新启动postgres将一切恢复正常

build立:

服务器: Amazon EC2 Large
Ubuntu 10.04.2 LTS
Postgres 9.0.3
专用数据库服务器

有谁知道是什么原因造成的? 或者还有什么我应该检查的build议吗?

确保你没有用完内存并导致磁盘抖动问题。

如果你有足够的开放内存,那么直接进入PostgreSQL并寻找一个有问题的查询。

SELECT * FROM pg_stat_activity;