nginx-php-fpm 高并发配置优化_lihaiboas1的博客-程序员宅基地_nginx php-fpm 高并发优化

技术标签: 服务器相关  

http://blog.sina.com.cn/s/blog_62dc53a401016t3p.html


nginx+php-fpm性能参数优化原则
1.worker_processes 越大越好(一定数量后性能增加不明显)
 
2.worker_cpu_affinity 所有cpu平分worker_processes 要比每个worker_processes 都跨cpu分配性能要好;不考虑php的执行,测试结果worker_processes数量是cpu核数的2倍性能最优
 
3.unix domain socket(共享内存的方式)要比tcp网络端口配置性能要好
不考虑backlog,请求速度有量级的飞跃,但错误率超过50%
加上backlog,性能有10%左右提升
 
4.调整nginx、php-fpm和内核的backlog(积压),connect() to unix:/tmp/php-fpm.socket failed (11: Resource temporarily unavailable) while connecting to upstream错误的返回会减少
nginx:
配置文件的server块
 
listen 80 default backlog=1024;
 
php-fpm:
配置文件的
 
listen.backlog = 2048
 
kernel参数:
/etc/sysctl.conf,不能低于上面的配置
 
net.ipv4.tcp_max_syn_backlog = 4096
net.core.netdev_max_backlog = 4096
 
 
 
5.增加单台服务器上的php-fpm的master实例,会增加fpm的处理能力,也能减少报错返回的几率
多实例启动方法,使用多个配置文件:
 
/usr/local/php/sbin/php-fpm -y /usr/local/php/etc/php-fpm.conf &
/usr/local/php/sbin/php-fpm -y /usr/local/php/etc/php-fpm1.conf &
 
nginx的fastcgi配置
 
upstream phpbackend {
# server 127.0.0.1:9000 weight=100 max_fails=10 fail_timeout=30;
# server 127.0.0.1:9001 weight=100 max_fails=10 fail_timeout=30;
# server 127.0.0.1:9002 weight=100 max_fails=10 fail_timeout=30;
# server 127.0.0.1:9003 weight=100 max_fails=10 fail_timeout=30;
server unix:/var/www/php-fpm.sock weight=100 max_fails=10 fail_timeout=30;
server unix:/var/www/php-fpm1.sock weight=100 max_fails=10 fail_timeout=30;
server unix:/var/www/php-fpm2.sock weight=100 max_fails=10 fail_timeout=30;
server unix:/var/www/php-fpm3.sock weight=100 max_fails=10 fail_timeout=30;
# server unix:/var/www/php-fpm4.sock weight=100 max_fails=10 fail_timeout=30;
# server unix:/var/www/php-fpm5.sock weight=100 max_fails=10 fail_timeout=30;
# server unix:/var/www/php-fpm6.sock weight=100 max_fails=10 fail_timeout=30;
# server unix:/var/www/php-fpm7.sock weight=100 max_fails=10 fail_timeout=30;
}
 
location ~ \.php* {
fastcgi_pass phpbackend;
# fastcgi_pass unix:/var/www/php-fpm.sock;
fastcgi_index index.php;
……….
}
 
 
 
6.测试环境和结果
 
 
 
内存2G
swap2G
cpu 2核 Intel(R) Xeon(R) CPU E5405 @ 2.00GHz
采用ab远程访问测试,测试程序为php的字符串处理程序
 
1)在开4个php-fpm实例,nginx 8个worker_processes 每个cpu4个worker_processes ,backlog为1024,php的backlog为2048,内核backlog为4096,采用unix domain socket连接的情况下,其他保持参数不变
 
性能和错误率较为平衡,可接受,超过4个fpm实例,性能开始下降,错误率并没有明显下降
结论是fpm实例数,worker_processes数和cpu保持倍数关系,性能较高
影响性能和报错的参数为
php-fpm实例,nginx worker_processes数量,fpm的max_request,php的backlog,unix domain socket
 
10W请求,500并发无报错,1000并发报错率为0.9%
 
500并发:
 
Time taken for tests: 25 seconds avg.
Complete requests: 100000
Failed requests: 0
Write errors: 0
Requests per second: 4000 [#/sec] (mean) avg.
Time per request: 122.313 [ms] (mean)
Time per request: 0.245 [ms] (mean, across all concurrent requests)
Transfer rate: 800 [Kbytes/sec] received avg.
 
1000并发:
 
Time taken for tests: 25 seconds avg.
Complete requests: 100000
Failed requests: 524
(Connect: 0, Length: 524, Exceptions: 0)
Write errors: 0
Non-2xx responses: 524
Requests per second: 3903.25 [#/sec] (mean)
Time per request: 256.197 [ms] (mean)
Time per request: 0.256 [ms] (mean, across all concurrent requests)
Transfer rate: 772.37 [Kbytes/sec] received
 
2)在其他参数不变,unix domain socket换为tcp网络端口连接,结果如下
 
500并发:
 
Concurrency Level: 500
Time taken for tests: 26.934431 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Requests per second: 3712.72 [#/sec] (mean)
Time per request: 134.672 [ms] (mean)
Time per request: 0.269 [ms] (mean, across all concurrent requests)
Transfer rate: 732.37 [Kbytes/sec] received
 
1000并发:
 
Concurrency Level: 1000
Time taken for tests: 28.385349 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Requests per second: 3522.94 [#/sec] (mean)
Time per request: 283.853 [ms] (mean)
Time per request: 0.284 [ms] (mean, across all concurrent requests)
Transfer rate: 694.94 [Kbytes/sec] received
 
与1)比较,有大约10%的性能下降
 
 
 
7. 调整fpm的max_request参数为1000,并发1000报错返回降到200个以下,
Transfer rate在800左右

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lihaiboas1/article/details/38730915

智能推荐

Python编程从入门到实践项目1--外星人入侵_我去上课辣的博客-程序员宅基地_python从入门到实践外星人入侵

前言首先博主是自学《python编程从入门到实践》前10章的理论知识,想着需要动手来做一点项目来巩固和检验自己的自学成果,所以选择外星人入侵这个项目来练练手。文章仅作为本人做项目过程中的学习笔记,不用做其他用途。希望路过的大神不吝赐教。step1对于游戏《外星人入侵》的简单描述:在游戏中,玩家控制着一艘最初出现在屏幕底部中央的飞船。玩家可以使用箭头键左右移动飞船,还可以使用空格键进行射击。游戏开始时,一群外星人出现在天空中,他们再屏幕中向下移动。玩家的任务是射杀这些外星人。玩家将所有外星人都..

E-Business Suite 12.2 startCD 50 Install Fails with Fatal Error: TXK Install Service oracle.apps.fnd..._weixin_30819163的博客-程序员宅基地

在rhel7.2上,使用startCD 50安装ebs r12.2的使用,安装到38%的时候就报错,遇到了和以下文章类似的问题:http://www.cnblogs.com/abclife/p/4994353.html但是,这次是全新安装,相应目录下不该有老的内容。查看mos,发现了这个文章,贴出来以备后用:E-Business Suite 12.2 startCD 50 Instal...

C++11的重大改变_土戈的博客-程序员宅基地

C++11支持lambda表达式,自动类型推断,统一的初始化语法,委托构造函数,删除和默认函数声明,nullptr,以及最重要的右值引用——一种预言将会改变创造和处理对象方式的技术。C++11标准库同样增加了新的算法,新的容器类,原子运算,类型特性,正则表达式,新的智能指针,async()功能以及多线程库。自动类型推断auto和decltypeauto c = 'a'; // char...

利用Matplotlib制作柱状图_StrayCat_的博客-程序员宅基地

import matplotlib.pyplot as pltplt.style.use('ggplot')customers = ['Tom', 'Jack', 'Kevin', 'Leo', 'Faith']customers_index = range(len(customers))sale_amounts = [100, 150, 204, 220, 95]fig = plt.f...

布尔测试 python 字典_python自动化测试-列表、元组、字典学习笔记_南瑾i的博客-程序员宅基地

1、列表格式: L = [1,2,3,5] M = [7,8,9] print(type(L)) -> :list列表增加元素: print(L.append(10)) -> :[1,2,3,5,10]列表指定位置插入元素:L.insert(3,4) print(L) -> [1,2,3,4,5,10]列表删除元素: del L[2] print(L) -...

第三方免费加固横向对比_JackieZhengChina的博客-程序员宅基地_加固对比

前言基于java开发的android应用由于其语言的特性,所以很容易被反编译,虽然android提供了proguard,但是也只是增加了源码阅读的难度,其中业务逻辑依旧可以分析得出。有些人通过各种破解手段将apk文件破解、反编译,然后加入广告、病毒代码,重新打包投入市场,不明真相的用户将带病毒广告的apk下载下来,甚至因此造成利益损失。一些个人开发者,小企业等并不会有这么多的资源精力投入在...

随便推点

NYOJ11 奇偶数分离_Silent-Jy的博客-程序员宅基地

#includeusing namespace std;int main(){ int n,t,i; cin>>t; while(t--) { cin>>n; for (i=1;i<=n;i+=2) { if (i!=1) cout<<' '<<i; else cout<<i; } cout<<endl; for (i=2;i<=n

linux下编译安装boost库_土戈的博客-程序员宅基地_编译安装boost

1、下载并解压boost 1.58 源代码boost的官网:http://jaist.dl.sourceforge.net/project/boost/boost/下载wget http://jaist.dl.sourceforge.net/project/boost/boost/1.58.0/boost_1_58_0.tar.bz2解压tar -xjf boost_...

VS 2017快捷键_苏不同的博客-程序员宅基地

文章目录自动对齐 ctrl + K , ctrl + D注释 ctrl + K, ctrl + C取消注释 ctrl + K, ctrl + U自动对齐 ctrl + K , ctrl + D注释 ctrl + K, ctrl + C取消注释 ctrl + K, ctrl + U

vlc dll 编译 MinGW on Linux_士为知己的博客-程序员宅基地_vlc32.dll

MinGW on Linux在 Linux 上编译 DLL 。1. 交叉编译工具链构建 (Compiler and binary toolchain )i686-w64-mingw32 for Windows 32-bits, using the Mingw-w64 toolchainx86_64-w64-mingw32 for Windows 64-bits, using the Mingw-w64 toolchain编译 32位 VLC$ sudo apt-get install gcc

操作系统学习笔记——第十三讲——I/O系统(13.1 I/O基本概念)_预见未来to50的博客-程序员宅基地

1. 概述2. I/O系统的对象和任务3. I/O系统的基本功能4. 设备独立性5. 内核I/O结构6. I/O应用接口7. I/O硬件8. I/O硬件控制9. PC中的设备I/O端口位置(部分)10. I/O设备的特点11. I/O设备的类型...

win10+ubuntu16.04双系统安装总结_Kol_mogorov的博客-程序员宅基地

虽然之前装过几次双系统,这次还是记录一下比较好,说不定下次还得装双系统1。装双系统和重装系统的有些步骤是一样的,但重装系统首先得磁盘分区,我直接分了50G,反正我也不懂2,然后把ubuntu16.04的iso镜像文件写入U盘,用ultroIso就可以了,很简单的3,然后就改下启动项,按提示进行安装,用UEFI启动项就行。安装提示,这里记得选择汉语,不要选英语,否则到时候连个汉字输入法都...

推荐文章

热门文章

相关标签