麒麟系统如何管理由Web服务器产生的海量进程

老晨小哥_3528

老晨小哥_3528

2026-09-09

662人浏览

原创

pidstat -w 1可实时监控单个进程的自愿(cswch/s)和非自愿(nvcswch/s)上下文切换,vmstat 1观察系统级cs值判断整体调度压力,perf record -e context-switches定位具体切换原因,/proc/pid/status提供累计切换数用于差值分析。

麒麟系统如何管理由web服务器产生的海量进程

确认Web服务器进程是否失控

打开终端,执行 pidstat -w 1 持续观察 30 秒,重点看 nvcswch/s(非自愿上下文切换)是否稳定高于 12000,同时 %usr 低于 40%——这说明 Web 服务正频繁 fork 短命子进程(如 CGI 脚本、PHP-FPM 动态子进程、Nginx 的 worker 进程反复 respawn),而非真实 CPU 密集型负载。

再运行 ps -eo pid,ppid,comm,%cpu,%mem --sort=-%cpu | head -15,若列表中大量出现 php-cgipython3shcurl 且 PID 随刷新剧烈跳变,基本可断定是 Web 请求触发的进程风暴。

限制 Web 服务进程数量与生命周期

方法一:Nginx + PHP-FPM 场景下收紧子进程池

编辑 /etc/php/7.4/fpm/pool.d/www.conf(路径依 PHP 版本调整),将 pm.max_children 改为 【不超过物理核心数×2】(例如 4 核机器设为 8),再把 pm.start_serverspm.min_spare_servers 统一设为 4,避免空闲时也维持大量僵尸进程。

重启服务:sudo systemctl restart php7.4-fpm nginx。注意:改完不重启,配置永不生效。

方法二:Apache 启用事件 MPM 替代 prefork

执行 sudo a2dismod mpm_prefork && sudo a2enmod mpm_event,然后编辑 /etc/apache2/mods-available/mpm_event.conf,将 MaxRequestWorkers 设为 64(默认 150 易撑爆),ThreadsPerChild 设为 25(单线程替代单进程)。最后 sudo systemctl restart apache2

方法三:禁用 Web 应用中危险的 exec() 类调用

检查网站根目录下所有 PHP 文件,搜索 exec(shell_exec(system(passthru(,凡非绝对必要(如调用 ffmpeg 转码),一律替换为内置函数或删除——这些调用每请求一次就 fork 一个新进程,是海量进程的直接源头。

隔离并冻结异常 Web 子进程组

第一步:按命名特征批量识别

执行 pgrep -f "php.*index\.php\|python3.*wsgi\.py\|sh.*cgi",输出一串 PID;若为空,说明当前无活跃异常进程,无需继续。

第二步:对已确认的非核心 Web 子进程发送 STOP 信号

将上一步 PID 列表粘贴进命令:sudo kill -STOP $(pgrep -f "php.*index\.php")。这不会终止进程,只是暂停其调度,给排查留出窗口期。

Easy-Peasy
Easy-Peasy

Easy-Peasy.AI是一款集合写作、图片、音频和自动化模板的多功能 AI 内容平台。

下载

第三步:验证冻结效果

立即运行 pidstat -w 1 3,对比前值——若 nvcswch/s 在 3 秒内跌至 3000 以下,说明冻结成功;若仍居高不下,说明有其它进程(如 Node.js cluster 或 Python asyncio 子进程)未被匹配,需扩展 pgrep 正则表达式。

为 Web 服务进程绑定专用 CPU 核心

先查当前 Nginx 主进程 PID:pidof nginx(通常返回两个数,取第一个,即 master 进程)。

执行 sudo taskset -c 4-7 -p FIRST_PID(假设你有 8 核 CPU,预留核心 4~7 专供 Web 服务),这会让 Nginx worker 进程只在指定核心上调度,避免与其他桌面进程争抢导致上下文切换爆炸。

【关键前提】必须先停用 ukui-power-manager,否则它会在“空闲”时强行迁移或降权该进程组——执行 sudo systemctl mask ukui-power-manager 并重启系统生效。

用 systemd 服务配置强制资源上限

第一步:编辑 Nginx 服务单元文件

执行 sudo systemctl edit nginx.service,在打开的空白文件中写入:

[Service]
MemoryLimit=1G
CPUQuota=75%
TasksMax=200

第二步:重载并重启

sudo systemctl daemon-reload && sudo systemctl restart nginx。此时即使 PHP 脚本疯狂 fork,systemd 也会在达到 200 个任务或内存超 1G 时自动 kill 最老的子进程,防止雪崩。

第三步:验证限制是否加载

运行 systemctl show nginx.service | grep -E "(MemoryLimit|CPUQuota|TasksMax)",输出应含你刚设置的三个值,缺一则配置失败。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

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

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

417

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

820

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2372

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

816

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

689

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

374

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2136

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

3912

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

627

5

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何在 Windows 11 上安装 XAMPP
如何在 Windows 11 上安装 XAMPP

共1课时 | 193人学习

Java 教程
Java 教程

共578课时 | 186.3万人学习

【web前端】Node.js快速入门
【web前端】Node.js快速入门

共16课时 | 2.6万人学习