更新时间:2021-08-13 10:44:51 来源:极悦 浏览876次
众所周知,Linux在默认参数s下不能很好地支持高并发,主要受单个进程最大打开文件数s、内核TCP参数和IO事件分配机制的限制。下面从几个方面调整Linux系统支持高并发环境。
如果没有,请关闭或卸载iptables防火墙并阻止内核加载iptables模块。这些模块会影响并发性能。
每个进程的最大打开文件数限制
在一般的发行版中,单个进程最多可以打开1024个文件,远远不能满足高并发的要求。调整过程如下:在ා输入,提示:
# ulimit –n 65535
设置root可以为单个进程打开的最大文件数为65535。如果系统回显类似“不允许操作”,则说明上述限制修改失败。实际上, 中指定的值超出了 Linux 系统对用户打开文件数的软或硬限制。因此,有必要修改Linux系统对打开文件数的软硬限制。
第一步是修改limits.conf文件并添加:
# vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
其中'*'表示修改了所有用户的限制;soft or hard 指定是修改软限制还是硬限制;65536 指定要修改的新限制值,即最大打开文件数(请注意软限制值应小于或等于硬限制)。修改后保存文件。
第二步:修改/etc/pam.d/login文件,在文件中加入如下一行:
# vim /etc/pam.d/login
sessionrequired /lib/security/pam_limits.so
这告诉Linux在用户登录后应该调用PAM_limits.so模块来设置用户可以使用的资源数量的最大限制(包括用户可以打开的最大文件数),以及PAM_limits。所以模块会从 /etc/security/limits.conf 文件中读取配置来设置这些限制。修改后保存此文件。
第三步:检查Linux系统级别的最大打开文件数。使用以下命令:
# cat/proc/sys/fs/file-max
32568
这说明可以同时打开的最大文件数(包括所有用户打开的文件总数)为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连接处理的通信处理程序,解除了系统对打开文件数的限制。
在Linux系统下,TCP连接断开后,在释放端口之前,会保持一定的等待状态。当并发请求过多时,会产生大量的时间_等待状态的连接如果不能及时断开,会占用大量的端口资源和服务器资源。这时候我们可以优化TCP内核参数来设置time_等待状态的端口被清除。
以上就是极悦小编介绍的"Linux高并发服务器调优",希望对大家有帮助,想了解更多可查看Java极悦在线学习。极悦在线学习教程,针对没有任何Java基础的读者学习,让你从入门到精通,主要介绍了一些Java基础的核心知识,让同学们更好更方便的学习和了解Java编程,感兴趣的同学可以关注一下。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习