2GB小内存服务器总是内存紧张,三板斧让你的服务器稳如老狗~

2G内存不够用?不是机器太弱,是你还没“调”它。

阿里云99元那款ECS,2核2G3M,续费不涨价,能用到2029年。很多人拿它当入门建站机,跑WordPress、搭小项目。

图片

但用着用着就会发现一个问题:内存不够。

2G内存,跑个宝塔面板 + MySQL + PHP + Nginx,稍微多几个进程就开始告急。

阿里云服务器ECS 99元1年,续费同价: https://www.aliyun.com/minisite/goods
腾讯云轻量云服务器: https://cloud.tencent.com/act/cps/redirect?redirect=36719
京东轻量云服务器: https://3.cn/1YX-MxJv

我自己也用了几年这台机器,分享三个“续命”方法。

第一板斧:开启Swap,给内存加个“保障”

Swap就是把磁盘划一块当内存用。物理内存不够时,系统把不常用的数据挪到Swap里,腾出物理内存给活跃进程。

图片

对2G服务器来说,这是最有效的保命手段。

可以在云助手中,一条命令搞定:

acs-plugin-manager --exec --plugin ACS-ECS-SwapConfig --params --enable

它会根据内存大小自动设置Swap。2G内存的话,Swap大小就是4G。

配置完用 free -h 看一眼,Swap那行显示出来就对了。

注意: Swap是以防万一用的,不是性能提速器。频繁用Swap意味着磁盘IO暴增,系统反而会变慢。它是“防崩溃”,不是“提性能”。

第二板斧:屏蔽垃圾蜘蛛和AI爬虫

这是被很多人忽略的内存杀手。

你辛辛苦苦优化的网站,可能有一大半请求来自根本没用的爬虫。它们不带来流量核好处,只消耗服务器资源,包括内存,CPU,带宽等。

图片

宝塔面板用户可以在“网站设置 → 配置文件”里加屏蔽规则或者防火墙中添加:

if ($http_user_agent ~* (SemrushBot|AhrefsBot|MJ12bot|DotBot|BLEXBot|ZoominfoBot|CCBot|GPTBot|ChatGPT-User|Bytespider)) {
    return 403;
}

这些都是典型的“白嫖型”爬虫:

  • SemrushBot / AhrefsBot / MJ12bot:SEO分析工具,疯狂爬你的页面只为分析数据
  • DotBot / BLEXBot / ZoominfoBot:商业数据采集,对你的内容没兴趣
  • CCBot:Common Crawl,专门给AI训练喂数据
  • GPTBot / ChatGPT-User:OpenAI的爬虫,抓你内容训练模型
  • Bytespider:字节跳动的爬虫

判断标准很简单: 你不需要它的搜索引擎流量,就别让它爬,我自己长期收集整理了挺多各种垃圾蜘蛛的UA。感觉还是挺有用的。

第三板斧:服务调优,把浪费的内存挤出来

PHP-FPM:别让进程数失控

宝塔默认的 pm.max_children = 50,对2G机器太大了。

每个PHP-FPM进程吃20-80MB内存。50个进程全开,内存直接见底。

计算公式: 可用内存 ÷ 单进程内存占用 ≈ 合理进程数。

2G内存,留给PHP大概500-700MB。按单进程40MB算,pm.max_children 设15-20就够了。

在宝塔“PHP设置 → 性能调整”里改,用动态模式,不要静态模式。

图片

MySQL:给缓冲池“瘦身”

MySQL的 innodb_buffer_pool_size 默认值可能吃掉你一半内存。

2G机器建议设256MB或512MB。

在宝塔“数据库 → 配置修改”里改。如果只是跑WordPress这种轻量应用,256MB完全够用。

其他连接相关参数也调小,可适当参考:

max_connections = 50
sort_buffer_size = 1M
read_buffer_size = 512K
join_buffer_size = 1M

总结

2G内存的服务器,跑得动和跑得稳是两回事。

三板斧按优先级来:

先开Swap,这是底线保障。再屏蔽垃圾爬虫,这是“节流”。最后调PHP和MySQL参数,这是“精打细算”。

三招做完,你的99元服务器能从“勉强能用”变成“稳定运行”。

99元服务器地址:

https://t.aliyun.com/U/T0RY8t

未经允许不得转载:CLOUD技术博 » 2GB小内存服务器总是内存紧张,三板斧让你的服务器稳如老狗~