在運行server的時候總是會遇到這個錯誤,在linux下open files的數量是有限制的,一般爲1024,如果運行server,總是會需要修改這個值的,查看本機limit的數量的方式:
ulimit -a # -a 表示顯示所有的數量限制,如果要查看open files的數量可以使用-n參數
ulimit -n
ulimit的參數說明:
-H 設置硬件資源限制.
-S 設置軟件資源限制.
-a 顯示當前所有的資源限制.
-c size:設置core文件的最大值.單位:blocks
-d size:設置數據段的最大值.單位:kbytes
-f size:設置創建文件的最大值.單位:blocks
-l size:設置在內存中鎖定進程的最大值.單位:kbytes
-m size:設置可以使用的常駐內存的最大值.單位:kbytes
-n size:設置內核可以同時打開的文件描述符的最大值.單位:n
-p size:設置管道緩衝區的最大值.單位:kbytes
-s size:設置堆棧的最大值.單位:kbytes
-t size:設置CPU使用時間的最大上限.單位:seconds
-v size:設置虛擬內存的最大值.單位:kbytes
既然找到了原因,現在就需要修改這個限制條件,用root用戶權限打開文件:
sudo vim /etc/security/limits.conf
然後在後邊添加兩句話:
* soft nofile 65536
* hard nofile 65536 # 後邊的數字你自己的實際情況而定
軟限制是給出warning的限制上限;硬限制時強制限制
前面的*說明對所有的登陸用戶都適用,也可以通過制定登錄用戶名來針對用戶更改
最後保存退出後,需要退出shell,重新登錄,使其生效。