【原创】Nginx+PHP-FPM优化技巧总结-程序员宅基地

技术标签: Nginx  PHP  

php-fpm的安装很简单,参见 PHP(PHP-FPM)手动编译安装。下面主要讨论下如何提高Nginx+Php-fpm的性能。

1.Unix域Socket通信

之前简单介绍过Unix Domain Socket这种通信方式,参见: Nginx+PHP-FPM的域Socket配置方法

Unix域Socket因为不走网络,的确可以提高Nginx和php-fpm通信的性能,但在高并发时会不稳定。
Nginx会频繁报错:
     connect() to unix:/dev/shm/php-fcgi.sock failed (11: Resource temporarily unavailable) while connecting to upstream

可以通过下面两种方式提高稳定性:
1)调高nginx和php-fpm中的backlog
     配置方法为:在nginx配置文件中这个域名的server下,在listen 80后面添加default backlog=1024。
     同时配置php-fpm.conf中的listen.backlog为1024,默认为128。
2)增加sock文件和php-fpm实例数
     再新建一个sock文件,在Nginx中通过upstream模块将请求负载均衡到两个sock文件背后的两套php-fpm实例上。



2.php-fpm参数调优

2.1进程数

php-fpm初始/空闲/最大worker进程数
     pm.max_children = 300
     pm.start_servers = 20
     pm.min_spare_servers = 5
     pm.max_spare_servers = 35

2.2最大处理请求数

最大处理请求数是指一个php-fpm的worker进程在处理多少个请求后就终止掉,master进程会重新respawn一个新的。
这个配置的主要目的是避免php解释器或程序引用的第三方库造成的内存泄露。
     pm.max_requests = 10240

2.3最长执行时间

最大执行时间在php.ini和php-fpm.conf里都可以配置,配置项分别为 max_execution_time和request_terminate_timeout。
其作用及其影响参见: Nginx中502和504错误详解



3.php-fpm的高CPU使用率排查方法

3.1CPU使用率监控方法

1)top命令
直接执行top命令后,输入1就可以看到各个核心的CPU使用率。而且通过top -d 0.1可以缩短采样时间。
下面的sar貌似最短只能是1秒。

2)sar命令
sar和iostat命令的安装:
     sysstat.x86_64 : The sar and iostat system monitoring commands
     yum install -y sysstat.x86_64

执行sar -P ALL 1 100。-P ALL表示监控所有核心,1表示每1秒采集,100表示采集100次。
输出结果如下:
CPU     %user     %nice   %system   %iowait    %steal     %idle
all     85.54      0.00      5.69      0.00      0.00      8.76
   0     74.75      0.00     25.25      0.00      0.00      0.00
   1     98.00      0.00      2.00      0.00      0.00      0.00
   2     89.22      0.00      3.92      0.00      0.00      6.86
   3     91.00      0.00      2.00      0.00      0.00      7.00
   4     75.00      0.00      9.00      0.00      0.00     16.00
   5     94.95      0.00      5.05      0.00      0.00      0.00
   6     95.00      0.00      4.00      0.00      0.00      1.00
   7     87.88      0.00      4.04      0.00      0.00      8.08
   8     93.94      0.00      3.03      0.00      0.00      3.03
   9     88.00      0.00      3.00      0.00      0.00      9.00
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dc_726/article/details/12340349

智能推荐

欧拉函数_231欧拉函数-程序员宅基地

文章浏览阅读233次。欧拉函数_231欧拉函数

mysql表空间---共享表空间、独立表空间_mysql8 共享表空间 独立表空间-程序员宅基地

文章浏览阅读821次。使用InnoDB存储引擎时,需要了解独立表空间和共享表空间。独立表空间:每个表会生成独立的文件来存储数据。每个表都有一个.frm的描述文件存放表结构,还有一个.idb文件存放表索引。优点:每个表都有自己的独立表空间; 每个表的数据和索引都会存储在各个表空间中; 可以实现单表在不同的数据进行迁移; 表空间可以回收(删除表时); 不论如何删除,表空间碎片不会太严重。缺点:单表增长过大时,如超过100G,表查询会比较慢共享表空间:数据库中的所有表数据、索引数据都放在同一个文件中_mysql8 共享表空间 独立表空间

Win环境下安装Apache2+fastcgi+php5(non thread safe)+MySq-程序员宅基地

文章浏览阅读74次。2019独角兽企业重金招聘Python工程师标准>>> ..._php thread safe apache2

GLFW库_glwf库-程序员宅基地

文章浏览阅读1.3k次。在进行opengl开发时常用到glut辅助库,但是glut库版本又太老,而且并不免费,于是就有了freeglut作为替代,看到网上说freeglut存在很多bug(目前来说我还没有遇到),于是就又有了GLFW作为替代,下面就是用一个简单的例子演示GLFW的用法。#include #include int main(void){ G_glwf库

HBase底层存储数据的文件格式是什么?StoreFiles(HFile)详解-程序员宅基地

文章浏览阅读2.7k次。StoreFile是HBase存储数据的文件格式。_storefile

JVM G1源码分析——引用_jvmg1源码分析和调优-程序员宅基地

文章浏览阅读104次。我们这里所说的引用主要指:软引用、弱引用和虚引用。另外值得一提的是Java中的Finalize也是通过引用实现的,JDK定义了一种新的引用类型FinalReference,这个类型的处理和其他三种引用都稍有不同。另外在非公开的JDK包中还有一个sun.misc.cleaner,通常用它来释放非堆内存资源,它在JVM内部也是用一个CleanerReference实现。要理解引用处理需要先从Java代码入手。// Reference指向的对象。_jvmg1源码分析和调优

随便推点

43.基于SSM的口腔护理网站|基于SSM框架+ Mysql+Java设计与实现(可运行源码+数据库+lw)-程序员宅基地

文章浏览阅读561次,点赞8次,收藏7次。本文主要讲述了是使用Jsp与Mysql数据库实现基于SSM框架的口腔护理网站的详细过程。这里所谓的口腔护理网站是建立一个类似于医院的医疗系统使得所有的患者人员有一个更方便的工具,从而可以随时预约自己的口腔护理。口腔护理网站提供了多种功能,系统使用者们们可以在系统上面维护自己的健康信息,还可以查询历史数据,如果口腔遇到问题需要护理还可以一键进行预约。与传统的医疗网站相比,基于SSM的口腔护理网站能够提供更贴合用户需求的服务,大大提升办事效率。SSM框架;口腔护理;网站。

HTML中Table表格的使用与漂亮的表格模板_html table 样式-程序员宅基地

文章浏览阅读6.7w次,点赞31次,收藏281次。1、表格标记表格是网页中十分重要的组成元素。表格用来存储数据,包含标题、表头、行和单元格。在HTML语言中,表格标记使用符号<table>表示。定义表格光使用<table>是不够的,还需要定义表格中的行、列、标题等内容。标记 说明 表格标记<table> <table></table>标记表示整个表格。<ta..._html table 样式

Linkage Mapper中的局部和全局地图比较实践指南(含实例分析)-程序员宅基地

文章浏览阅读565次。Linkage Mapper是一款基于ArcGIS平台开发的插件,用于评估和分析城市化对生态连通性的影响。它提供了一系列功能和工具,可以模拟物种迁移、评估生态通道的效能、识别生态敏感区域等。通过Linkage Mapper,可以更好地理解栖息地变化对生态系统的影响。栖息地网络分析:通过构建栖息地网络,评估栖息地的连通性和物种迁移的潜在路径。生态通道评估:分析生态通道的效能和连通性,识别关键生态通道和瓶颈区域。物种迁移模拟:模拟物种在不同栖息地之间的迁移过程,评估城市化对物种迁移的影响。

线性筛求欧拉函数-程序员宅基地

文章浏览阅读284次。对于线性筛求欧拉函数的讲解,该文章中细致的描述了线性筛求欧拉值和线性筛求素数的区别。_线性筛求欧拉函数

初中几何题_初中几何题解-程序员宅基地

文章浏览阅读1.2k次。果断放弃使用MarkDown编辑器, 故障太多,无法使用先说原题,已知如图,单位正方形内,四个顶点为圆心画四个1/4单位圆,求红色的公共部分面积. (初中知识)如果不考虑"初中"这个限制,直接对如下图所示的阴影部分来一个积分,得到面积乘以4即可:结果是 这个解析结果因为是 根号3和Pi的有理数倍数的加减,看上去很符合拼凑的要求,因此这样的"初中水平的解"_初中几何题解

jQuery 放大镜效果_jquery放大效果-程序员宅基地

文章浏览阅读190次。效果图:代码<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>放大镜</title> <style> /** {*/ /* margin: 0px;*/ /* padding: 0..._jquery放大效果