开发者
资源
S920X00服务器CRM集群OS文件句柄升高问题案例分析

S920X00服务器CRM集群OS文件句柄升高问题案例分析

案例分享鲲鹏硬件

发表于 2026/06/30

0

1 问题现象描述

硬件配置

  • 型号:S920X00
  • 配置:BCLinux 21.10 + CRM业软应用

问题现象

客户GTS业软CRM集群orderbatch、reportappbatch、prodcenter、invoice等应用进程出现文件句柄过高,达到OS配置上限600w,导致OS无法登录、监测平台出现告警。

告警信息:VFS: file-max limit 6815744 reached


2 关键过程与根因分析

关键过程

Step 1:SAR日志分析

分析异常服务器的sar日志发现2月5日14:50主机的进程数呈现大量增长趋势,伴随文件句柄数增加,增长时间对应重启zookeeper时间。

Step 2:故障关联分析

客户反馈出现异常前集群服务器应用、zookeeper均处于异常状态。初步分析为zookeeper异常导致触发OS文件句柄达到上限。

Step 3:实验室复现

实验室部署测试环境,重启ZK节点主机,使ZK处于异常状态,出现文件句柄数持续增长现象,句柄从2w持续增长到8+w。

Step 4:句柄类型分析

应用进程增长的句柄类型主要是socket。

Step 5:内核监测

OS侧通过strace监测内核创建socket的函数sys_socket,发现存在大量创建Socket的动作,每分钟创建350个socket,进程socket句柄数每分钟增长175个。

Step 6:进程定位

统计strace创建socket的进程,均为应用进程。

Step 7:ZK日志分析

分析ZK应用日志,持续打印ZK连接失败、DNS域名解析异常。

Step 8:问题验证

关闭ZK应用后句柄数下降。

Step 9:根因确认

排查发现zookeeper开源软件存在已知问题,当ZK服务端异常时,客户端无法连接到ZK服务端导致持续创建socket并且无法正常释放,最终出现句柄持续增长。

Step 10:补丁验证

实验室验证修复补丁,合入修复补丁的应用进程句柄数量不再增长,没有合入修复补丁的应用进程句柄数仍然持续增长。

根因分析

zookeeper开源软件存在已知问题,当ZK服务端异常时,客户端无法连接到ZK服务端导致持续创建socket并且无法正常释放,最终出现句柄持续增长。


3 结论、解决方案及效果

结论

zookeeper开源软件存在已知问题,当ZK服务端异常时会导致客户端socket句柄持续增长,最终耗尽系统资源。

解决方案

zookeeper合入修复补丁,补丁链接为:https://github.com/apache/zookeeper/pull/2047

效果

合入修复补丁后,即使ZK服务端异常,客户端也不会出现socket句柄持续增长的问题。


4 经验总结与预防措施

经验总结

  1. 文件句柄为OS侧用户态申请的一种系统资源
  2. 如果出现文件句柄异常升高,建议优先联系上层应用侧进行分析
  3. zookeeper开源软件已知问题需要及时合入修复补丁

预防措施

  1. 监测zookeeper服务状态,及时处理异常
  2. 关注zookeeper开源社区的已知问题修复

本页内容