我已经将生产服务器移至 OpenVZ,这是我以前多次做过的事情,只是这次它影响了某些操作的交易行为。
我的所有表都是 innoDB。我没有更改其出厂状态的任何参数。
某些对 JBoss 的请求会导致事务需要 10 秒才能完成,但这只是偶尔发生。通常它们的速度非常快。
我在 my.cnf 或 Mysql 变量中找不到与这 10 秒延迟相对应的任何内容。我可以看到事务出现在 Innotop 中,但如果我切换到 Q - 查询模式,则无法通过按 f 来查看完整查询。
似乎没有任何形式的回滚,因为即使延迟,功能也不会中断。根据标准配置,JBoss 的事务超时为 300 秒。
我看到 /proc/user_beancounters 中没有达到任何限制(对于那些不知道这是什么的人来说,OpenVZ 会跟踪 VM 何时超出其资源配额)。
我正在努力找出这个瓶颈来自哪里。
答案1
好的,现在我可以回答这个问题了。
我研究了 Mysql 如何处理连接,结果发现它似乎总是尝试反向查找,除非你告诉它不要这样做,并且在 10 秒后尝试超时。
我不知道为什么我的网络会间歇性超时,但通过添加:
跳过名称解析
到my.cnf,问题已经消失。
对我来说这实际上没有完全意义,因为 Jboss 使用池连接,由于大量的常规活动,这些连接应该保持活动状态,但没关系。