サクッと負荷がかけられるApache Benchをmacから実行したらエラーが出たのでその辺を記述します。
まずは環境です。
MacbookPro OS X Yosemite 10.10.3 ※2015/5/29現在で最新
Apache Benchを実行すると「socket: Too many open files (24)」とエラー。
$ ab -n 500 -c 500 http://****.com/<strong><em>/</em></strong>.php This is ApacheBench, Version 2.3 <$Revision: 1604373 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking ****.com (be patient) socket: Too many open files (24)
システムリソースの上限を設定できるulimitコマンドが鍵のようです。
$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited max locked memory (kbytes, -l) unlimited max memory size (kbytes, -m) unlimited open files (-n) 256 ←コレ pipe size (512 bytes, -p) 1 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 709 virtual memory (kbytes, -v) unlimited
open filesをとりあえず1000に設定
$ ulimit -n 1000
確認
$ ulimit -n 1000
注意。(これが一番書きたかったこと)
mac Yosemiteだとターミナル立ち上げて1回目は設定できるのですが、なぜか2回目以降は設定値より小さい値しか設定できません。
$ ulimit -n 1 $ ulimit -n 1 $ ulimit -n 100 -bash: ulimit: open files: cannot modify limit: Operation not permitted
上記のように1なんて設定したらもとに戻せません。ただ、その場合は新しいターミナルを起動しなおせば再設定できます。
ulimitはログインShellにひも付けられる設定値ということですね。
しかし、2回目から設定できないのは謎。
Please comment with your real name using good manners.