discuz 发表于 2026-10-18 18:42:44

【经验】1核1G 的小水管,我硬是优化到能扛日 IP 5000+

本帖最后由 discuz 于 2026-10-18 18:50 编辑

先自报家门:楼主不是运维大佬,就是个自己折腾博客几年、钱包还不鼓的普通站长。去年 60 块钱一年撸了台 1核1G / 1M 带宽 的最低配小鸡,打算放个 WordPress 加一个小论坛。

结果一上线就打脸:首页 TTFB 三秒起,并发一上来直接 502,后台点一下转半天。一度以为小鸡就是废柴,差点退坑。硬啃了几个月,现在这台机器日 IP 5000 左右稳着跑,再没 502 过。过程记一下,给同样用最低配的兄弟避坑。

一、先别急着抄参数,先找瓶颈

新手最爱干的:网上一搜「服务器优化」,抄一堆参数贴上去,改完更卡还不知道为啥。先装工具看真实情况:

yum install -y htop iotop sysstat

- htop:CPU 和内存谁先满
- free -h:内存 + swap
- iostat -x 1:磁盘 IO(廉价 SSD 很容易卡这)
- sar -n DEV 1:网卡流量,1M 带宽是不是顶到头了

我那台一测就清楚:内存最先爆(1G 是真不够),其次 MySQL 拖后腿,带宽是最后那道硬墙。

https://bbs.7ehl.com/data/attachment/forum/202610/18/bbs-post-fig1-top-before.png

二、系统层:用不上的服务全关掉

先看看开机自启了些啥:

systemctl list-unit-files --state=enabled

把用不到的(邮件、蓝牙之类)关掉,能省几十上百 M 内存。再给 1G 的机器加个 swap 兜底,免得 OOM 直接把 MySQL 干掉:

dd if=/dev/zero of=/swapfile bs=1M count=1024
chmod 600 /swapfile
mkswap /swapfile && swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab

swap 慢,但总比服务被杀强。

三、Nginx:缓存才是小水管的命根子

1M 带宽下,代码写得再快也没用,能少回源一次是一次。开 gzip、静态资源给足 expires,最关键的是开 fastcgi_cache,把动态页面的 HTML 缓存下来,重复请求直接吐缓存、根本不碰 PHP:

fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=mycache:64m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache mycache;
fastcgi_cache_valid 200 60m;

这一层加上,首页 TTFB 直接掉到几百毫秒。

四、PHP-FPM:进程数千万别开多

1G 内存最忌 pm=static 开一堆。WP 一个进程少说 30-50M,开 10 个内存就没了。改成按需:

pm = ondemand
pm.max_children = 5
pm.process_idle_timeout = 10s

再把 opcache 开上(memory_consumption 给 64),PHP 快一大截。

五、MySQL:1G 内存的配法

InnoDB 缓冲池是重头,但别贪,1G 机器给 128M 就够,给多了系统直接 OOM:

innodb_buffer_pool_size = 128M
innodb_flush_log_at_trx_commit = 2
max_connections = 30

顺手开慢查询日志,揪出没走索引的 SQL:

slow_query_log = 1
long_query_time = 2

六、加一层 Redis 对象缓存

WordPress 装个 Redis Object Cache 插件,Discuz 直接连 Redis。数据库压力砍一半,页面秒开。

七、动静分离 + CDN

1M 带宽的硬伤,靠 CDN 治:图片、CSS、JS 全甩 CDN,回源只剩 HTML。配上第三条的页面缓存,回源次数能压到个位数。

八、优化前后对比

ab 压测,并发 50 跑 1000 次:

- 优化前:约 3 req/s,一堆失败、一堆 502
- 优化后:约 180 req/s,零失败

首页 TTFB:3.1s → 0.28s。

https://bbs.7ehl.com/data/attachment/forum/202610/18/bbs-post-fig2-ab-before.png

https://bbs.7ehl.com/data/attachment/forum/202610/18/bbs-post-fig3-ab-after.png

https://bbs.7ehl.com/data/attachment/forum/202610/18/bbs-post-fig4-ttfb.png

九、一句话清单

1. 先测后改,别瞎抄参数
2. 小内存先管住进程数,别让 PHP/MySQL 吃爆
3. Nginx 页面缓存 + CDN 是小水管命根子
4. Redis 兜住数据库
5. 静态资源能缓就缓

小水管不是不能用,是得顺着它脾气来。上面都做完,我这台 60 块一年的机器现在跑两个站还能扛日 IP 5000。同样用小鸡的兄弟欢迎交流,踩过的坑一起填。

playba 发表于 2026-10-18 20:12:07

牛逼克拉斯 学习下:)

discuz 发表于 2026-10-18 20:20:23

playba 发表于 2026-10-18 20:12
牛逼克拉斯 学习下

一起加油!💪

7ehl 发表于 2026-10-20 21:56:43

补两个小水管的点:

1)静态资源让 nginx 直接 sendfile/expires 出去,别绕 PHP;有 CDN 更好,1M 带宽下能少回源一次就少一次。

2)能上 Redis 的话,把 WordPress 的对象缓存接上(一个插件的事),数据库查询能掉一大半,比单独调 MySQL 参数见效快得多。

你那个 fastcgi_cache 我认为是小水管最值钱的一步,很多人只做了 gzip 和 expires,动态页每次都还回源。
页: [1]
查看完整版本: 【经验】1核1G 的小水管,我硬是优化到能扛日 IP 5000+