
私は本番サーバーを OpenVZ に移行しました。これはこれまで何度も行ってきたことですが、今回は特定の操作のトランザクション動作に影響が出ました。
私のテーブルはすべて innoDB です。パラメータは初期状態から変更していません。
JBoss への特定のリクエストにより、トランザクションが完了するまでにちょうど 10 秒かかりますが、これは断続的に発生します。通常、非常に高速です。
my.cnf または Mysql の変数に、この 10 秒の遅延に対応するものは見つかりません。Innotop に表示されるトランザクションは確認できますが、Q - クエリ モードに切り替えると、f キーを押しても完全なクエリを表示できません。
遅延しても機能が壊れないので、ロールバックはないようです。JBoss のトランザクション タイムアウトは、標準構成に従って 300 秒です。
/proc/user_beancounters では制限に達していないことがわかります (これが何であるか分からない人のために説明すると、OpenVZ は VM がリソース クォータを超えたときにそれを追跡します)。
このボトルネックがどこから来ているのかを特定するのに苦労しています。
答え1
はい、これで答えられます。
Mysql が接続を処理する方法を調べたところ、指示しない限り常に逆引きを試行し、10 秒後にタイムアウトすることが判明しました。
なぜネットワーク上で断続的にタイムアウトが発生するのかはわかりませんが、以下を追加することで、
名前解決をスキップ
my.cnf に追加したら、問題はなくなりました。
Jboss はプールされた接続を使用するので、これは実際のところ完全には意味をなさないのですが、定期的なアクティビティの量により、この接続はアクティブなままになっているはずです。しかし、気にしないでください。