私はFreeBSD 8システムでZFSを実行しており、MySQL 5.5サーバーは約355GBで、数テラバイトになると予測されています。
MySQLがで「開いているファイルが多すぎます」に関するエラーを引き起こしています/etc/hosts.allow
。明示的には使用していません/etc/hosts.allow
が、hosts_access(3)(libwrap.a
)で使用されています。
mysqld[1234]: warning: /etc/hosts.allow, line 15: cannot open /etc/hosts.allow: Too many open files
しかし、チェックすると実際の制限に達していないようです。報告されているオープンファイルの数はkern.openfiles stays
、継続的に40,000未満であり、上限は大幅に高くなっています。
# sysctl -a |grep files
kern.maxfiles: 204800
kern.maxfilesperproc: 184320
kern.openfiles: 38191
# ulimit -n
184320
オープンファイルは無制限に設定する必要があります:
# grep openfiles /etc/login.conf
:openfiles=unlimited:\
MySQLは184320のファイルハンドルを開くことができるはずであると述べています。
# mysqladmin variables | grep open_files_limit
| open_files_limit | 184320 |
また、MySQLユーザーの観点からのいくつかの情報。私はmysqlを停止し、ハッキング/usr/local/etc/rc.d/mysql-server
してこれらの変数を出力したので、これはMySQL環境を表すはずです。184320という数字は上記と一致していることに注意してください。
# /usr/local/etc/rc.d/mysql-server.stefantest start
Starting mysql.
cpu time (seconds, -t) unlimited
file size (512-blocks, -f) unlimited
data seg size (kbytes, -d) 33554432
stack size (kbytes, -s) 524288
core file size (512-blocks, -c) unlimited
max memory size (kbytes, -m) unlimited
locked memory (kbytes, -l) unlimited
max user processes (-u) 5547
open files (-n) 184320
virtual mem size (kbytes, -v) unlimited
swap limit (kbytes, -w) unlimited
sbsize (bytes, -b) unlimited
pseudo-terminals (-p) unlimited
また、簡単に参照できるように、sysctlの説明を次に示します。
kern.maxfiles: Maximum number of files
kern.openfiles: System-wide number of open files
kern.maxfilesperproc: Maximum files allowed open per process
関連する
- これは、ServerFaultのNexentaのZFSに関する質問に関連している可能性があります。 なぜMySQLはhosts.allow / hosts.denyを開けないのですか?
- FreeBSDフォーラムでこの同様の問題も参照してください:[EMFILE]開いているファイルが多すぎます
ulimit
起動スクリプトまたはシェル環境で設定できることはわかっていますが、データベースを中断する必要があります。
cat limits
mysqlの実行状況を確認できます。それらをその場で変更することもできます(新しいカーネルを使用):(echo -n "Max open files=soft_value:hard_value" > /proc/$PID/limits
もちろんルートとして)
/proc
FreeBSDではデフォルトでマウントされていませんが、で自分で行ってください。詳細sudo mount -t procfs proc /proc
についてprocfs(5)
は、を参照してください。/proc
マウントしたら、/proc/$PID/rlimit
ファイルを確認してください