MySQLが一時ファイル記述子を解放しない


3

数日前から、MySQLのインストールでいくつかの深刻な問題が発生しています。MySQLは一時ファイルを開き続けます(通常の動作)が、これらのファイルはリリースされません。その結果、最終的にはディスク領域が使い果たされるため、サービスを再起動して/ tmpを手動でクリーンアップする必要があります。

lsofを使用すると、次のように表示されます。

mysqld    16866     mysql    5u      REG    8,3          0        692 /tmp/ibyWJylQ     (deleted)
mysqld    16866     mysql    6u      REG    8,3          0        707 /tmp/ibf5adsT  (deleted)
mysqld    16866     mysql    7u      REG    8,3          0        728 /tmp/ibGjPRyW (deleted)
mysqld    16866     mysql    8u      REG    8,3          0       5678 /tmp/ibMQDLMZ (deleted)
mysqld    16866     mysql   13u      REG    8,3          0       5679 /tmp/ibQAnM42 (deleted)

おそらく関係ありませんが、サーバーをシャットダウンすると、ファイルは最終的に解放され、MySQLログで次の警告を確認できます。

121029  7:44:27 [Warning] /usr/local/mysql/bin/mysqld: Forcing close of thread 1333  user: 'xxx'
121029  7:44:27 [Warning] /usr/local/mysql/bin/mysqld: Forcing close of thread 1156  user: 'yyy'
121029  7:44:27 [Warning] /usr/local/mysql/bin/mysqld: Forcing close of thread 1151  user: 'zzz'

ここで、「xxx」、「yyy」、および「zzz」は別個のmysqlユーザー(およびデータベースへのアクティブな接続を持つ3人のユーザーのみ)です。

いくつかの理論があります。

  • OSに問題があり、ファイルハンドラーを開いたままにします。OSの「削除」操作がシャットダウンするまでスレッドをブロックする可能性はありますか?これは、シャットダウン時の警告と、プロセスが終了したときにファイルが最終的に削除されるという事実を説明する場合があります。

  • これまで、データセットは非常に小さいため、一時ファイルは比較的小さく、ディスク領域を使い果たすことなくファイルハンドルを解放するのに十分な時間がありました。

デフォルトカーネルのRHEL 6.2でMysql 5.5を使用しています。

回答:


4

まあ...それは本当に解決策ではありませんが、研究の終わりだと思います。

MySQLのバグのようです。我々はを通してそれを見つけ、このバグの重複と思われる、このいずれかを

回避策として、非常に多くの一時ファイルを生成しないように、binlog_cache_sizeを適切な値に増やしました(アプリケーションのベンチマークを少し行い、lsofでファイルのサイズを確認した後)。さらに詳しく知りたい場合は、これを解決する他のオプションに関する記事を見つけることができます。

それが誰かを助けることを願っています;)


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.