[Linux主机] 优化你的php-fpm(php5.3+)让你的网站跑得更快

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

[Linux主机]优化你的php-fpm(php5.3+)让你的网站跑得更快


从php5.3以后php自带了php-fpm不是和php5.2一样以插件的方式存在了。这给我们带来一个好处502没有那么容易出现了
坛子里用linux的绝大多数应该还是在用小军的lnmp的那个包,但是配置优化却是不尽人意。
php-fpm的配置文件位置:
/usr/local/php/etc/php-fpm.conf
pid = run/php-fpm.pid
pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启
error_log = log/php-fpm.log
错误日志,默认在安装目录中的var/log/php-fpm.log
log_level = notice
错误级别. 可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice.
emergency_restart_threshold = 60
emergency_restart_interval = 60s
表示在emergency_restart_interval所设值内出现SIGSEGV或者SIGBUS错误的php-cgi进程数如果超过 emergency_restart_threshold个,php-fpm就会优雅重启。这两个选项一般保持默认值。
process_control_timeout = 0
设置子进程接受主进程复用信号的超时时间. 可用单位: s(秒), m(分), h(小时), 或者 d(天) 默认单位: s(秒). 默认值: 0.
daemonize = yes
后台执行fpm,默认值为yes,如果为了调试可以改为no。
在FPM中,可以使用不同的设置来运行多个进程池。 这些设置可以针对每个进程池单独设置。
listen = 127.0.0.1:9000
fpm监听端口,即nginx中php处理的地址,一般默认值即可。
可用格式为: ‘ip:port’, ‘port’, ‘/path/to/unix/socket’. 每个进程池都需要设置.
listen.backlog = -1
backlog数,-1表示无限制,由操作系统决定,此行注释掉就行。backlog含义参考:
listen.allowed_clients = 127.0.0.1
允许访问FastCGI进程的IP,设置any为不限制IP,如果要设置其他主机的nginx也能访问这台FPM进程,listen处要设置成本地可被访问的IP。默认值是any。
每个地址是用逗号分隔. 如果没有设置或者为空,则允许任何服务器请求连接
listen.owner = www
listen.group = www
listen.mode = 0666
unix socket设置选项,如果使用tcp方式访问,这里注释即可。
user = www
group = www
启动进程的帐户和组
pm = dynamic
pm表示使用那种方式,有两个值可以选择,就是static(静态模式)或者dynamic(动态模式5.2的时候叫apache-like但是不好使)
如果选择static,则由pm.max_children指定固定的子进程数。
如果选择dynamic,则由下开参数决定:
pm.max_children ,子进程最大数
pm.start_servers ,启动时的进程数
pm.min_spare_servers ,保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
pm.max_spare_servers ,保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
对于专用服务器,pm可以设置为static。
pm.max_requests = 1000
设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 ’0′ 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0.
pm.status_path = /status
FPM状态页面的网址. 如果没有设置, 则无法访问状态页面. 默认值: none.
ping.path = /ping
FPM监控页面的ping网址. 如果没有设置, 则无法访问ping页面. 该页面用于外部检测FPM是否存活并且可以响应请求. 请注意必须以斜线开头 (/)。
ping.response = pong
用于定义ping请求的返回相应. 返回为 HTTP 200 的 text/plain 格式文本. 默认值: pong.
request_terminate_timeout = 0
设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的’max_execution_time’因为某些特殊原因没有中止运行的脚本有用. 设置为 ’0′ 表示 ‘Off’.
当经常出现502错误时可以尝试更改此选项。
request_slowlog_timeout = 10s
当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 ’0′ 表示 ‘Off’
slowlog = log/$pool.log.slow
慢请求的记录日志,配合request_slowlog_timeout使用
rlimit_files = 1024
设置文件打开描述符的rlimit限制. 默认值: 系统定义值
系统默认可打开句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。
rlimit_core = 0
设置核心rlimit最大限制值. 可用值: ‘unlimited’ 、0或者正整数. 默认值: 系统定义值.
chroot =
启动时的Chroot目录. 所定义的目录需要是绝对路径. 如果没有设置, 则chroot不被使用.
chdir =
设置启动目录,启动时会自动Chdir到该目录. 所定义的目录需要是绝对路径. 默认值: 当前目录,或者/目录(chroot时)
catch_workers_output = yes
重定向运行过程中的stdout和stderr到主要的错误日志文件中. 如果没有设置, stdout 和 stderr 将会根据FastCGI的规则被重定向到 /dev/null . 默认值: 空
下面已我的php配置例子:
[global]pid = /usr/local/php/var/run/php-fpm.pid
error_log = /home/wwwlogs/php-fpm.log
log_level = notice
rlimit_files = 65535
rlimit_core = 0
[www]
listen = /tmp/php-cgi.sock
user = nobody   nginx, php-fpm进程的权限不能以网站所有权运行安全有问题
group = nobody   nginx, php-fpm 进程 的权限不能以网站所有权运行安全有问题
pm = dynamic
pm.max_children = 36 静态模式开启进程数
pm.start_servers = 9 动态模式默认开启进程 数
pm.min_spare_servers = 8 动态模式默认最低保留进程 数
pm.max_spare_servers = 36 动态模式默认最高 进程数具体通过netstat -napo |grep "php-fpm" | wc -l和系统负载确定
pm.max_requests = 4096 进程执行xxx后重启释放内存避免内存泄漏
request_terminate_timeout = 100 进程超时时间
request_slowlog_timeout = 3s 记录大于3秒的php执行命令
slowlog = /home/wwwlogs/php-fpm.log.slow
rlimit_files = 65535 这个值一定要改默认的太小不改日志会有错误但是要和全局文件数相同具体查看ulimit -n系统全局设置
rlimit_core = 0
-----------------------------------------------------------------------------------------------------------
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /home/wwwlogs/php-fpm.log
log_level = notice
rlimit_files = 65535
rlimit_core = 0

[www]
listen = /tmp/php-cgi.sock
user = nobody
group = nobody
pm = dynamtic
pm.max_children = 20
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 20
pm.max_requests = 4096
request_slowlog_timeout = 3s
slowlog = /home/wwwlogs/php-fpm.log.slow 
request_terminate_timeout = 100
rlimit_files = 65535
rlimit_core = 0

来源: <http://www.ctyun.cn/bbs/thread-559-1-1.html>
 

来自为知笔记(Wiz)


转载于:https://my.oschina.net/chocoball/blog/208594

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络编程——千峰物联网笔记

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

托管与非托管的混合编程问题

&#xff08;急&#xff0c;先放技术区几天再移动&#xff09; 写C#应用&#xff0c;需要MDI界面&#xff0c;其中一个子窗体是使用浏览器界面的&#xff0c;单独调试都好好的&#xff0c;使用到MDI中就出问题了&#xff0c;不能打开连接&#xff0c;显示忙信息&#xff0c;没…

必须掌握的前端模板引擎之art-template

常用的模板引擎有tpl.js、baiduTemplate、doT.js、art-template等等&#xff1b; 我所理解的模板引擎就是把js数据传到html中展示出来&#xff1b; art-template 是一个简约、超快的模板引擎。 art-template有两种语法&#xff1a; 一、标准语法可以让模板更容易读写&#xff1…

不要和诱惑较劲,而应离得越远越好。!!!

时刻告诉自己&#xff0c;做事之前防范于未然&#xff0c;未雨绸缪&#xff1a; 某大公司准备以高薪雇用一名小车司机&#xff0c;经过层层筛选和考试之后&#xff0c;只剩下三名技术最优良的竞争者。主考者问他们&#xff1a;“悬崖边有块金子&#xff0c;你们开着车去拿&…

Linux网络编程——黑马程序员笔记

01P-复习-Linux网络编程 02P-信号量生产者复习 03P-协议 协议&#xff1a; 一组规则。 04P-7层模型和4层模型及代表协议 分层模型结构&#xff1a; OSI七层模型&#xff1a; 物、数、网、传、会、表、应TCP/IP 4层模型&#xff1a;网&#xff08;链路层/网络接口层&#x…

让僵冷的翅膀飞起来—从实例谈OOP、工厂模式和重构[by Wayfarer]

有了翅膀才能飞&#xff0c;欠缺灵活的代码就象冻坏了翅膀的鸟儿。不能飞翔&#xff0c;就少了几许灵动的气韵。我们需要给代码带去温暖的阳光&#xff0c;让僵冷的翅膀重新飞起来。结合实例&#xff0c;通过应用OOP、设计模式和重构&#xff0c;你会看到代码是怎样一步一步复活…

JavaScript时间日期函数

//随机数生成器Math.random()装换为整数parseInt()日期时间函数&#xff08;需要用变量调用&#xff09;&#xff1a;var b new Date(); //获取当前时间b.getTime() //获取时间戳b.getFullYear() //获取年份b.getMonth()1; //获取月份b.getDate() //获取天b.getHours() //获取…

Google Bigtable

Google Bigtable一个分布式的结构化数据存储系统摘要Bigtable是一个分布式的结构化数据存储系统&#xff0c;它被设计用来处理海量数据&#xff1a;通常是分布在数千台普通服务器上的PB级的数据。Google的很多项目使用Bigtable存储数据&#xff0c;包括Web索引、Google Earth、…

蓝牙BLE(协议栈、OSAL、蓝牙APP工具)

目录蓝牙配对和绑定蓝牙4.0 BLE信道(RF Channel)BLE协议栈分层PHY层(Physical layer 物理层)LL层(Link Layer 链路层)HCI层(Host controller interface 主机控制接口层)L2CAP层(Logic link control and adaptation protocol 逻辑链路控制和自适应协议)SMP层(Secure manager pro…

Wallop蛋和Gmail蛋

现有Wallop邀请四个 如不明白Wallop请看:http://www.blogchina.com/new/display/52792.html Gmail邀请四个, 要的请留下邮箱地址和姓名转载于:https://www.cnblogs.com/cerxp/archive/2005/01/03/85764.html

Ubuntu 安装 samba 实现文件共享和source insight 阅读uboot

环境&#xff1a;win10 虚拟机Ubuntu 12.04 一. samba的安装: # sudo apt-get install samba # sudo apt-get install smbfs 二. 创建共享目录&#xff0c;或是找已经存在的文件夹&#xff0c;只要权限放开就行了: # mkdir /home/share # sudo chmod 777 /home/share 三. 创建…

Eclipse 修改文本编码方式

近两天因为业务需要帮另一个项目组突击进度&#xff0c;把对方的工程导入Eclipse一看&#xff0c;全是乱码。后来一问才知道对方用的编码是GBK&#xff0c;无力吐槽。但是毕竟只是帮忙&#xff0c;不能要求别人改&#xff0c;只好自己将就了。我的默认编码是UTF-8&#xff0c;当…

忙了一天,不知所措

早上开会&#xff0c;下午写文档。整天都觉得比较忙&#xff0c;不知道是否忙得有意义……唉转载于:https://www.cnblogs.com/wonderow/archive/2005/03/09/115821.html

正点原子STM32(基于标准库)

正点原子B站视频地址&#xff1a;https://www.bilibili.com/video/BV1Lx411Z7Qa?p4&spm_id_frompageDriver 目录STM32命名规则STM32芯片解读开发环境搭建(MDK - 就是ARM的keil,需破解 支持包 CH340串口驱动 JLINK驱动)程序下载方法 (ISP串口下载 JLINK下载更方便)新建工…

BZOJ 3994 [SDOI2015]约数个数和 (莫比乌斯反演)

题目大意&#xff1a;略 洛谷传送门 首先要知道这样一个公式不知道这个公式这道题还怎么做... $d(ij)\sum\limits_{x1}^{i} \sum\limits_{y1}^{j}[gcd(x,y)1]$ 具体证明可以参考这位神犇的博客 大意是说&#xff0c;令$ki \cdot j$&#xff0c;把$k,i,j$都分解成质因子幂次乘积…

[Hadoop] Install Hadoop 2.2 on Win7 64bit

环境&#xff1a;win7, 64 bit, JDK7Download the stable version 2.2.0http://mirrors.cnnic.cn/apache/hadoop/common/stable2/Unzip hadoop-2.2.0.tar.gz to c:/hadoop设置环境变量 HADOOP_HOME 和 PATH (%HADOOP_HOME%/bin)修改%HADOOP_HOME%\etc\hadoop\hadoop-en…

对网络数据包进行嗅探

例如我现在发表了一个帖子&#xff0c;点击提问按钮&#xff0c;我如何截获点击提问按钮时所发出去的包呢&#xff1f;并把我发表的内容取出来。 --------------------------------------------------------------- -------------------------------------------------------…

数据结构与算法(6) -- heap

binary heap就是一种complete binary tree(完全二叉树)。也就是说&#xff0c;整棵binary tree除了最底层的叶节点之外&#xff0c;都是满的。而最底层的叶节点由左至右又不得有空隙。 以上是一个对heap的简单介绍。本文将用heap指代此种完全二叉树。那么在实际编写代码的时候怎…

涂鸦WIFI模组方案(MCU SDK)

摘自涂鸦官方视频教程&#xff1a;https://www.bilibili.com/video/BV1pb41117LD?spm_id_from333.999.0.0等 摘自&#xff1a;涂鸦IoT开发平台MCU开发接入(Wi-Fi)-App面板 地址&#xff1a;https://www.bilibili.com/video/BV1cK4y1x7Up?spm_id_from333.999.0.0 摘自&#xf…

MySQL数据库添加一个字段

MySQL数据库添加一个字段 1、添加一个字段 alter table tableName add 列名 数据类型; 2、添加一个字段设置默认值 alter table tableName add 列名 数据类型 default 0; &#xff08;注&#xff1a;这里设置默认值为0&#xff09; 例子&#xff1a;在users表添加一个int类型…