MySQLで”InnoDB: Error: pthread_create returned 11”が出た

突然MySQLサーバーが落ちて/var/log/mysqld.log を見たら”InnoDB: Error: pthread_create returned 11” が出力されていた・・・。

ついでに下記のログも解決する。

140105 17:35:12 [Warning] '--default-character-set' is deprecated and will be removed in a future release. Please use '--character-set-server' instead.
140105 17:35:12 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead.

MySQLが落ちたのはファイルディスクリプタ数の上限に引っかかったっぽいので、ulimitコマンドでファイルディスクリプタ数の上限値を変更すれば解決。

※ファイルディスクリプタはプロセスに割り当てる各種リソースの制限を行うためのもので、ulimit -n を実行すると現在のファイルディスクリプタの上限値(SoftLimitおよびHardLimit)が確認できる。

とりあえず無制限にする。

# ulimit -s unlimited
# service mysqld start

下の2行は将来的になくなるから違うオプションを指定しろってだけらしい。
[mysqld]配下のdefault-character-setをcharacter-set-serverに、skip-lockingをskip-external-lockingにすれば良い。

ちなみにうちのmy.cnfは下記。

[client]
port		= 3306
socket		= /var/lib/mysql/mysql.sock

[mysqld]
character-set-server=utf8
datadir=/var/lib/mysql
user=mysql
port		= 3306
socket		= /var/lib/mysql/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log-bin=mysql-bin
binlog_format=mixed
server-id	= 1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

  1. コメントはまだありません。

  1. トラックバックはまだありません。