
Ich habe einen Produktionsserver zu OpenVZ verschoben, was ich schon oft getan habe. Nur dieses Mal hatte es Auswirkungen auf das Transaktionsverhalten bestimmter Vorgänge.
Alle meine Tabellen sind innoDB. Ich habe seit dem Auslieferungszustand keine Parameter geändert.
Bestimmte Anfragen an JBoss führen zu Transaktionen, die genau 10 Sekunden dauern, aber nur zeitweise. Normalerweise sind sie blitzschnell.
Ich kann in my.cnf oder in den Variablen von Mysql nichts finden, das dieser 10-Sekunden-Verzögerung entspricht. Ich kann die Transaktionen in Innotop sehen, aber wenn ich in den Q-Abfragemodus wechsle, kann ich die vollständige Abfrage nicht sehen, indem ich f drücke.
Es scheint keine Art von Rollback zu geben, da die Funktionalität auch bei Verzögerung nicht beeinträchtigt wird. JBoss hat gemäß der Standardkonfiguration ein Transaktions-Timeout von 300 Sekunden.
Ich sehe keine erreichten Grenzwerte in /proc/user_beancounters (OpenVZ verfolgt, wenn VMs ihre Ressourcenkontingente überschreiten, für diejenigen, die nicht wissen, was das ist).
Ich kann nicht herausfinden, woher dieser Engpass kommt.
Antwort1
OK, ich kann das jetzt beantworten.
Ich habe nachgelesen, wie MySQL Verbindungen handhabt, und es hat sich herausgestellt, dass es anscheinend immer einen umgekehrten Lookup-Vorgang durchführt, sofern man ihm nichts dagegen sagt. Außerdem läuft dieser Versuch nach 10 Sekunden ab.
Ich weiß nicht, warum es in meinem Netzwerk zeitweise zu Zeitüberschreitungen kam, aber durch Hinzufügen von:
Namensauflösung überspringen
zu my.cnf, das Problem ist behoben.
Das ergibt für mich eigentlich nicht ganz Sinn, da JBoss gepoolte Verbindungen verwendet, die aufgrund eines gewissen Ausmaßes an regelmäßiger Aktivität aktiv bleiben sollten, aber egal.