1、linux ulimit调优介绍
在 Linux 系统中,在每个进程中都有一组资源限制,进程默认打开的最大文件数个数为 1024 个,可以通过如下配置查看:
在应用程序开发过程中,比如向 server 发起连接的客户端超过 1024 个时,server 由于 1024 个最大的文件个数限制而出现打开文件失败,进而出现Too many open files 错误。
在linux中这些限制是分为软限制 (soft limit) 和 硬限制 ( hard limit )。他们的区别就是软限制可以在程序的进程中自行改变(突破限制),而硬限制则不行(除非有 root 权限)。
软限制是内核实际执行的限制,任何进程都可以将软限制设置为任意小于等于对进程限制的硬限制的值。
硬限制充当软限制的上限:非特权进程只能将其软限制设置为从 0 到硬限制的范围内的值,只有超级用户进程可以提高硬限制的值。
任何一个进程都可以降低其硬限制的值,但它必须大于或等于其软限制的值。
查看软限制的命令
查看硬限制的命令
那么如何设置这些限制呢?
可以通过 getrlimit 和 setrlimit 系统调用的方式进行获取和设置资源限制。
原作者:Linux码农