Innodb_file_per_tableとulimit-nを8Kに設定して、ZFSストレージアレイ上でMySQLを使用してNexenta(OpenSolarisカーネル、Ubuntuユーザースペース)を実行しているストレージサーバーがあります。 mysqltuner.plはファイル制限を確認し、169個のファイルがあると主張します。
次のコマンド:
pfiles `fuser -c / 2>/dev/null
485のファイル/デバイス記述子を持つ1つのmysqldプロセスを示します(そしてそれらはほとんどすべてファイル用です)ので、チューニングスクリプトがどれほど信頼できるかはわかりませんが、それでも8K未満であり、このリストには他のプロセスも見つかりません限界に近づいています。使用中の記述子のグローバル総数は約1Kです。
では、mysqldが次のエラーを絶えずストリーミングしている原因は何でしょうか?
[date] [Host] mysqld[pid]: warning: cannot open /etc/hosts.allow: Too many open files
[date] [Host] mysqld[pid]: warning: cannot open /etc/hosts.deny: Too many open files
すべてが実際に正常に動作しているように見えますが、問題は常に管理コンソールにあふれ、新しいブートですぐに開始されます(再現可能であるだけでなく、常にmysqldから、常にアクセス許可がデフォルトのhostsファイルから-rw-r--r-- 1 root root
)。もちろん、管理コンソールからそれを抑制することはできますが、それでもその底に到達し、mysqldの警告/エラーが管理コンソールに到達することを許可したいと思います。
編集:実際のファイル記述子が適切な制限内にあるだけでなく、ファイル制限が65535に引き上げられ、常にhosts.allow/denyでのみ問題が発生します(すぐに表示されます)。
Nexentaが当時OpenSolarisベースであったことを考えると、 この問題 に遭遇している可能性があります。 doesは、ファイル記述子の制限がシステム全体に一貫した方法で適用されていないようです。
セットアップで実際にhosts.allow/denyを使用していますか?
lsof
出力はどのように見えますか?