关于PHP-FPM+Nginx+Linux优化

发布于 2022-09-30 23:07:00 字数 938 浏览 24 评论 0

使用如下配置进行测试

nginx

worker_connections  1024;
fastcgi_pass   127.0.0.1:9001;

php-fpm

listen = 127.0.0.1:9001
pm = static
max-children = 50
listen.backlog = 10000

linux

/etc/sysctl.conf

fs.file-max = 100000
net.core.somaxconn = 10000
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_syn_backlog = 10000

/etc/security/limits.conf

* - nofile 10000

测试结果

bin\ab -n 5000 -c 100 http://192.168.0.184/php/test.php

这是第一次测试结果,速度很快,但如果紧接着第二次测试,速度明显变慢。如果再过一段时间,测试,速度又很快了,如此循环......结果如下:

疑问

如果 nginx 改为 fastcgi_pass /tmp/php-fpm.sock; 并且 php-fpm 改为 listen = /tmp/php-fpm.sock,就不会出现以上问题,速度都极快。那么问题出现在哪里了呢,我该如何优化呢?请大家帮我看看。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别念他 2022-10-07 23:07:00

一个是走 HTTP(即 TCP Socket),一个是走 Unix Socket。

前者的开销肯定是比后者大的,但胜在高并发时表现稳定。

你这个测试结果我猜是第二次压测时前面的 TCP 连接没回收掉,你可以抓一下 TCP 包看一下是不是这样。如果是的话 nginx 配置一下 fastcgi_keep_connkeepalive 这俩参数再测一遍看看。

如果你的项目上线后并发量不会很大(1k 以内这种),就用 Unix Socket;反之用 HTTP。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文