
我已將生產伺服器移至 OpenVZ,之前我已經做過很多次了,只是這次它影響了某些操作的事務行為。
我所有的表都是innoDB。我沒有更改任何參數的開箱狀態。
對 JBoss 的某些請求導致事務需要 10 秒才能完成,但只是間歇性的。通常他們的速度快如閃電。
我在 my.cnf 或 Mysql 的變數中找不到與這 10 秒延遲相對應的任何內容。我可以看到 Innotop 中出現的交易,但是如果我切換到 Q - 查詢模式,我無法按 f 查看完整的查詢。
似乎沒有任何類型的回滾,因為即使延遲,功能也不會被破壞。根據標準配置,JBoss 的事務逾時為 300 秒。
我發現 /proc/user_beancounters 中沒有受到任何限制(對於那些不知道這是什麼的人,OpenVZ 會追蹤虛擬機器何時超出其資源配額)。
我正在努力找出這個瓶頸來自哪裡。
答案1
好的,我現在可以回答這個問題了。
我研究了 Mysql 如何處理連接,結果發現它顯然總是嘗試反向查找,除非你告訴它不要這樣做,並且在 10 秒後嘗試此操作逾時。
我不知道為什麼我的網路間歇性超時,但透過添加:
跳過名稱解析
到 my.cnf,問題就消失了。
它實際上對我來說並不完全有意義,因為 Jboss 使用池連接,由於大量的常規活動,它應該保持活動狀態,但沒關係。