惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
博客园 - Franky
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
Last Week in AI
Last Week in AI
腾讯CDC
F
Full Disclosure
T
Tailwind CSS Blog
量子位
N
Netflix TechBlog - Medium
Stack Overflow Blog
Stack Overflow Blog
T
The Blog of Author Tim Ferriss
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
A
About on SuperTechFans
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
M
MIT News - Artificial intelligence
MyScale Blog
MyScale Blog
Blog — PlanetScale
Blog — PlanetScale
Engineering at Meta
Engineering at Meta
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Hugging Face - Blog
Hugging Face - Blog
aimingoo的专栏
aimingoo的专栏
博客园 - 【当耐特】
SecWiki News
SecWiki News
Recent Commits to openclaw:main
Recent Commits to openclaw:main
宝玉的分享
宝玉的分享
S
Schneier on Security
D
DataBreaches.Net
Cyberwarzone
Cyberwarzone
N
News and Events Feed by Topic
云风的 BLOG
云风的 BLOG
Vercel News
Vercel News
Google Online Security Blog
Google Online Security Blog
IT之家
IT之家
H
Hacker News: Front Page
T
Tor Project blog
H
Help Net Security
博客园 - 三生石上(FineUI控件)
The Cloudflare Blog
Help Net Security
Help Net Security
V2EX - 技术
V2EX - 技术
The GitHub Blog
The GitHub Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Security Latest
Security Latest
AI
AI

山月

在VS Code配置Obsidian風格Markdown編輯環境 – 山月 在Windows通过LM Studio使用Zotero MCP – 山月 禁用WordPress中Jetpack的AI助手按钮 – 山月 WordPress/MCP Adapter安装与维护指南 – 山月 WordPress服务器权限与所有权配置详解 – 山月 在Windows上為GnuCash啟用線上報價 (Finance::Quote) – 山月 Gitea Docker /var/empty 权限问题除错总结 – 山月 Bookwyrm由0.7.5升级至Production(e217a17)完整过程及疑难解答 – 山月 用正则表达式修改ruby标签 – 山月 为WordPress Syndication Links插件添加新的站点与图标的实现方法 – 山月 进入不断重启的Docker容器的命令行之方法 – 山月 自建Bookwyrm无法查询远端用户?——开启数据库扩展 – 山月 BookWyrm无法增添书本、作者、阅读进度……?——解决数据库自增序列问题 – 山月 俾Docker容器中的应用访问宿主机上的数据库服务 – 山月 QNAP NAS使用者注意!千万莫对MariaDB做这件事…… – 山月 解决Wikibase手动导入数据后无法新建实体之问题 – 山月 辰年再訪神保町 – 山月 如果Linux软件包常规升级失败——以python3-update-manager为例 – 山月 解决站点526报错:SSL证书配置错误 – 山月 風挾着陽光來 – 山月 和A.N.R.GHG插件说bye-bye – 山月 WordPress页面链接末尾出现“?swcfpc=1”后缀,是怎么回事? – 山月 安装、维护Monica PRM的一些笔记 – 山月 清理服务器空间的着手点 – 山月 关于Joplin Server文件上传大小上限 – 山月 如何优化PHP文件上传大小:完整指南 – 山月 WordPress站点部分地出现“严重错误”的一些可能的解法 – 山月 批量更改WordPress媒体URL – 山月 自托管WordPress编辑文章出现问题的排查法 – 山月 於Docker安裝sudo之方法 – 山月 于YunoHost网页版后台装pgAdmin4失败之解决方法 – 山月 解决WordPress多站点网络下异域名子站登录失败的问题 – 山月 Linux的SWAP配置建议与方法 – 山月 如何从一个.sql文件中恢复(导入)数据到MySQL数据库 – 山月 橙色的天,金色的鯉魚 – 山月 設置SoftBank光IP地址固定分配時MAC地址報錯之解決方法 – 山月 解决自托管WordPress与Jetpack通信之不畅 – 山月 解决WordPress上传超过100M文件失败的问题——用Cloudflare作为CDN服务时 – 山月 自托管WordPress迁至新服务器时可能遇到的一些问题 – 山月 Jetpack server port value报错之解决方法 – 山月 Nextcloud服务器目录中/data/updater-(12个英数字)文件夹可删除 – 山月 使WP IndieBlocks、Webmention两插件配合工作 – 山月 导致WordPress钩子(hooks)重复调用的一个可能性——插件重复安装 – 山月 为WordPress自定义贴文类型设置默认格式(post format) – 山月 为Micropub客户端所发内容设置默认post type – 山月 让WordPress的自定义post type支持post formats – 山月 在WordPress通过古腾堡块编辑器验证您的Mastodon身份 – 山月 如何将Mastodon上关注的人导入至Friendica – 山月 在WordPress上发Mastodon的一个选项:Shortnotes+Share on Mastodon – 山月 祝WordPress 20周年快乐!(节译) – 山月 更改IndieBlocks札记(note)、喜欢(like)slug之方法 – 山月 改变Friendica域名之方法 – 山月 爲WordPress添上在線Markdown、HTML互轉工具 – 山月 內排散記 – 山月 长毛象(Mastodon)简介:多中心化、细粒度公开、多样时间轴 – 山月 教ChatGPT讲福州话 – 山月 WordPress项目管理插件使用心得 – 山月 汉字词“地震”之前,日语中表达地震的本土词 – 山月 “幸”与“福”的区别 – 山月 Koha 22.05安装教程(于Ubuntu 20.04 LTS) – 山月 《日本外來語辭典》讀書筆記 – 山月 “传毒”——童年游戏回忆一则 – 山月 WordPress多站点网络分布于不同主域名时登录管理后台出现cookie错误的解决方案 – 山月 如何为WordPress多站点设置不同的子目录、子域名,甚至主域名? – 山月 重温《日语的历史》 – 山月 东京教父:关于爱与救赎 – 山月 2021年末,豆瓣更新了它的条款…… – 山月 WordPress报错“Briefly unavailable for scheduled maintenance.”的解决方法 – 山月 日语里的「原形」「辞书形」「终止形」是什么? – 山月 《福州方言大词典》读后感 – 山月 一種美觀的由Hubzilla分享RSS資訊的方法 – 山月 《我们仨》中与《宋诗选注》相关的记载 – 山月 亂彈文忠公宴番仔事 – 山月 一本清代土腔谜语集引发的回忆 – 山月 迎圣火 – 山月 凝滞在方言里的时光 – 山月 站在新庄园门前 – 山月 长星照耀州府 – 山月 虚拟币与赛博矿难 – 山月 记忆、记录与创造 – 山月 几日来写作微信推文的反思 – 山月 对OKR工作管理法的归纳总结 – 山月 同人誌之夢 – 山月 那里人很爱诗词 – 山月 从语言学看两性语言差异 – 山月 南门兜素菜馆 – 山月 闽海痛史 – 山月 东京的西方建筑遗产 – 山月 真实的华人电影 – 山月 记观《只有野兽知道》 – 山月 记早稻田祭 – 山月 《鬼灭之刃》日语札记 – 山月 颱風前夜的仙草凍 – 山月 首篇博文 – 山月 我到底是转厝了 – 山月 CM96暴走记 – 山月 薄暮逐島 – 山月 人与神的共振 – 山月 逐集罔讲罔听 – 山月 以往不谏 – 山月
PHP-FPM站点池配置调优以解决WordPress过度占用系统资源之问题 – 山月
2023-12-22 · via 山月

众所周知,WordPress,简直电老虎来的。

从笔者实际运营经验来看,查看服务器状态,就会经常看到php-fpm: pool (站点域名)这一进程,对鄙服务器CPU资源的占用,其最低线稳定于⅔,动辄则99%,甚至于满格。

为此可能需要调整pm.max_childrenpm.start_serverspm.min_spare_serverspm.max_spare_servers这些参数。

参数配置之位置

PHP-FPM站点池的配置文件通常位于/etc/php/(版本号)/fpm/pool.d/www.conf。当然,有时根据实际情况,修改的对象会是/etc/php/(版本号)/fpm/pool.d/(具体域名).conf

在一些环境下,上述文件可能不支持直接修改,或者修改后也不会永久性保存。这时则根据实际情况来找寻配置位置,例如网站根目录下的.user.ini(记得配置好正确的文件权限)。

参数之修改

在许多PHP-FPM默认配置文件里,pm模式会被设置为ondemand,而pm.max_children的值被设置为4。在ondemand模式下,PHP-FPM只会在请求到达时启动新的子进程,并在子进程空闲一段时间后关闭它们。这种模式对于低流量的网站是非常有效的,但对于高流量的网站可能会导致额外的CPU消耗,因为需要频繁地创建和销毁子进程。以下是一些可能的优化建议:

  1. 修改进程管理模式

    • 考虑将pm模式从ondemand更改为dynamic。在dynamic模式下,PHP-FPM将保持一定数量的空闲进程,以便能够更快地响应新的请求。
      pm = dynamic
      
  2. 增加最大子进程数

    • pm.max_children的值决定了同时能处理多少请求。如果服务器资源允许,你可能想要增加这个值以处理更多的并发请求。
      pm.max_children = 16  ; 或更高的值,视服务器资源而定
      
  3. 设置服务器进程数

    • dynamic模式下,你还可以设置pm.start_serverspm.min_spare_serverspm.max_spare_servers参数来控制空闲进程的数量。例如:
      pm.start_servers = 2
      pm.min_spare_servers = 2
      pm.max_spare_servers = 4
      
  4. 优化最大请求数

    • pm.max_requests参数决定了每个子进程在重新生成之前可以处理多少请求。这可以防止可能的内存泄漏。你可以根据贵站的具体情况调整这个值。
      pm.max_requests = 5000  ; 或其他适合你的网站的值,4000可能够用了
      
  5. 调整空闲进程超时

    • pm.process_idle_timeout参数决定了一个子进程在被关闭之前可以保持空闲多长时间。你可以根据需要调整这个值。
      pm.process_idle_timeout = 20s  ; 或其他适合你的网站的值
      

以上建议可以帮助你优化PHP-FPM的配置,以更好地处理高流量并减少CPU的消耗。每次修改配置后,确保重启PHP-FPM服务以使更改生效。同时,建议在一个测试环境中尝试这些更改,以确保它们不会影响贵站的正常运行。

PHP的其他调优方向

  1. PHP版本

    • 确保正在使用的是最新的PHP版本。新版本的PHP通常会提供更好的性能和错误修复。
  2. 慢日志

    • 启用PHP和MySQL的慢日志功能,以便识别和优化执行缓慢的代码和查询。

PHP之外的其他因素

WordPress网站报错和服务器资源过度使用,也可能是由多种因素造成。

本文仅聚焦于PHP配置,只不过若果按照本文方式修改,仍有问题,也可以考虑下如下方向:

  1. 插件问题

    • 有些插件可能会消耗大量的资源。尝试禁用所有插件,然后逐个重新启用,以确定是哪个插件造成的问题。
  2. 主题问题

    • 有些主题可能编写不佳或包含不必要的功能,从而消耗大量资源。尝试切换到一个简单的主题,如WordPress的默认主题,看看问题是否得到解决。
  3. 代码优化

    • 确保你的WordPress网站代码优化良好。这包括简化代码,删除不必要的代码,以及确保代码没有错误。
  4. 数据库优化

    • 数据库查询可能会消耗大量资源。使用数据库优化插件,或手动清理和优化数据库。
  5. 缓存

    • 安装和配置缓存插件,以减少服务器的负载。例如,你可以使用W3 Total Cache或WP Super Cache插件。
  6. CDN服务

    • 使用内容分发网络(CDN)来减轻服务器的负担,并加速网站加载速度。
  7. 服务器配置

    • 检查服务器配置,特别是PHP和MySQL的配置。可能需要调整某些设置以改善性能。例如,可能需要增加PHP内存限制或优化PHP-FPM配置。
  8. 服务器资源

    • 考虑升级到一个更强大的服务器,或者增加更多的CPU和内存资源。
  9. 定期监控

    • 使用服务器监控工具来跟踪资源使用情况,以便在问题发生时快速识别和解决。