最近开发了一个在线教育系统,使用的是最简单的单tomcat服务器实现的javaweb系统。原本认为没有多少用户,这个简单的系统也够用了,结果碰到了用户高峰,导致系统卡死。当时并发的tcp连接数居然到了8000+,完全没想到会这么多。为此我开始分析系统到底哪里出了问题。
首先介绍下原来的生产环境:
windows server2008
jdk1.8
mysql 5.7
tomcat9.12
spring-4.3.18.RELEASE
接下里开始查找问题:
-
1 首先评估下系统的用户量级,通过查看tcp连接数:
netstat -an |find /c ":8080"
这行指令表示统计8080端口的tcp连接数,大概的推测用户数目。当时系统崩溃的时候有8000多个连接,而且处于established状态的占比并不高。这就是说很多连接建立后都堵住或者等待关闭,推测两种情况,一种是网络带宽不够,一种是服务器处理能力不够。
- 2 由于服务架构简单,web端----->