web-dev-qa-db-ja.com

「タスクmysqld:xxxが120秒以上ブロックされた」とはどういう意味ですか?

一部のクエリの完了に非常に長い時間がかかり、/ var/log/messagesにこれらのエントリの多くが表示されるMySQLの問題のトラブルシューティングを行っています。

Jan 28 05:52:15 64455-alpha01 kernel: [2529273.616327] INFO: task mysqld:4123 blocked for more than 120 seconds.
Jan 28 05:52:15 64455-alpha01 kernel: [2529273.616525] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jan 28 05:52:15 64455-alpha01 kernel: [2529273.616813] mysqld        D  000000000000000d     0  4123   3142 0x00000080

どういう意味ですか? MySQLスレッドにどのように影響しますか(4123はスレッドIDですか?)

今確認したときの/proc/sys/kernel/hung_task_timeout_secsの値は次のとおりです。

$ cat /proc/sys/kernel/hung_task_timeout_secs
120

プロセスにどのように影響するかを具体的に知りたいのですが。

私はフォーラムで、それがそのプロセスがあまりにも多くのメモリを保持しているときに発生することを意味すると読んだ。

3
Sree

echo 0 > /proc/sys/kernel/hung_task_timeout_secs警告のみを黙らせます。それ以外には何の影響もありません。ゼロを超える値を指定すると、タスクがその時間ブロックされたときにこのメッセージが発行されます。

警告は、システムの問題を示すために出されます。私の経験では、プロセスはディスクI/Oが不足しているため、通常、プロセスはカーネル空間で少なくとも120秒間ブロックされます。これは、使用されているメモリが多すぎるためにスワッピングが激しいことが原因である可能性があります。ウェブサーバーの負荷が高く、システムに設定したApache子プロセスが多すぎる場合。あなたの場合、メモリとデータIOを競合するmysqlプロセスが多すぎる可能性があります。

基礎となるストレージシステムが適切に実行されていない場合にも発生します。 SAN過負荷状態になっている場合、またはディスクにソフトエラーがあり、再試行の回数が多い場合。タスクがそのIOコマンドを完了すると、これらの警告が発行される場合があります。

3
wurtel