私は現在、AmazonLinuxを使用してAWSEC2でホストされているPHP、MySQLアプリケーションのストレステストを行っています。特定のユーザー数に達した後、DBはエラーを出し始めます: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
。このエラーが発生したときにfree -m
で確認できる、システムにはまだ多くの空きメモリがあります。
/etc/security/limits.conf
でmysql
の制限を変更しようとしましたが、成功しませんでした。他に何を試すことができますか?どうすれば問題の根本に到達できますか?はい、MySQLとLinuxは初めてです。
更新:jeffatrackaid
の回答後、ディレクトリ/etc/security/limits.d
に99-mysql.conf
という名前の設定ファイルを追加しようとしましたが、エラーが解決しません。ファイルの内容は次のとおりです。
mysql soft nproc 20960
mysql hard nproc 45960
mysql soft nofile 20960
mysql hard nofile 45960
root soft nproc 20960
root hard nproc 45960
root soft nofile 20960
root hard nofile 45960
更新:システムの再起動後に機能しました。
あなたは正しい方向に進んでいますが、いくつかの新しいOS(CentOS 6など)では、次のことがあります。
/etc/security/limits.d/
これにより、limits.confに配置されたアイテムが上書きされます。
制限付きで、より大きな数のファイル(99-mysql.confなど)をここに配置することをお勧めします。
詳細については、以下を参照してください。 http://www.mysqlperformanceblog.com/2013/02/04/cant_create_thread_errno_11/