程序员

Operation timeout SequelizeConn

2020-07-28  本文已影响0人  last_edc

数据库操作超时常见原因:

注意:以下SQL适用postgres数据库

查看数据库最大连接数

SHOW max_connections;

查看活跃连接数的SQL:

-- 方式一:
SELECT
    count(*)
FROM
    pg_stat_activity
WHERE
    datname = '数据库名称';

-- 方式二:
SELECT
    sum(numbackends)
FROM
    pg_stat_database
WHERE
    datname = '数据库名称';

如果发现活跃连接数很小,继续查看活跃连接数里边有没有锁表的

SELECT * FROM pg_stat_activity WHERE datname = '数据库名字';
image.png

发现有很多 state 为 idle in transaction (aborted) 记录,这种情况一般是开启事务后,并没有提交或回滚操作。

杀死无效的连接(包括锁表的连接)
select pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='tiku' and "state"='idle in transaction (aborted)';
查看锁表的情况
select relation::regclass, * from pg_locks where not granted;
上一篇 下一篇

猜你喜欢

热点阅读