mysql (5.0.60) は負荷がかかると一度に最大数分間フリーズすることが多く、その間サーバーは完全に応答しません。これは、innotop がメイン スレッドの状態を「チェックポイントを作成中」として示している場合にのみ発生するように切り分けることができました。
この時点で、サーバーは実際に何をしているのでしょうか?
mysql (5.0.60) は負荷がかかると一度に最大数分間フリーズすることが多く、その間サーバーは完全に応答しません。これは、innotop がメイン スレッドの状態を「チェックポイントを作成中」として示している場合にのみ発生するように切り分けることができました。
この時点で、サーバーは実際に何をしているのでしょうか?
私はPradeepのコメントを拡張すると思いました:
InnoDB(デフォルト)のファジーチェックポイントは、ダーティページをディスクにフラッシュするのを非常に簡単に遅らせることができます*。これにより、ログファイルの終わりに近づき、チェックポイントが強制されるときに問題が発生する可能性があります。
これはよく知られているInnoDBの問題であり、役立つサードパーティのパッチがあります。XtraDBでは、innodb_adaptive_checkpointは、終わりが近づくにつれてページのフラッシュを高速化します。
http://www.percona.com/docs/wiki/percona-xtradb:patch:innodb_io
同様のパッチがInnoBaseによって1.0.4プラグインでリリースされました(公式のMySQLリリースにはまだ含まれていません)。
チェックポインティングは、データベースサーバーがメモリ内のすべての変更をディスクにコミットするときです。
これはあなたの質問に答え、あなたの問題に対するいくつかの解決策もあります:
ご存知かもしれませんが、Innodb ストレージ エンジンは、復旧戦略の一部としてファジー チェックポイント手法を使用します。これは非常に優れたアプローチであり、変更されたページ全体をフラッシュするためにデータベースが「停止」する必要がなく、代わりにダーティ ページのフラッシュが小さなチャンクで徐々に行われるため、データベースの負荷が非常に均等になります。
http://www.mysqlperformanceblog.com/2006/05/10/innodb-fuzzy-checkpointing-woes/