1. 问题描述
版本:GaussDB 6.5.1.9
客户跑批业务时,CN所在服务器经常出现TCP端口使用阈值告警,总共配置端口数量为32000+,会使用26000+,占比82%。
2. 数据收集:
- 查看系统随机端口资源:cat /proc/sys/net/ipv4/ip_local_port_range,操作系统默认在(32768, 61000);
- 查询集群规模,统计集群共有多少台服务器,每台服务器部署多少主DN:cm_ctl query -Cv;
- 统计Gauss进程信息:ps ux | grep gauss
- 在任意一台TCP端口使用率过高的机器上连接CN进入数据库,查询并发数量:select count(*) from pg_stat_activity;
- 查询当前CN与所有节点的连接数:select count(*) from pg_pooler_status;
- 统计正常连接状态下的端口使用数量:netstat -npt | grep gauss | awk ‘{print $4}’ | sort -n | uniq -c | wc -l;
- 收集所有Gauss进程的TCP连接信息:netstat -anopt | grep gauss > result.log
3. 问题分析 :
- 根据集群规模以及并发数初步计算CN与DN之间的连接数量:436 * 270 = 117720;

- 由于每一并发不一定需要与所有DN相连,实际CN、DN连接数量通过pg_pooler_status视图查询:62388;

- 打开收集的Gauss进程的TCP连接信息,可根据对应的进程号,统计实际各个节点总的连接数量,例如:CN进程号为76649,搜索进程号,可看到实际有66371条连接;

- 同理,DN与DN之间也存在着连接,数量为:4 * DN数量,也可根据DN进程统计连接数量;
- 可以看出,Gauss连接数量远远大于可用端口数量,由于端口存在复用,实际使用数量为2.6中收集的:27922;
4. 规避措施 :
- GaussDB所有进程均支持端口复用,端口使用率高也不会出现问题,但是如果在同台服务器上有第三方进程不支持端口复用时,随机端口耗尽后可能会出现报错。可根据情况评估后,选择是否屏蔽此项告警;
- 降低并发数量,减少连接;
5. 几个减少连接数量的方法(修改前要评估) :
- 开启CN多流,GUC参数为comm_cn_dn_logic_conn;
- 清理空闲连接,clean connection to all;
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/316552.html