1. 程式人生 > 其它 >Linux系統控制代碼優化

Linux系統控制代碼優化

Linux系統控制代碼介紹
檔案控制代碼,會隨著程序數增加而增加。其實Linux是有檔案控制代碼限制的,而且Linux預設一般都是1024。在生產環境中很容易到達這個值,因此這裡就會成為系統的瓶頸。

在Linux系統的生產環境中,會經常遇到“too many open files”的報錯。這個報錯顧名思義是開啟過多檔案數。不過這裡的files不單是檔案的意思,也包括開啟的通訊連結(比如socket),正在監聽的埠等等,所以有時候也可以叫做控制代碼(handle),這個錯誤通常也可以叫做控制代碼數超出系統限制。

在出現“too many open files”報錯的時候,大多數情況是由於程式沒有正常關閉一些資源引起的,所以出現這種情況,這個時候需要檢查I/O讀寫,socket通訊等是否正常關閉等。當然也可以通過修改引數,將系統的檔案控制代碼限制提高,來緩解這一壓力。

檢視當前的控制代碼數

檢視當前系統預設的檔案控制代碼數量

[root@controller ~]# ulimit -n
1024

修改控制代碼數

修改Linux系統的控制代碼數限制有兩種方法,一種是使用ulimit命令臨時生效,另外一種是修改配置檔案,永久生效。此處使用修改配置檔案的方式。

注意:如果使用命令臨時生效控制代碼限制,root使用者可以調大或者調小控制代碼的限制,而非root使用者一旦設定了值,就只能調小這個限制,不能調大,不然會報“bash: ulimit: open files: cannot modify limit: Operation not permitted”的錯誤。

修改配置檔案調整控制代碼限制為65535

[root@controller ~]#  echo "* soft nofile 65535" >> /etc/security/limits.conf
[root@controller ~]#  echo "* hard nofile 65535" >> /etc/security/limits.conf

*       #代表所有使用者
soft    #超過檔案控制代碼數時,僅提示
hard    #超過檔案控制代碼數時,直接限制

修改完之後,不需要重啟系統即會生效,但是需要重新登入。退出重新登入該雲主機,檢視當前的控制代碼限制,命令如下

Last login: Thu May  5 19:26:47 2022 from 10.60.2.201


 #########################
 #  Welcome to XianDian  #
 #########################



[root@controller ~]# ulimit -n
65535
[root@controller ~]#