私はZFSを実行するFreeBSD 8システムと数テラバイトまで成長すると予想される約355GBの容量のMySQL 5.5サーバーを持っています。
MySQLは/etc/hosts.allow
明示的に使用しませんが、/etc/hosts.allow
使用されます。ホストアクセス(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
Openfilesは無制限に設定する必要があります。
# 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がhost.allow/hosts.denyを開くことができないのはなぜですか?
- FreeBSDフォーラムの同様の質問も参照してください。[EMFILE]開いているファイルが多すぎます。
答え1
/etc/login.confをチェックし、mysqlユーザーがどのログインクラスに割り当てられているかを確認してください。これはデフォルトプロセスでもデーモンプロセスでもかまいません。ユーザーの制限を変更するには、新しいクラスを作成し、そのクラスにユーザーを割り当て、必要に応じてそのクラスの制限を変更して、「cap_mkdb /etc/login.conf」を実行します。
まだこの記事を読んでいない場合は、次の手順を実行します。http://www.freebsd.org/doc/handbook/users-limiting.htm
システムの起動時に /etc/rc によって開始されたプロセスが次に割り当てられます。悪魔ログインクラス。
答え2
man limits.conf
一部のオペレーティングシステムでは、一般ユーザーのセキュリティ上の問題を回避するために制限が設定されており、最大スレッド数や最大オープンファイル数など、プロセスごとの制限を定義するこのファイルの内容を読むことを検討する必要があります。そこで限られた使用が発生する可能性があります。
/etc/security/limits.conf