所以我有这台机器运行连接到它的MySQL数据库的XMPP服务器。 当我开始加载testing时,一切都很顺利,直到大约500秒后我注意到:
Caused by: com.mysql.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request
开始出现。 像他们一样,命令:
mysql> show processlist;
揭示了MySQL如何接收下一个查询,并回答它们(状态=发送数据是在磁带上被捕获的),然后只是闲置在state = sleep中20s,40s甚至更多。 在这一刻PreparedStatement.execute()方法调用不会返回。 top命令显示不超过800%的CPU使用率(16个核心 – 其中一半在峰值使用)。
我在XMPP服务器机器上检查了/ var / log / messages和/ var / log中的其他一些地方,没有提供任何线索。 我也尝试了另一个JDBC连接器,另一个MySQL服务器,更新了JRE,没有改进。 我应该在哪里看更进一步?
接下来是什么 ? 谢谢!
编辑:检查一些更多,这是不相关的线程数量抽&推他们的队列查询,也不是查询/秒,也不是一个特定的机器,也不是正在运行的SQL查询types或连接数MySQL的。 我也检查了tcpdump捕获,服务器在几毫秒内回应查询。 剩下的时间…只是客户端不知道如何获取TCP用户空间的结果。
但在所有的testing中,有一个指标保持不变 – 当它同时连接用户(XMPP服务器的用户)30k点时,即出现故障时。