在linux下網絡服務經常會遇到的一個問題就打開過多的端口或者建立大量的連接配接會失敗,這是因為系統對每個程序能夠打開的資源是有限制的。
打開過多的端口或者建立大量的連接配接,都會打開大量檔案描述符,linux系統預設對每個程序打開的檔案描述符限制為1024,大于這個值就會打開失敗。
ulimit指令就可以修改這個限制,另外ulimit的還有一個用途,就是修改程式崩潰的時候生成core檔案的限制。
這個指令是修改每個程序的限制,我們有時隻想修改自己程式的限制,那麼linux系統提供了兩個系統調用修改這個限制,可以在程式中調用動态修改。
#include <sys/resource.h>
int getrlimit(int resource, struct rlimit *rlim);
int setrlimit(int resource, const struct rlimit *rlim);
在終端輸入ulimit -h檢視其他選項:
ulimit: 用法: ulimit [-SHabcdefilmnpqrstuvxT] [limit]
修改選項大小的指令格式為:ulimit+要修改的選項+要修改選項的大小
檢視選項限制的指令格式為:ulimit+要檢視的選項
修改檔案描述符限制:
ulimit -Sn 2048
檢視檔案描述符限制:
ulimit -Sn