信科网络 · 11 年只做 WordPress | 建站 / 主题 / 插件 / 商城 / 迁移 / 托管 | 累计服务 3000+ 企业 | 源码全交付
服务热线:13280692153 邮箱:web@wordpressx.com
工作日 08:30-18:0013280692153 免费诊断
首页/WordPress 教程/WordPress 500 错误与内存超限:从 1G 内存到并发优化
BLOG

WordPress 500 错误与内存超限:从 1G 内存到并发优化

分类 发布 2026-10-08

500 Internal Server Error 不是一种错误,是一类。它只说明服务器在处理请求时异常终止了,具体是 PHP 致命错误、执行超时、内存打满还是权限不对,全都要另外找。所以看到 500,先去翻日志,不要先去改代码。

这篇按「先定位来源、再拆两层内存限制、最后算并发」的顺序写。1G 内存的机器能撑多少并发,是问得最多也最容易算错的问题,放在中间单独讲。

500 的四种来源

先把范围缩小。500 出现在什么范围、什么时候,比错误本身更有信息量。

现象 常见原因 处理
所有页面 500,包括 /wp-admin/ PHP 致命错误、wp-config.php 语法错、切换 PHP 版本后扩展缺失 看 error_log 首行;回退 PHP 版本;用 php -l 检查语法
只有个别页面 500 单页内存超限、插件在该页执行了重查询、脚本超时 调 memory_limit 与 max_execution_time,再查慢查询
间歇性 500,刷新就好 PHP-FPM 进程打满、MySQL 连接数占满、上游超时 看 php-fpm 日志里的 max_children 告警
上传图片或导入数据时 500 内存、超时、上传体积三重限制同时触发 三项一起调,只调一项会继续失败
刚改完 .htaccess 就 500 伪静态规则语法错误,或模块没加载 先备份再删掉 .htaccess,让 WordPress 重建

先拿到真实报错

三个地方看:wp-content/debug.log(要先在 wp-config.php 开 WP_DEBUG 和 WP_DEBUG_LOG)、主机面板的 error_log(一般在站点根目录或 logs/)、nginx 的 error.log 与 php-fpm 的慢日志。三条日志的时间戳能对上,才能拼出完整链路。只有 500 没有日志,通常说明错误发生在 PHP 启动之前,比如 php-fpm 进程起不来。

tail -n 100 /www/wwwlogs/example.com.error.log
grep -iE "fatal|memory|timeout" /www/wwwroot/example.com/wp-content/debug.log | tail -n 50

日志里看到「Allowed memory size of 134217728 bytes exhausted」,就是内存;看到「Maximum execution time of 30 seconds exceeded」,是超时;看到「Permission denied」或者「failed to open stream」,是权限或磁盘满。三种的处理方式完全不同,先认清再动手。

两层内存限制,只改一个没用

WordPress 的内存有两个闸门,很多人只改了一个,所以会出现「明明调到 512M 还是报 256M」。第一层是 php.ini 的 memory_limit,这是硬上限,PHP 进程不能超过。第二层是 WordPress 通过 WP_MEMORY_LIMIT 调的 ini_set,它只能往低了调,不能突破硬上限。

层级 配置位置 作用范围 常见坑
PHP 硬上限 php.ini 的 memory_limit 整个 PHP 进程 改了 php.ini 没重启 php-fpm,配置不生效
WordPress 前台 wp-config.php 的 WP_MEMORY_LIMIT 前台请求 写得比 php.ini 大,实际还是按 php.ini 走
WordPress 后台 WP_MAX_MEMORY_LIMIT wp-admin 与 cron 只调前台,后台导入仍然白屏
单脚本临时提升 ini_set( ‘memory_limit’, ‘512M’ ) 当前请求 主机禁用 ini_set 时静默失败
; php.ini
memory_limit = 256M
max_execution_time = 120
upload_max_filesize = 64M
post_max_size = 64M
// wp-config.php
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );

改完不要凭感觉,去「工具 → 站点健康 → 信息 → 服务器」看实际生效值。共享主机常用 disable_functions 禁掉 ini_set,这种情况 WP_MEMORY_LIMIT 写了也无效,只能找主机商提,或者换到能改 php.ini 的环境。

1G 内存到底能撑多少并发

先纠正一个常见误解:1G 不是「同时服务 1G 的请求」,而是「所有 PHP 进程加起来不能超过 1G」。每个 PHP-FPM 进程处理一个请求,峰值内存在 60M 到 150M 之间浮动,取决于插件数量和当前页面。所以并发数是「可用内存除以单进程峰值」,不是「内存除以页面大小」。

可用内存也不是 1024M,要扣掉系统、MySQL、Redis、nginx:

总内存 1024M
- 系统与 nginx        约 150M
- MySQL(含缓冲池)    约 300M
- Redis(可选)        约  64M
= 留给 PHP-FPM        约 500M
单进程峰值 1G 机器(可用 500M)的并发 典型场景
60M 约 8 个 纯展示站,少量插件,无页面构建器
100M 约 5 个 装了缓存、SEO、表单插件
150M 约 3 个 WooCommerce 或页面构建器
200M 以上 2 个以内 电商 + 多语言 + 一堆插件

也就是说 1G 的机器真实并发只有 3 到 8 个。但静态资源走 CDN、页面走缓存之后,单次访问从「执行 PHP」变成「直接返回 HTML」,同样 1G 能扛的日 PV 可以从几千涨到几万。所以内存不够的第一反应不该是升配,而是先看缓存命中率。这一点在 速度优化 里说了很多遍,仍然是最划算的一步。

对应的 php-fpm 配置:pm 用 dynamic,pm.max_children 按上表设,别设成 50。设大了不是更快,而是一旦并发上来,所有进程互相挤,OOM Killer 先把 MySQL 杀掉,表现就是「网站 500,数据库连不上」。

pm = dynamic
pm.max_children = 6
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 500

pm.max_requests 设 500 的作用是让进程处理一定请求数后自动重启,防止内存泄漏累积。有些插件确实会漏内存,这个参数能兜住一部分。

内存大户:图片处理和插件

按经验排,吃内存的顺序是:图片生成缩略图、大型导入导出、页面构建器渲染、多语言插件、安全扫描插件。一张 6000×4000 的 JPEG 解码成位图大约要 96M(宽 × 高 × 4 字节),再叠加 GD 或 Imagick 的中间副本,单张就能冲到 200M 以上。批量重新生成缩略图时一个请求处理几十张,必然超限。

处理办法是分批。用 WP-CLI 的 media regenerate 加 –only-missing,或者一次只处理固定几个 ID。上传前把图片压到 2000px 宽以内,比事后调内存有用得多。

wp media regenerate --only-missing --yes
wp media regenerate 1201 1202 1203 --yes

插件侧的重点是「每个请求都跑的东西」:自动翻译、相关文章、访问统计、安全扫描。这些如果写了没走索引的查询,或者每次请求都拉全表,内存和 CPU 一起涨。用 Query Monitor 看页面查询数和峰值内存,超过 80 次查询、峰值超过 120M 的页面要单独优化。重复功能的插件(两个缓存、两个 SEO)先删一个,这类叠加的消耗最没有意义。

升级服务器之前,先按这个顺序做

大部分人一遇到 500 就加内存,加完管一个月,然后照旧。正确的顺序是从「减少请求」开始,最后才动硬件:

  1. 开页面缓存,把首页和文章页静态化,命中率做到 80% 以上。这一步收益最大,通常能把 PHP 请求砍掉八成。
  2. 图片和静态资源走 CDN,顺便开 WebP,带宽和并发一起降。
  3. 清理数据库:修订版本、垃圾评论、过期 transient、孤儿 postmeta。这几张表膨胀后,连后台列表页都要吃上百 M,清理方法见 数据库优化。
  4. 关掉不用的插件,尤其是功能重叠的。每少一个插件,单请求内存和查询数都会降一点。
  5. 把 PHP 升到 8.2 或 8.3,同配置下吞吐通常比 7.4 高两成以上,内存也更省。升级前先在测试环境跑一遍,老插件在 8.x 上报 deprecated 是常态。
  6. 加对象缓存(Redis),减轻 MySQL 压力,间接降低单请求耗时和内存占用。
  7. 最后才是加内存或换机器。走到这一步还没解决,说明瓶颈确实在硬件。

顺序反了会怎样:先升到 4G,插件还是那堆,缓存还是没开,一个月后照样 500,只是把故障推迟了一个月,成本却已经付了。

防复发

  • 把 php.ini 的 memory_limit 和 WP_MEMORY_LIMIT 写成一致的值,避免「以为调了其实没调」。
  • 监控里加三条:PHP-FPM 的 max_children 触顶次数、MySQL 连接数、502/500 比例。有告警比事后翻日志强。
  • 每次装插件前后各跑一次 Query Monitor,对比查询数和内存,涨得离谱的直接换掉。
  • 图片上传尺寸在主题或插件里限制死,编辑上传 8000px 原图的习惯要改。
  • 500 出现时先看时间点,对上「刚更新了什么」,八成能直接定位。

如果 500 伴随数据库报错,比如 MySQL server has gone away、Table is marked as crashed,先看 数据库报错处理,那属于另一条线,单加内存解决不了。如果页面直接白屏没有状态码,按 白屏排查 的顺序走。

INDUSTRIAL BELT

扎根中国制造产业带
懂工厂,才懂出海

从胶东半岛到珠三角,从长三角到中原腹地,每一片产业集群都有自己的出口节奏与买家画像。信科网络长期扎根产业一线,把工厂的产品语言翻译成海外采购商听得懂的搜索语言,让每一分投入都对着真实的询盘去。

lingwu

灵武外贸网站建设

灵武,古称灵州。地处宁夏引黄灌区的精华地带,素有“塞上江南”之美誉。全市总面积4639平方公里,总人口23.7万,其中回族人口11.1万人。全市非农业人口11.5万人,占总人口的48.5%。1996年5月灵武…

kaizhou

开州外贸网站建设

开州区隶属于重庆市,位于重庆市东北部,三峡库区小江支流回水末端,介于北纬30°49′30″-31°41′30″、东经107°55′48″-108°54′之间,西邻四川省开江县,北依大巴山接城口县和四川省宣汉县,东毗云…

qingtongxia

青铜峡外贸建站

青铜峡市位于黄河上游宁夏平原中部,地势平坦,牛首、峡口两山对峙,黄河穿峡而过,山光水色相映,宛如开然铜镜,“青铜峡”由此而得名。地处西北内陆,东部季风区与西部干旱区域的交汇地带,属…

yubei

渝北外贸建站

重庆市渝北区位于重庆市区北部,是1994年12月17日经国务院批准,在撤销原江北县建制基础上设立的新区。渝北区是重庆市的行政区,原为江北县,南端为主城区一部分的龙溪镇,北端与四川省接壤,…

nanchuan

南川WordPress建站

南川地处四川盆地东南边缘与云贵高原过渡地带,位于重庆市南部,东南与贵州省道真、正安、桐梓县接壤,东北与武隆县为邻,北接涪陵区,西连巴南区、綦江县、万盛区。总面积2602平方千米。总人…

xiongxian

雄县WordPress建站

河北省保定市雄县位于东经116°06',北纬38°59'。平均海拔10米。处于冀中平原的京、津、保三角腹地,南倚“华北明珠”白洋淀,北靠“京南小香港”___白…

yunhe

运河Shopify建站

运河区,隶属于河北省沧州市,也是沧州市政府所在地,因京杭大运河贯穿全境而命名。运河区位于沧州市区西部,总面积117.7平方公里,人口30.9万(2013年),辖1乡1镇、6个街道办事处,63个行政…

zhongwei

中卫Shopify建站

中卫地处黄河前套之首,位于宁夏回族自治区中西部、宁、甘、内蒙古三省区交界点上,辖中宁、海原两县和中卫城区,总面积16986.1平方公里,其中川区面积3681.1平方公里,占21.67%,山区面积1330…

shizhu

石柱外贸推广

石柱土家族自治县简称石柱县,位于重庆市东部、长江南岸、山峡库区腹心,是集少数民族自治县、三峡库区淹没县、国家扶贫工作重点县于一体的特殊县份。幅员面积3012平方公里,辖32个乡镇,总人…

helan

贺兰外贸推广

 贺兰县位于中国黄土高原西北内陆,宁夏回族自治区北部,属大陆性气候,中温带干旱气候区。土地总面积按1987年土地调查为1254.6平方公里。旅游资源丰富,历史积淀深厚。粮食作物以小麦、…

xingqing

兴庆Google SEO

金凤区于2002年11月1日成立,是宁夏回族自治区首府银川市的市辖区之一,位于市区中部,东到唐徕渠,西到包兰铁路,南接永宁县,北临贺兰县,辖良田、丰登2个镇,上海西路、北京中路、长城中路…

banan

巴南Google SEO

巴南区的前身是千年历史名邑巴县。早在3000多年前的商代,巴人就在此繁衍生息,立国建都。秦代置巴郡,南朝齐代置垫江县,北周时改称巴县并沿袭至1995年。1995年经国务院批准撤县建区,成立巴…

xiushan

秀山GEO优化

秀山土家族苗族自治县,位于重庆市东南部,武陵山脉中段,四川盆地东南缘的外侧,为川东南重门户。与湖南省、湖北省、贵州省毗邻,326国道和319国道贯穿全县。距长沙604公里、武汉656里、贵阳5…

jiangjin

江津GEO优化

重庆市江津区,是一个历史文化悠久的城市,以地处长江要津而得名。江津位于重庆西南长江之滨,距渝中区公路里程50公里;铁路里程65公里;水路里程72公里。江津城区气候特征与重庆相近,但综合…

anxin

安新谷歌SEM

安新县位于河北省中部,县境东与雄县、任丘相连;南与高阳接壤;西与清苑、徐水交界;北与容城毗邻。总面积738.6平方公里。县人民政府所在地安新镇是安新县政治、经济、文化和交通中心,北距…

ningxia

宁夏谷歌SEM

wuxi

巫溪Facebook广告

巫溪县地处大巴山东段南麓的渝、陕、鄂三省(市)结合部分,东接湖北省神农架林区、竹溪县,南临重庆市奉节、巫山两县,西与重庆开县、云阳接壤,北连重庆城口县和陕西省镇坪县。  

lulong

卢龙Facebook广告

卢龙县地处河北省东北部、隶属于秦皇岛市,总面积961平方公里,全县辖12个乡镇、548个行政村,总人口41.5万人,其中农业人口38万人。卢龙,历史悠久,人杰地灵。1988年,卢龙县被确定为全国对…

beibei

北碚Yandex推广

北碚区位于重庆市区西北郊的缙云山下,嘉陵江畔,幅员面积753平方公里,人口63万,是重庆的风景旅游区和智力型清洁工业基地。本世纪20年代末,由爱国实业家卢作孚先生开拓,抗战时期为陪都重庆…

jizhou

冀州Yandex推广

冀州市隶属河北省衡水市,地处华北平原腹地,北距首都300公里,西距省会石家庄110公里,辖区总面积918平方公里,东与枣强县(衡水)为邻,南与南宫市、新河县(邢台)接壤,西与宁晋县(邢台)…

fuling

涪陵TikTok推广

重庆市涪陵区,邑枕长、乌两江,素为乌江流域物资集散地,有渝东南门户之称,是闻名遐迩的中国“榨菜之乡”。全区幅员面积2946平方公里,辖1个经济技术开发区、1个私营经济示范区和44个乡镇、街…

为什么一定要选懂产业带的出海服务商?建材丝网的欧洲建筑商看资质与交期,工业橡塑的中东工程商问耐温与工况,毛皮服饰的俄罗斯分销商算的是季节与毛利。买家不同,决策逻辑就不同;信科网络把这些差异拆进网站结构、关键词地图和投放策略里,用他们习惯的方式出现在他们搜索的地方。