(本文档仅供参考)
问题现象
项目使用过程中会遇到多次mysql假死和tomcat假死的问题(假死指的是进程存在,但是无法提供服务)。多次mysql假死和tomcat假死的问题(假死指的是进程存在,但是系统无法正常使用)。
排查方式
1、首先运行linux基础命令,查看linux系统负载情况,重点关注load average、内存和进程资源的消耗统计
...
如果要看详细查看CLOSE_WAIT 进程,可以通过netstat -an|grep 端口号 进行分析,如smartbi的访问端口号是433,则 netstat -an|grep 443
解决方案
1、修改文件句柄数【需要通知用户运维人员处理】
参考wiki:https://history.wiki.smartbi.com.cn/pages/viewpage.action?pageId=35750019参考wiki:解决Too many open files异常
2、修改Linux系统的连接超时参数【需要通知用户运维人员处理】
vim /etc/sysctl.conf 在文件末端加上以下内容:
...
3、针对tomcat应用,修改Tomcat server.xml文件,增加连接超时时间(无论是http协议还是https协议都需要添加socket超时设置) connectionTimeout="30000"
其他信息补充
1、验证网络连接情况命令: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
...
注:有的时候我们不止要设置句柄数是65535 还需要设置其他的参数,在设置之前先执行ulimit -a 查看当下系统的限制,然后再决定是否进行调整其他参数到环境变量中生效。
ulimit -u 10000
ulimit -n 65535
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
3、其他内核参数调整[需要通知用户运维人员处理]
...