Linux资源管理命令ulimit详解

在Linux中,ulimit为shell内建指令,可用来控制shell执行程序的资源。Linux系统打开文件描述符的最大值默认为1024,对一台繁忙的服务器来说偏小,所以有必要重新设置。

语法

ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆叠大小>][-t <CPU时间>][-u <程序数目>][-v <虚拟内存大小>]

参数说明

参数 说明
-a 显示目前资源限制的设定
-c <core文件上限> 设定core文件的最大值,单位为区块
-d <数据节区大小> 程序数据节区的最大值,单位为KB
-f <文件大小> shell所能建立的最大文件,单位为区块
-H 设定资源的硬性限制,也就是管理员所设下的限制
-m <内存大小> 指定可使用内存的上限,单位为KB
-n <文件数目> 指定同一时间最多可开启的文件数
-p <缓冲区大小> 指定管道缓冲区的大小,单位512字节
-s <堆叠大小> 指定堆叠的上限,单位为KB
-S 设定资源的弹性限制
-t <CPU时间> 指定CPU使用时间的上限,单位为秒
-u <程序数目> 用户最多可开启的程序数目
-v <虚拟内存大小> 指定可使用的虚拟内存上限,单位为KB

系统调优

  1. Linux针对每个用户有限制其最大进程数,为提高性能,可以根据设备资源情况,设置用户的最大进程数。
  2. 对于需要做许多socket连接并使它们处于打开状态的Java应用程序而言,建议修改每个进程可打开的文件数。

临时调整

平时最常见的优化调整是(根据实际情况调整数值):

  • 最大进程数:ulimit -u 8192
  • 最大文件数:ulimit -n 4096

其他建议设置成无限制(unlimited)的一些重要设置是:

  • 数据长度:ulimit -d unlimited
  • 最大内存:ulimit -m unlimited
  • 堆栈大小:ulimit -s unlimited
  • CPU时间:ulimit -t unlimited
  • 虚拟内存:ulimit -v unlimited

永久生效

以上都只是临时设置会话期间的资源限制,若要使设置永久生效,须修改用户资源文件。

修改/etc/security/limits.conf设置Linux系统的最大进程数和最大文件打开数限制:

* soft noproc 8192
* hard noproc 8192
* soft nofile 4096
* hard nofile 4096

修改/etc/profile设置用户环境变量:

ulimit -u 8192
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited

修改/etc/sysctl.conf设置系统资源限制(执行“sysctl -p”使生效):

s.file-max = 32768
kernel.msgmni = 1024
kernel.sem = 1000 32000 32 512
kernel.shmmax = 2147483648
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_max_syn_backlog = 4096

原创文章禁止转载:技术学堂 » Linux资源管理命令ulimit详解

精彩评论

2+9=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏