CentOS6のプロセス数制限に注意!
ulimit設定を確認しよう

スレッド作成エラー

CentOS5で運用していたサービスを、CentOS6にしたところ、WebサーバーからMySQLへの接続で、以下のようなエラーが出るようになってしまった。

Can’t create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug

新しいスレッドを作成できない、というエラーのようだ。

ユーザーごとのプロセス制限数

「ulimit -u」を出力すると、1024になっている。

「ulimit」は、システムリソースの制限を設定するためのコマンドであり、「-u」は1ユーザーが起動できるプロセスの制限数を表示するオプションだ。

CentOS5では「unlimited」だったところ、CentOS6ではデフォルトで「1024」に制限されているため、同時アクセスの多いサービスでは容易に、MySQLへの接続時にユーザーが作成できるプロセス数制限に引っかかってしまうのだ。

対策

「/etc/security/limits.d/90-nproc.conf」にある「nproc」を、65535に増やし、サーバーを再起動することで、「ulimit -u」の出力を65535に変更した。

この対応によって、エラーなくMySQLへ接続できるようになった。