Ubuntu12.04のulimitの上限を上げる.
Ubuntu 12.04(他のLinux系OSも同じだと思う)でこんなプログラムを動かすと.
IOError: [Errno 24] Too many open files: xxx
っていうエラーがでる.
以下のコマンドで確認できるファイルオープン数の上限が1024になっているせいでファイルオープンできなくて,エラーを吐いている.
ulimit -n >1024
以下のサイトを参考にファイル上限をあげてみた.vagrantで動かしているUbuntu12.04 LTS Serverで実験した. How to set ulimit in ubuntu linux? getting sudo: ulimit: command not found error | ubuntu forums
編集内容
sudo emacs /etc/security/limits.conf
以下を追加
vagrant hard nofile 65535 vagrant soft nofile 65535
sudo emacs /etc/pam.d/su
以下のコメントアウトをはずす
# session required pam_limits.so
sudo reboot
再起動後,同じプログラムを動かしてもエラー吐かなくなった.
ファイルオープン数の上限に達すると,TCPソケット開けないし,ライブラリのインポートできないしで,オワタ状態になるのでチューニングちゃんとしないといけないっすね.