0

timescaledb在 16.04 Linux 机器上为 PostgreSQL (v9.6) 安装了扩展 (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 &')

Fun013301postgres 数据库中不存在该函数。我无法弄清楚什么是./x3606027128命令!?

4

1 回答 1

2

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

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

此命令显示连接运行以来的时间。这个时间不应超过一个小时。因此,终止长时间运行或在任何时候卡住的连接对我有用。我关注了这篇文章来监控和解决我的问题。Post包含许多有用的命令来监视这种情况。

于 2019-08-27T05:53:24.007 回答