Linux上幾個可以影響到服務器併發處理性能的系統參數

1. 打開文件數量限制
系統總共可以打開的文件數
因爲服務器的資源是有限的,所以Linux對打開的文件數做了限制;包括系統總共可以打開的文件數,單個用戶/組別可以打開的文件數,單個進程可以打開的文件數等
對於系統總共可以打開的文件數,應該是系統根據系統硬件資源自動計算出來的,查看幾個系統值都很大,一般不需要我們操心了,如果實在要改,請在/etc/sysctl.conf文件下面加上:
# Controls the maximum number of open-files by whole system
fs.file-max = 6550236
然後執行sysctl -p命令
cat /proc/sys/fs/file-max
6550236
此時整個系統所可以打開的文件總數爲6550236

單個進程可以打開的文件數
當前單個進程可以打開的文件數可以通過ulimit -n [N]進行顯示/設置
許多系統默認爲1024,如果你的應用程序爲高併發網絡服務就很有可能超過1024個連接(還不包括已經打開的其他文件)
所以你可以使用ulimit -n 10240來臨時改變最大文件打開數;
但是記住,這個命令只是臨時性的,不但重啓後無效,而且對於另外一個會話也是無效的;所以我們一般有兩種方式對這個限制進行處理:
1. 將上面命令放到某個啓動腳本使其在自己的服務程序前開啓
2. 修改/etc/security/limits.conf(一般都在這個位置),在尾部增加下面內容
* soft nofile 10240
* hard nofile 10240
記住這個是需要重啓系統的

2. socket等待隊列數量限制
somaxconn參數控制的是socket監聽隊列中的socket數量,在Centos6.5是128,對於要運行大併發服務程序的服務器而言往往是不夠的,將他修改成2048或者更多
sysctl配置與顯示在/proc/sys目錄中的內核參數.用戶只需要編輯/etc/sysctl.conf文件,即可手工或自動執行由sysctl控制的功能。
命令格式:
sysctl [-n] [-e] -w variable=value
sysctl [-n] [-e] -p (default /etc/sysctl.conf)
sysctl [-n] [-e] -a
常用參數的意義:
-w 臨時改變某個指定參數的值,系統重啓將失效,如
sysctl -w net.core.somaxconn=2048
PS: echo 2048 > /proc/sys/net/core/somaxconn跟上面的命令完成了同樣的功能
-a 顯示所有的系統參數
-p 從指定的文件加載系統參數,如不指定即從/etc/sysctl.conf中加載
比如在/etc/sysctl.conf中加入: net.core.somaxconn=2048,再執行sysctl -p

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章