当前位置: 首页 > 科技观察

高并发下Linux系统参数优化

时间:2023-03-23 01:17:23 科技观察

众所周知,Linux在默认参数下对高并发的支持并不好,主要受限于单进程最大打开文件数限制、内核TCP参数和IO事件分发机制等。下面从几个方面进行调整,使Linux系统能够支持高并发环境。iptables相关如非必要,关闭或卸载iptables防火墙,防止内核加载iptables模块。这些模块影响并发性能。单个进程打开文件的最大数量是有限制的。一般release版本限制单进程最大打开文件数为1024,远远不能满足高并发的要求。调整过程如下:在#提示符下输入:#ulimit-n65535设置root启动的单个进程最多可以打开的文件数为65535,如果系统回显“Operationnotpermitted”,表示修改上述限制失败,因为中指定的值超过了Linux系统对用户打开文件数的软限制或硬限制。因此,需要修改Linux系统对用户打开文件数的软限制和硬限制。第一步修改limits.conf文件,添加:#vim/etc/security/limits.conf*softnofile65536*hardnofile65536其中'*'表示修改所有用户的限制;soft或hard指定是修改软限制还是硬限制;65536指定要修改的新限制值,即最大打开文件数(请注意软限制值应小于或等于到硬限制)。修改后保存文件。第二步是修改/etc/pam.d/login文件,在该文件中添加以下行:#vim/etc/pam.d/loginsessionrequired/lib/security/pam_limits.so这告诉Linux在之后登录用户完成系统,应该调用pam_limits.so模块来设置系统对用户可以使用的各种资源的最大数量限制(包括用户可以打开的最大文件数量),pam_limits.so模块将来自/etc/security/limits。conf文件来设置这些限制。修改后保存此文件。第三步,查看linux系统级别的最大打开文件数,使用命令如下:#cat/proc/sys/fs/file-max32568这表示这个linux系统允许最大打开文件数同时(即包括所有用户的打开文件数之和)32568个文件,这是Linux系统级别的硬限制,所有用户级别的打开文件数限制不能超过这个价值。通常这个系统级的硬限制是Linux系统在启动时根据系统硬件资源情况计算出来的最大并发打开文件数的一个很好的限制。如果没有特殊需要,这个限制不要修改,除非你想在用户级别设置打开文件数的限制。超过此限制的值。修改这个硬限制的方法是修改/etc/sysctl.conf文件中的fs.file-max=131072。这是为了让Linux在启动完成后强制将系统级别的打开文件数硬限制设置为131072。修改后保存此文件。完成以上步骤后,重启系统。一般情况下,可以将Linux系统允许指定用户的单个进程同时打开的最大文件数限制为指定值。如果重启后使用ulimit-n命令限制用户可打开的文件数仍然低于上述步骤设置的最大值,可能是因为ulimit-n命令已经被使用用户登录脚本/etc/profile允许用户同时打开文件。文件数量有限。因为在通过ulimit-n修改系统限制用户同时打开的最大文件数时,新修改的值只能小于或等于上次ulimit-n设置的值,所以无法使用此命令增加的限制值。因此,如果存在以上问题,只能打开/etc/profile脚本文件,查看文件中是否使用了ulimit-n来限制用户同时打开的最大文件数。如果找到,删除这行命令。或者将其设置的值更改为合适的值,然后保存文件,用户可以注销并重新登录系统。通过以上步骤,对于支持高并发TCP连接处理的通信处理程序,解除了系统打开文件数的限制。