1. 程式人生 > >【效能優化】tomcat & Redis 優化:關於 too many open files error

【效能優化】tomcat & Redis 優化:關於 too many open files error

背景說明:

     使用Jmeter 進行壓力測試,同時在linux環境下使用“lsof -p 4154 | wc -l”檢視io訪問量。

     進行壓力測試時發現io訪問量在4500左右,伺服器redis報錯,錯誤資訊too many open files error。

原因是因為在linux下面ulimit命令限制了可以開啟檔案描述符的最大數量。預設是1024.而redis的最大連線數maxclients卻遠遠大於這個數量。

這樣問題就出現了,比如redis的連線是10000,那麼是否redis就真的能夠接受10000的連線呢?答案是不是的。redis還受到系統的一些限制。比如ulimit。

最後通過ulimit命令更改了開啟描述符的數量。提高了IO量的級別比如:

  1. ulimit -n 65535

如果依然出現“Toomany open files”,使用ulimit發現“openfiles (-n)”仍然是1024,那麼之前設定的65535是沒起作用,而切換到root使用者發現卻是65535;而在非root使用者下

ulimit -n 65535

會報異常:

ulimit: max user processes: cannot modify limit

原來是被/etc/security/limits.conf 限制了,開啟此檔案即可看到,對預設使用者是有限制的,因此可以加入

*soft    noproc 65535

*hard    noproc 65535

*soft    nofile 65535

*hard    nofile 65535

這樣就非root使用者就可以設定ulimit為65535了。

修改之後測試發現io訪問量可以提高到10000.