mysql 客户端无法读取查询结果?

mysql 客户端无法读取查询结果?

因此,我让这台机器运行一个连接到其 MySQL 数据库的 XMPP 服务器。当我开始对其进行负载测试时,一切都很顺利,直到大约 500 秒后我注意到:

Caused by: com.mysql.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request

开始出现。与此同时,命令:

mysql> show processlist;

揭示了 MySQL 如何接收下一个查询、回答它们(状态 = 发送数据被记录在磁带上),然后只是闲置在状态 = 休眠 20 秒、40 秒甚至更长时间。在这段时间内,PreparedStatement.execute() 方法调用不会返回。该top命令显示 CPU 使用率不超过 800%(16 个核心 - 其中一半在峰值时使用)。

我检查了 /var/log/messages 和 /var/log 中的其他几个地方,查找 XMPP 服务器机器上的错误,但没有得到任何线索。我还尝试了另一个 JDBC 连接器、另一个 MySQL 服务器、更新的 JRE,但没有任何改善。我应该在哪里进一步查找?

下一步做什么?谢谢!

编辑:检查了更多内容,发现这与从队列中抽取和推送查询的线程数、每秒查询数、特定机器、正在运行的 SQL 查询类型或与 MySQL 的连接数无关。我还检查了捕获,tcpdump服务器在几毫秒内回复了查询。其余时间...只是客户端不知何故没有在 TCP 用户空间中获取该结果。

但在所有测试中,有一个指标始终保持不变 —— 当同时连接的用户(XMPP 服务器的用户)数量超过 30k 时 —— 问题就开始了。

相关内容