在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 |
系统调优
- Linux针对每个用户有限制其最大进程数,为提高性能,可以根据设备资源情况,设置用户的最大进程数。
- 对于需要做许多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详解