优化系统资源ulimit《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》
假设有这样一种情况,一台Linux 主机上同时登录了10个用户,在没有限制系统资源的情况下,这10个用户同时打开了500个文档,而每个文档的大小为10MB,这时系统的内存资源就会受到巨大的挑战。如果没有内存方面的限制,势必造成系统资源利用的混乱。而实际的应用环境要比这种假设复杂得多。这时,ulimit就派上用场了。ulimit是一种简单并且有效的实现资源限制的方式。
ulimit可以限制系统的各个方面,它通过限制shell启动进程所占用的资源,来完成对系统资源的合理利用和分配。ulimit支持对以下内容进行限制:所创建的内核文件的大小、内存锁住的大小、常驻内存集的大小、进程数据块的大小、打开文件描述符的数量、shell进程所能使用的最大虚拟内存、shell 进程创建文件的大小、分配堆栈的最大值、单个用户的最大线程数和CPU 时间等。同时,它还支持对硬资源和软资源的限制。
ulimit有临时限制和永久限制两种实现方式。临时限制可以限制通过命令行登录的shell会话(.bashrc),并在会话终止时结束限制,而不影响与其他shell会话。对于永久限制,ulimit命令可以将ulimit命令添加到有登录shell的配置文件中,这样就实现了对shell启动进程所占用的资源的永久限制。
ulimit使用格式如下:
ulimit [options] [value]
options 中可设置的选项的含义以及简单示例如表2-7所示。
表2-7 options 中可设置的选项的含义及示例
在了解了ulimit的含义和用法以后,接下来就可以针对Varnish系统进行相关的设定。这里的参数设定值如下(此值不能一概而论,需要根据应用环境的不同,选择适合的值)。
ulimit -HSn 131072 #文件描述符为131072 软硬都开启
ulimit -HSc unlimited #core文件大小不限制 软硬都开启
为了保证这个限制永久生效,最好将ulimit设置放到Varnish的启动脚本中。
ulimit 针对shell
临时-》看存放位置,针对某用户
永久-》针对所有用户
登录/非登录
交互/非交互
最好放在rc.local
ulimit选项表