学习ulimit命令的使用方法。 功能说明:控制外壳程序的资源。
语法: ulimit [-ahs ] [-c ] [-d ] [-f ] [-m ] [-n ] [-p ] [-t ] [-u ] [-v ]
补充说明: ulimit是一个内置于shell中的命令,可用于控制shell运行程序的资源。
参数:
复制代码的话就是:
-a显示当前资源限制的设置。
-以块为单位设置C核心转储文件的最大值。
-d程序数据部分的最大值。 单位为千字节。
- f shell可以创建的最大文档。 单位是块。
-H设置资源的硬限制,即管理员设置的限制。
-m指定可用内存的上限(以千字节为单位)。
-n指定一次可以打开的文档的最大数量。
-以512字节为单位指定p管道缓冲区的大小。
-s指定堆栈的上限(以千字节为单位)。
设置-S资源的灵活限制。
-指定-tCPU使用时间上限(以秒为单位)。
-u用户可以打开的最大进程数。
-v以千字节为单位指定可用虚拟内存的上限。
ulimit -a用于显示当前各种用户进程的限制。
Linux限制每个用户的最大进程数。 要提高性能,请根据设备资源的情况设置每个linux用户的最大进程数。
例如,将linux用户的最大进程数设置为10000。
ulimit -u 10000
对于需要进行大量套接字连接并使它们保持打开的Java APP应用程序,
建议使用ulimit -n xx更改每个进程可以打开的文件数。 默认值为1024。
ulimit -n 4096将每个进程可以打开的文件数增加到4096,默认值为1024
其他一些建议设定为“无限制”(unlimited )的重要设置包括:
复制代码的话就是:
数据段长度: ulimit -d unlimited
最大内存大小:最大限制
堆栈大小: ulimit -s unlimited
CPU时间: ulimit -t unlimited
虚拟内存: ulimit -v unlimited
服务器可能需要将ulimit的stack size参数调整为unlimited无限,如果使用ulimit -s unlimited,则只对当时的shell有效,如果重新启动一个shell,则无效。
解决方法:
在/etc/profile的末尾添加ulimit -s unlimited。
然后:
# source /etc/profile
使修正立即生效。
可能的问题:
如果显示类似的错误消息
ulimit : maxuserprocesses 3360 cannotmodifylimit :不允许的操作
在ulimit : open files 3360 cannotmodifylimit 3360上无法执行的操作
为什么以上操作不会向root用户提示这些限制信息,而只影响一般用户?
请检查名为/etc/security/limits.conf的文件。
说明:
linux对用户有默认的ulimit限制。 该文件可以配置用户的硬件和软件配置。 硬件构成是上限。
超过上限的修改会发生“不允许的操作”的错误。
可以在limits.conf文件的末尾添加相关内容,如下图所示。
这意味着将任何用户的最大线程数和文件数限制为10240。