由未知的postgres查询引起的CPU 100%使用情况

时间:2017-10-07 06:22:01

标签: postgresql timescaledb

我在16.04 Linux机器上为PostgreSQL(v9.6)安装了timescaledb扩展名(v.5.0),并观察到Postgres进程占用了100%的CPU:

这是top命令的结果:

PID   USER      PR  NI    VIRT    RES    SHR S %CPU %MEM   TIME+   COMMAND
19885 postgres  20   0  192684   3916   1420 S 98.3  0.1   5689:04 x3606027128                                     

我运行查询SELECT pid, datname, usename, query FROM pg_stat_activity并找到两个奇怪的查询

pid   datname   username  query
19882 postgres  postgres  select Fun013301 ('./x3606027128 &')
19901 postgres  postgres  select Fun013301 ('./ps3597605779 &')
postgres数据库中不存在

函数Fun013301。我无法弄清楚./x3606027128命令是什么!?

1 个答案:

答案 0 :(得分:1)

我有一个类似的问题。这是由于-一些事务被卡住并长时间运行。因此,CPU利用率一直都是100%。以下命令有助于找出运行时间最长的连接:

SELECT max(now() - xact_start) FROM pg_stat_activity
                           WHERE state IN ('idle in transaction', 'active');

此命令显示自连接运行以来的时间。此时间不应超过一个小时。因此,终止长时间运行或一直停滞的连接对我来说很有效。我遵循this post来监视和解决我的问题。 Post包含许多有用的命令来监视这种情况。