改完nginx一行配置,老破站终于不卡了
说实话,我这破站之前卡得跟幻灯片似的。机房那边天天催我升级服务器,我心想拉倒吧,都十年老机器了,升个屁。
后来实在扛不住,自己蹲在后台看日志,发现php-fpm老是报那个connect() to unix:/run/php/php7.4-fpm.sock failed。你说气不气,进程池明明开着,但就是没人吃请求。
老站长都懂,这玩意儿就是并发上来了,php-fpm默认的pm.max_children太小。我就在/etc/php/7.4/fpm/pool.d/www.conf里把pm.max_children从5调到16,pm.start_servers也拉到8。重启完fpm,发现好点,但页面还是慢。
然后就折腾到nginx。查了半天,其实就是fastcgi_buffers和fastcgi_buffer_size的问题。之前的配置是默认的8k,你一访问大点的页面,后端要吐好几屏数据,nginx就疯狂临时写磁盘。我在/etc/nginx/nginx.conf的http块里加了四行:

- fastcgi_buffers 16 16k;
- fastcgi_buffer_size 32k;
- fastcgi_busy_buffers_size 32k;
- fastcgi_temp_file_write_size 32k;
然后nginx -t一下,重载。再拿ab压测了一下,就那个土掉渣的ab -n 500 -c 30,结果平均响应从700多毫秒掉到80毫秒。真不吹。
这还没完。之前我还顺带手贱改了个东西,就是open_file_cache。这玩意儿在nginx里默认关着的,我直接在http区加了open_file_cache max=10000 inactive=20s,然后open_file_cache_valid 30s。你说这有啥用?就是让nginx别每次请求都去stat文件,把元信息缓起来。对小站来说,立竿见影。
对了,日志里还有个坑,就是那个session.save_path指向的目录权限不对,偶发报错,我直接在php.ini里把它从/var/lib/php/sessions改到了/dev/shm下面,速度飞起。但说实话,/dev/shm是内存盘,重启就没,丢了也无所谓,反正就是缓存嘛。
现在这台老爷机还能再撑一阵子。有同样折腾的兄弟可以去试,别买那些乱七八糟的面板,命令行翻官方文档最踏实。回头想起啥再补,今天得早睡。
- 上一篇: 没钱也能搞优化,白嫖这几手够用了
- 下一篇: 没有了











鄂公网安备42011602001234号