高并发数性能测试 Linux 设置问题

发布于 2024-06-29 21:41:32 字数 1946 浏览 41 评论 0

问题 1:一个进程文件句柄数限制(服务端+客户端)

因为每一个 tcp 连接都要占一个文件描述符,一旦这个文件描述符使用完了,新的连接返回给我们的错误是 too many open files 或者 Socket/File: Cannot open so many files。执行 ulimit -n 输出 1024 (默认 soft,ulimit -Hn 可查 hard),说明对于一个进程而言最多只能打开 1024 个文件,所以你要采用此默认配置最多也就可以并发上千个 TCP 连接。

软限制(soft limit)是指 Linux 在当前系统能够承受的范围内进一步限制用户同时打开的文件数;硬限制(hard limit)是根据系统硬件资源状况(主要是系统内存)计算出来的系统最多可同时打开的文件数量。通常软限制小于或等于硬限制

临时修改: ulimit -n 1000000 ,只对当前登录用户目前的使用环境有效,系统重启或用户退出后就会失效。

编辑 /etc/security/limits.conf 文件,( 修改完重新登录就可以见到), 修改后内容为

  • soft nofile 1000000
  • hard nofile 1000000

soft 是一个警告值,而 hard 则是一个真正意义的阀值,超过就会报错。soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值 nofile - 打开文件的最大数目星号表示针对所有用户,若仅针对某个用户登录 ID,替换星号。

问题 2:端口数量受限(客户端)

一般来说,单独对外提供请求的服务不用考虑端口数量问题,监听某一个端口即可。但是请求的发起方/客户端需要突破 6 万可用端口的限制。操作系统上端口号 1024 以下是系统保留的,从 1024-65535 是用户使用的。网络四元组/网络五元组四元组是指的是 {源 IP 地址,源端口,目的 IP 地址,目的端口} 系统用一个 4 四元组来唯一标识一个 TCP 连接.五元组指的是(多了协议) {源 IP 地址,目的 IP 地址,协议号,源端口,目的端口}实际上只有{源 IP 地址,源端口}确定对外 TCP 请求数量, 因为目的地址和端口已经确定。例如 EMQ server 的 IP+端口 1883

查看 cat /proc/sys/net/ipv4/ip_local_port_range
临时修改: echo "1024 65535"> /proc/sys/net/ipv4/ip_local_port_range
永久修改: /etc/sysctl.conf 增加 net.ipv4.ip_local_port_range= 1024 65535

并令其生效 sysctl -p 现在可以使用的端口达到 64510 个

问题 3:系统全局可用句柄数目限制(即包含所有用户打开文件数总和)

fs.file-max 是系统全局的可用句柄数目。

The value in file-max denotes the maximum number of file handles that the Linux kernel will allocate。

客户端发出大量请求(大概为 40 万时)会出现

[warn] socket: Too many open files in system

查看: cat /proc/sys/fs/file-max

当前会话修改,可以这么做: echo 1048576 > /proc/sys/fs/file-max 但系统重启后消失。

永久修改,要添加到 /etc/sysctl.conf 文件中: fs.file-max = 1048576 保存并使之生效: sysctl -p

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

绮烟

暂无简介

0 文章
0 评论
24 人气
更多

推荐作者

謌踐踏愛綪

文章 0 评论 0

开始看清了

文章 0 评论 0

高速公鹿

文章 0 评论 0

alipaysp_PLnULTzf66

文章 0 评论 0

热情消退

文章 0 评论 0

白色月光

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文