smartbi环境经常出现Tomcat无法访问的问题,必须重启Tomcat才能恢复。
首先确认CPU和内存资源使用是否正常的,即可以通过jstack、jmap、jstat 命令分别查看tomcat的线程、堆栈和gc分析,并且Tomcat进程也存在,如果确认都是正常的,就是无法访问。
接下来可以通过netstat -an|grep 端口号 进行分析,如smartbi的访问端口号是433,则 netstat -an|grep 443
对于 netstat -an|grep 443返回的结果进行分析,如果发现有大量的网络连接且处于CLOSE_WAIT 状态,很大可能是因为tomcat默认使用的是长连接的原因。
即tomcat的https中默认使用的是长连接,每一个连接的生命周期是2小时,由于某种场景下Smartbi在获取数据时出现异常,导致socket没有主动关闭。
解决方案
1)可尝试修改tomcat中server.xml中socket连接超时的设置(无论是http协议还是https协议都需要添加socket超时设置) connectionTimeout="30000"
2)修改文件句柄数:https://history.wiki.smartbi.com.cn/pages/viewpage.action?pageId=35750019
验证网络连接情况命令: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
下图是连接状态描述供参考: