Webman 性能压测与 Linux 内核调优

P粉328763957

P粉328763957

2026-05-21

1031人浏览

原创

webman高并发需调优linux内核:启用event扩展(epoll)、扩大tcp_max_syn_backlog与somaxconn至65535、开启tcp_timestamps和tcp_tw_reuse加速time_wait回收、提升fs.file-max及用户级nofile限制、调大tcp收发缓冲区。

webman 性能压测与 linux 内核调优 - php中文网

如果您在对 Webman 应用进行高并发压测时观察到 QPS 波动大、连接异常中断、CPU 利用率失衡或受压端无法承载预期并发量,则很可能是 Linux 内核默认参数未能匹配 Webman 的事件驱动模型与高连接密度场景。以下是针对该问题的多维度调优操作步骤:

一、启用 event 扩展并验证其有效性

Webman 基于 Swoole 或 Workerman 运行时,启用 event 扩展可将 I/O 多路复用从 select/poll 切换至 epoll(Linux)或 kqueue(BSD),显著降低高并发下的事件通知开销。该扩展对连接数超 5000 的压测场景具有决定性作用。

1、确认 PHP 编译时已启用 --with-event 参数,或通过包管理器安装 event 扩展:sudo apt install php-event(Debian/Ubuntu)。

2、在 php.ini 中启用扩展:extension=event.so。

3、重启 Webman 服务后执行 php --ri event,检查输出中显示 event support => enabled 且 backend 为 epoll。

4、使用 ab 工具对比压测:ab -n 2000000 -c 5000 -k http://172.18.155.51:8787/index/json,若未启用 event 时出现 apr_pollset_poll: The timeout specified has expired 错误而启用后压测正常,则验证成功。

二、扩大 TCP 连接队列容量

Webman 在高并发短连接场景下易因内核连接队列溢出导致 SYN 包被丢弃,表现为客户端连接超时或重传。需同步调大半连接队列(SYN Queue)与全连接队列(Accept Queue),并与应用层 listen backlog 值对齐。

1、编辑 /etc/sysctl.conf,添加以下参数:

net.ipv4.tcp_max_syn_backlog = 65535

net.core.somaxconn = 65535

2、执行 sudo sysctl -p 立即生效。

3、检查当前值是否更新:sysctl net.core.somaxconn,输出应为 net.core.somaxconn = 65535

4、确保 Webman 启动时 worker 配置中 listen 的 backlog 值不低于 65535,例如在 start.php 中设置:Worker::$defaultListenBacklog = 65535。

三、优化 TIME_WAIT 连接回收机制

大量短连接会快速堆积 TIME_WAIT 状态套接字,占用端口与内存资源,进而限制新连接建立速率。通过启用时间戳支持与安全复用策略,可在不破坏连接可靠性前提下加速回收。

1、在 /etc/sysctl.conf 中添加:

net.ipv4.tcp_timestamps = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_fin_timeout = 30

2、注意:tcp_tw_reuse 仅在 tcp_timestamps=1 时生效,否则配置静默失效。

3、执行 sudo sysctl -p 加载配置。

PyCharm 2026.2.0.1 Linux版
PyCharm 2026.2.0.1 Linux版

PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。

下载

4、验证生效:ss -s 输出中查看 tw 数量变化趋势,压测后应明显低于未调优状态。

四、提升系统文件描述符上限

Webman 每个 Worker 进程需为每个客户端连接分配一个文件描述符(fd),当并发连接数超过默认 1024 限制时,将触发 Too many open files 错误,直接终止新连接接纳。

1、设置系统级最大 fd 数:echo 'fs.file-max = 2097152' | sudo tee -a /etc/sysctl.conf。

2、执行 sudo sysctl -p 应用变更。

3、为运行 Webman 的用户配置用户级限制,在 /etc/security/limits.conf 中追加:

* soft nofile 1048576

* hard nofile 2000000

4、确保 Webman 启动方式为 systemd 或 shell 登录会话(非 cron 或 nohup 直接启动),否则 limits 不生效;重启服务后执行 ulimit -n 验证输出为 1048576

五、调整网络缓冲区与脏页写回参数

高吞吐 Webman 服务在持续响应 JSON 数据时,易因 TCP 接收/发送缓冲区不足引发丢包或延迟抖动;同时,后台脏页刷盘节奏不当会导致 I/O 突发阻塞,影响请求处理连续性。

1、在 /etc/sysctl.conf 中添加缓冲区配置:

net.core.rmem_max = 134217728

net.core.wmem_max = 134217728

net.ipv4.tcp_rmem = 4096 87380 67108864

net.ipv4.tcp_wmem = 4096 65536 67108864

2、添加脏页控制参数(适用于 SSD 存储):

vm.dirty_background_ratio = 15

vm.dirty_ratio = 40

3、执行 sudo sysctl -p 生效。

4、验证缓冲区值:getconf PAGESIZE 输出页大小后,cat /proc/sys/net/core/rmem_max 应返回 134217728

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

相关标签:

linux webman

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

2694

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

1672

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

1320

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

2675

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

2442

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

1660

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

1255

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

1444

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

210

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Apifox下载与安装手册
Apifox下载与安装手册

共0课时 | 0人学习

安装 Xdebug 并配置 phpstorm
安装 Xdebug 并配置 phpstorm

共1课时 | 128人学习