記錄linux下通過對limits的設置來優化系統性能
阿新 • • 發佈:2018-10-08
pgrep 目前 接下來 total 滿足 執行 獲取 linux下 第一個 系統中子進程繼承父進程的系統限制。只有以root用戶運行的進程能任意修改限制。其它進程不能增加硬限制值。這樣在一個session中登錄進程設置的硬限制值影響該session中的所有進程。
1728 0 325288
三個值
第一個:目前分配的文件句柄
第二個:以分配但是是空閑的文件句柄
第三個:系統及的最大文件分配句柄數,也就是當前內核可以打開的最大的文件句柄數(它的值是與/proc/sys/fs/file-max中的值是匹配的,可以通過cat /proc/sys/fs/file-max查看)
當要優化一個程序的限制值時,首先可以去查看這個程序的限制值是否滿足我們想要的條件,如你想看某個程序系統限制值,可以通過進程的pid來查看,命令如下
cat /proc/<pid>/limits
當然,你首先需要找到程序的pid值,查看某個程序的pid值,你可以通過下面的命令獲取
pgrep -l 程序名 (如你想查找nginx的pid值,你可以執行pgrep -l nginx來查找)
如果你不確定你要找的pid是不是你想要的程序的pid,你可以通過如下方式查看
cd /proc/<pid>
ls -alh #目錄下的exe所映射的路徑就是指的程序路徑了
接下來就是對限制的一些修改方法了。
ulimit用命令對於直接去設置其它用戶沒有什麽作用,它只作用於本session的shell環境及本sessionshell環境中的進程,如果要去修改其它用戶的系統limits值可以修改/etc/security/limits.conf。
如:想修改所有用戶的能打開的最大進程數據及文件句柄數可以vi /etc/security/limits.conf,並添加如下內容
添加的如下如下
#<domain> <type> <item> <value> * soft nproc 100000 * hard nproc 100000 * soft nofile 100000 * hard nofile 100000 #soft nproc: 可打開的文件句柄的最大數(軟限制) #hard nproc: 可打開的文件句柄的最大數(硬限制) #soft nofile:單個用戶可用的最大進程數量(軟限制) #hard nofile:單個用戶可用的最大進程數量(硬限制) #<domain> 可以是用戶名如www 也可以是組名如 @www #<type> 有兩個值,一個是soft 表示軟限制 一個是hard 表示硬限制 #<item> 的值有 core ,data,fsize,memlock,nofile,rss,stack,cpu,nproc,as,maxlogins,maxsyslogins,priority,locks,sigpending,msgqueue,nice,rtprio;下面只作幾個介紹 # core Core文件的最大值設置,單位是(KB)。Core文件是內存的映像,如當程序崩潰時,產生的內存信息文件。 # data 程序的數據段最大值,就是當程序初始時,給程序的最大初始化內存空間,單位是(KB)。 # fsize 設置用戶能操作的最大文件,單位是(KB)。 # memlock 設置程序能鎖住內存的最大值,也就是程序的個人內存空間的最大值,單位是(KB)。 # nofile 單個用戶可用的最大進程數量 # nproc 可打開的文件句柄的最大數 # cpu 設置程序最長占用cpu時間 單位是秒 # maxlogins 同一時間用戶的最大登錄數 # maxsyslogins 設置系統中用戶的最大登錄數據 #當你修改/etc/security/limits.conf後。它只會影響新的session。及在新session中運行的程序。不會影響已經運行的程序。
當然我們也可以修改系統級的限制值。如下只記錄幾個對文件系統限制值的修改
/proc/sys/fs/file-max
決定了當前內核可以打開的最大的文件句柄數
file-max一般為內存大小(KB)的10%來計算
計算方式:
grep -r MemTotal /proc/meminfo | awk ‘{printf("%d",$2/10)}‘
327601
增加這個值的方式可以如下
echo 427601 > /proc/sys/fs/file-max
或者
echo "fs.file-max=427601" >> /etc/sysctl.conf
sysctl -p
/proc/sys/fs/file-nr (這個文件只做查看用)
三個值
第一個:目前分配的文件句柄
第二個:以分配但是是空閑的文件句柄
第三個:系統及的最大文件分配句柄數,也就是當前內核可以打開的最大的文件句柄數(它的值是與/proc/sys/fs/file-max中的值是匹配的,可以通過cat /proc/sys/fs/file-max查看)
/proc/sys/fs/nr_open
指明一個程序能分配的最大文件句柄數
修改這個值的方式可以如下
echo 427601 > /proc/sys/fs/nr_open
或者
echo "fs.fs.nr_open=427601" >> /etc/sysctl.conf
sysctl -p
記錄linux下通過對limits的設置來優化系統性能