TONY 发表于 2026-08-22 08:31:06

服务器内存优化:老站长省下几千块服务器费的实战干货

前两个月我手里那个日活12万的站点,阿里云突然弹告警说内存占用持续超过90%,动不动就OOM杀进程,打开后台慢到想哭,升级内存一个月得多花三百多,一年小四千。我肉疼得不行,折腾了一周,硬生生把内存占用压到了35%,省了这笔冤枉钱。

先搞清楚你的内存到底被谁吃了


很多新手站长一看到内存告警就直奔充值页面加配置,根本没坐下来查查,内存到底是被哪个进程吃光的。说实话这纯纯给云厂商送KPI,我最早入行也干过这种傻事。


查内存占用很简单,Linux服务器装个htop就能一目了然,哪个进程吃了多少内存,排序一看直接拎出来。百分之八十的情况,罪魁祸首都是你没调好的PHP-FPM、跑满缓存的MySQL,或者是不知道什么时候偷偷跑起来的垃圾进程。


https://obgeo.oss-cn-beijing.aliyuncs.com/pvc-articles/817e3a57-54b1-42fa-bc4c-2b08756e26a6.jpg

Linux服务器htop内存占用进程查看截图


这里要纠正一个绝大多数新手都搞反的误区:top命令里的buff/cache不是被占用的内存,是系统拿来缓存文件加速用的,根本不需要慌。你真正要算的,是总内存减去free,再减去buff/cache,剩下的才是真的被进程用掉的内存。我最早看错数值,差点就冲了两千块升级配置,现在想想都肉疼。


还有一种情况,你查了一圈所有进程加起来的内存也不对,差了大几百M找不到去哪了,那大概率是有进程已经退出了但是内存没释放,这种时候重启一下服务就能解决,别嫌麻烦,很多大问题重启五分钟就好,比你调一下午参数有用多了。


最容易出效果的几个优化手段,亲测有用


查完谁占了内存,接下来就是挤水分,我把这些折腾出来的干货按效果排序,第一个调,效果最明显。


第一个就是进程池参数调优,这是百分之七十站点都能挤出内存的地方。就拿最常见的PHP-FPM来说,很多人一键装环境之后,默认动态进程池开了上百个max_children,一个进程平均占二三十M,一百个就是小3G,你一个中小站点日活几万,并发顶天一百,哪里用得到这么多?


我自己的做法,日活十万以内的站点,直接把PHP-FPM改成ondemand模式,max_children设成20就够,来了请求才起进程,请求结束直接杀掉释放内存。我改完参数重启,一下就省出了快1G的内存,当时看到那个内存占用曲线往下掉,差点蹦起来。


Nginx这边也别放过,把所有静态资源交给Nginx直接处理,开长连接,开gzip压缩,别让静态请求过PHP,不仅省内存,访问速度还能提一大截。


第二个就是关掉没用的服务,你一个只跑站点的云服务器,要图形界面干嘛?要自带的邮件服务干嘛?要FTP干嘛?现在都用sftp传文件,那些自带的闲置服务,开着就占内存,我帮朋友排查过一次,他的CentOS图形界面占了快1G内存,直接停掉禁用开机启动,一下子就省出来了。


第三个是内核参数调优,别信网上那些乱七八糟的万能参数,很多都是十年前的老黄历了。比如vm.swappiness,网上都说设成0,现在新的Linux内核根本不推荐,设成10才对,太高会频繁 swap 卡机器,太低反而容易提前触发OOM。还有一定要关掉透明大页,不管你跑MySQL还是Redis,开着透明大页都会导致内存碎片化,占用越来越高,关了之后稳定太多。


https://obgeo.oss-cn-beijing.aliyuncs.com/pvc-articles/4ef28f0c-3477-4ea2-89b6-0f2110e22889.jpg

服务器内存优化前后占用对比图


缓存这块也得说,别啥都往缓存里塞,也别不用缓存。把热门的文章数据、用户会话存在Redis,别放MySQL,能帮MySQL省大几百M内存,访问还更快。我自己现在把全站的静态页面都做了缓存,一年多都没出过问题,内存占用稳得一批。


这些冷门坑,我踩过才告诉你


https://obgeo.oss-cn-beijing.aliyuncs.com/pvc-articles/230929ef-f3b8-46bf-aad6-538ef6d891f4.jpg

这些冷门坑,我踩过才告诉你


调完上面这些,大多数站点内存都能下来,要是还是高,那你多半是踩了这些冷门坑。


第一个坑就是内存泄漏。我去年碰见过一个第三方WordPress插件,每次后台访问都漏个几M内存,跑一天就能把内存吃光,只有重启能好,我查了三天才查到是它的问题,删掉之后世界都清净了。怎么查内存泄漏?隔十分钟看一次进程的RSS占用,一直涨不跌,那十有八九就是泄漏了,要么更,要么换,别拖着。


第二个坑,容器环境忘了限内存。现在很多人都用Docker跑服务,图方便,但是很多人跑的时候不设内存限制,一个异常的容器就能把整台服务器的内存吃光,你在htop看还找不到具体是谁,因为所有进程都算在宿主机里了。我上次跑一个Node爬虫服务,没设限制,那货一下吃了我3G内存,后来给每个容器都加上--memory限制,最多给你分1G,出事也不影响整个服务器,稳多了。


第三个坑,过度优化。说实话,你没必要把内存压到10%以内,系统留点内存当buff/cache,访问速度反而更快。我现在就把内存维持在30%-40%,剩下的都给系统当缓存,用户打开页面比之前快了一倍,SEO排名还涨了两个位置,纯属意外之喜。


折腾完这一圈,最大的感受就是,很多时候不是你的服务器性能不够,是太多内存浪费在不该用的地方了。挤挤水分,一年省下来大几千,拿去买个好点的SEO工具,或者存起来买点别的,不比给云厂商交智商税强?

yydm004 发表于 2026-08-23 09:20:47

内容写得很详细,逻辑也很清晰,对新手来说非常友好,支持一下楼主。

ntyt0513 发表于 2026-08-23 18:36:47

看了这么多帖子,还是觉得你这篇最实在,条理清晰又容易理解。

微当家 发表于 2026-08-25 02:24:46

楼主考虑得很全面,不仅讲了方法,还提到了注意事项,非常贴心。

辰宇轩 发表于 2026-08-25 06:37:43

不仅内容好,语气也很温和,这样的交流氛围真的很不错。

scf4010 发表于 2026-08-25 07:09:01

看完很有启发,也引发了我不少思考,有空也想分享下自己的看法。

0000111 发表于 2026-08-25 23:22:33

感谢楼主愿意花时间分享,让我们这些后来者能少踩很多坑。

爱浮云 发表于 2026-08-25 23:42:54

看完楼主的分享感觉很有收获,感谢这么用心的整理,学到很多新知识。

猪头就是猪头 发表于 2026-08-26 05:52:42

非常同意楼主的看法,现实中确实是这样,很多人都忽略了这一点。

雨的味道 发表于 2026-08-26 20:00:18

很多点我之前都没想到,楼主一提醒才恍然大悟,收获很大。

层林尽染 发表于 2026-08-27 12:57:43

说得很客观中立,没有偏激言论,理性讨论就该是这个样子。

样样 发表于 2026-08-27 17:39:58

对新手特别友好,解释得很细致,就算零基础也能看懂大半。

qwe13136564 发表于 2026-08-28 06:34:22

楼主的经历很有参考价值,给了我很多新的思考方向,非常感谢。

小歪大歪 发表于 2026-08-28 08:26:57

页: [1]
查看完整版本: 服务器内存优化:老站长省下几千块服务器费的实战干货