暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

磐维故障处理:connection is not available, request timed out

原创 言笑 2024-10-18
217

适用范围

opengauss系列国产数据库

问题概述

业务应用侧日志频繁报错:connection is not available, request timed out

问题原因

通过持续ping当前集群的vip,发现vip频繁出现断联:
image.png

查询当前节点负载:

  • cpu (按1可查看每个cpu的负载,ctrl+M可按内存排序)
    d032a87ea3b33096ccff54d01f45593.png
  • 内存 (主要查看free和available)
    image.png
  • IO (主要关注%util)
    image.png
  • 网络 (主要关注%ifutil)
    image.png
    通过上面的信息可以看出当前节点cpu负载过高,需深入数据库排查sql问题。

解决过程

  1. 最大连接数、当前使用连接数查询
show max_connections; select count(*) from (select pg_stat_get_backend_idset()); select count(*) from pg_stat_activity;

image.png

  1. 查询每个客户端的连接数,从而分析那个客户端比较繁忙
select client_addr,count(*) from pg_stat_activity where client_addr IS NOT NULL group by 1 order by 2 desc;

image.png

  1. 查询当前执行次数最多的sql(忽略下图select 1和commit)
select client_addr,query,count(*) from pg_stat_activity where client_addr IS NOT NULL group by 1,2 order by 3 desc;

image.png

  1. 查询当前的长事务
SELECT query,current_timestamp - query_start AS runtime FROM pg_stat_activity where state != 'idle' ORDER BY 2 desc;

1964326f43e7ea5c0e4080c386feaa5.png

  1. 查看锁阻塞情况
with tl as (select a.pid,usename,granted,locktag,query_start,query,mode,a.state from pg_locks l,pg_stat_activity a where l.pid=a.pid and locktag in(select locktag from pg_locks where granted='f')) select ts.pid locker_pid,ts.usename locker_user,ts.query_start locker_query_start,ts.granted locker_granted,ts.query locker_query,ts.mode locker_mode,tt.pid locked_pid,tt.query locked_query,tt.query_start locked_query_start,tt.granted locked_granted,tt.usename locked_user,tt.mode locked_mode,extract(epoch from now() - tt.query_start) as locked_times from (select * from tl where granted='t') as ts,(select * from tl where granted='f') tt where ts.locktag=tt.locktag order by 1;
  1. 查看表结构(order_retry_sum)
\d order_retry_sum

image.png

给表order_retry_sum的字段sub_id添加索引后,负载立刻降低,vip恢复正常,重启业务后不再复现该问题。

结论

当服务器cpu或者内存负载过高时会导致vip绑定失败,业务(偶发性)无法正常连接数据库vip,需结合数据库当前事务执行情况过滤最占用资源的sql,分析执行计划,提升sql性能。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论