㈠ 说说php-fpm配置解析
PHP-FPM配置解析
在编译安装PHP时,通过在./configure中添加参数`--enable-fpm`即可开启PHP-FPM。配置文件为`php-fpm.conf`,其语法类似`php.ini`。默认位置为`/usr/local/php/etc/php-fpm.conf`,若未在此处,可能位于`/usr/local/php/etc/php-fpm.d/`目录下。
全局配置包含PID文件路径、错误日志位置及错误级别设置。
进程池配置允许定义多个进程池,通过设置监听地址与端口来接受FastCGI请求。推荐使用Unix域Socket,如配置`listen/tmp/php-cgi.sock`以提高性能,适合高并发场景,尽管在不稳定时可设置`backlog`以管理连接队列。
`listen.allowed_clients`允许访问FastCGI进程的IP白名单,设置为`any`则不限制IP访问。
进程管理器设置包括`pm`参数选择静态、动态或按需管理子进程数量,`pm.max_children`和`pm.start_servers`定义进程最大数量与起始数量,确保稳定性与资源利用。
内存管理考虑:对于大内存服务器(8G以上),建议使用静态设置以提升效率。而小内存服务器(如1G)则有利于系统稳定,合理分配资源。
`request_terminate_timeout`与`request_slowlog_timeout`分别设置最大执行时间与慢请求记录,有助于调试与优化。
慢日志功能通过设置`request_slowlog_timeout`来记录超过指定时间的请求,包括进程号、脚本名称、执行时间等详细信息,帮助排查问题。
配置修改后,执行`sudo systemctl restart php-fpm`以使更改生效。
希望以上内容能帮助您理解并应用PHP-FPM配置,更多学习资源可关注公众号:PHP开源社区,或访问我们整理的精华文章合集,覆盖框架、微服务、分布式、高并发与数据库等PHP技术领域。
启动php-fpm。
/usr/local/php5/sbin/php-fpm/usr/local/php5/为php-fpm的安装地址。
/usr/local/php-5.6.3/sbin/php-fpm-R#如果报错显示不能用root用户启动,则可以考虑使用-R命令。
查看是否启动成功:
netstat-lnt|grep9000
tcp00127.0.0.1:90000.0.0.0:*LISTEN
或者使用如下命令,查看是否9000端口被php-fpm占用:
netstat-tunpl|grep9000
tcp00127.0.0.1:90000.0.0.0:*LISTEN2124/php-fpm。
㈢ php-fpm - 启动参数及重要配置详解
php-fpm的启动参数与重要配置详解
php-fpm的运行过程中,理解并调整关键配置参数至关重要。首先,我们来看看启动参数:
1. request_terminate_timeout: 这个参数控制了PHP脚本的最大执行时间,防止因file_get_contents等函数响应过慢导致的资源问题。默认为0,可能导致502 Bad Gateway错误。建议设置一个合理的值,如10秒,同时考虑给file_get_contents添加超时限制。
2. max_requests: 当一个子进程处理的请求数超过指定值(如1000)时,会自动重启,以防止内存泄漏。然而,这可能导致间歇性502错误。在高并发场景下,设置较大的值能减少重启频率,但需根据实际情况调整。
3. request_slowlog_timeout 和 slowlog: 这些配置用于记录执行过慢的PHP进程,对于异常排查和问题定位非常有用。通过监控慢日志,可以定位网络读取和数据库查询等延迟问题。
这些参数的调整需要根据实际项目需求和性能监控来决定,以确保Web服务器的稳定运行。在php-fpm配置中,找到适合的平衡点是提高性能和避免错误的关键。想要获取更多PHP相关资源,可以关注公众号:PHP开源社区,获取2021金九银十大厂面试题集、PHP技术文章合集等资源。
㈣ php-fpm - 启动参数及重要配置详解
php-fpm主要涉及的目录有:<pre>/usr/local/php/sbin/php-fpm /usr/local/php/etc/php-fpm.conf /usr/local/php/etc/php.ini</pre>
1. request_terminate_timeout: 这个参数在php-fpm.conf中设置,用于限制PHP脚本的最大执行时间。若设置过长,可能会导致资源问题,如file_get_contents请求超时,从而引发502 Bad Gateway错误。建议设置为一个合理的值,如10s,以确保WebServer的正常处理。
2. max_requests: 当一个PHP-CGI进程处理的请求数超过配置值(如1000),它会被自动重启,以防止内存泄漏。在高并发场景中,需根据实际情况调整这个值,确保性能和内存管理。
3. slowlog: 通过request_slowlog_timeout设置超时并启用慢日志,可以追踪执行过慢的PHP进程,有助于排查网络读取和数据库查询问题。
php-fpm的设计旨在通过监控请求次数来管理内存,而不是直接检测内存使用量。虽然这种方法在某些情况下有效,但通过检测内存峰值并据此重启进程可能会更高效。具体配置需根据实际场景调整。
以上配置对于解决php-fpm相关问题和提升WebServer性能非常有帮助。如果你在PHP进阶过程中遇到问题,可以参考我整理的系列资料,包括分布式架构、高并发优化、服务器性能调优等多方面内容。这些资源可以在这里获取:<a href="PHP进阶架构师>>>视频、面试文档免费获取">点击获取</a>。
㈤ php5.4.6怎样重启php-fpm
php5.4中php-fpm怎么重启?
php5.3.3以后源码中已经内嵌了php-fpm,不用象以前的php版本一样专门打补丁了,只需要在configure的时候添加编译参数即可。
关于php-fpm的编译参数有–enable-fpm–with-fpm-user=www–with-fpm-group=www–with-libevent-dir=libevent位置。
但是,php5.3.3以后的php-fpm不再支持php-fpm以前具有的/usr/local/php/sbin/php-fpm(start|stop|reload)等命令,需要使用信号控制:
master进程可以理解以下信号:
INT,TERM立刻终止
QUIT平滑终止
USR1重新打开日志文件
USR2平滑重载所有worker进程并重新载入配置和二进制模块
有了以上信号,php-fpm进程重启就方便多了。
例子:
php-fpm关闭:
代码示例:
kill-INT`cat/usr/local/php/var/run/php-fpm.pid`
php-fpm重启:
代码示例:
kill-USR2`cat/usr/local/php/var/run/php-fpm.pid`
说明:
cat部分是php-fpm的进程号,可能是我用的5.4的问题。没有用php-fpm.pid,就没有这个文件。
可以用psaux|grepphp-fpm,使用第一个进程的进程号,测试可行。
㈥ PHP-FPM详解
PHP-FPM是PHP FastCGI进程管理器,专为管理PHP进程池设计,用于接收web服务器请求。
第一部分,为什么出现PHP-FPM?PHP-FPM的诞生源自PHP-FastCGI的需求。为有效管理PHP-FastCGI而出现的程序。
第二部分,了解PHP-FastCGI。它只是一个解析PHP请求并返回结果的CGI程序,并不负责管理进程。
第三部分,为何不称为PHP-CGI?在PHP-FastCGI之前,存在PHP-CGI,但其执行效率低下,最终被PHP-FastCGI取代。
第四部分,解释FastCGI与CGI的区别。在FastCGI时代,当web服务器(如nginx)接收到请求并识别为动态PHP请求时,会将其转给PHP处理。在CGI模式下,每次请求时都需要读取php.ini配置,初始化执行环境,耗时且重复。
第五部分,FastCGI的效率提升。FastCGI允许一次启动一个主进程(master),读取一次配置,然后启动多个工作进程(worker)。当请求来临时,master将请求传递给worker,避免了重复的初始化工作。
第六部分,PHP-FPM的工作原理。PHP-FPM创建一个主进程来控制何时以及如何将HTTP请求转发给一个或多个子进程处理。主进程还负责管理进程的创建与销毁,以适应Web应用流量的变化。
安装部分,PHP在5.3.3之后将PHP-FPM整合到核心代码中,无需单独下载安装。只需在编译PHP源码时添加--enable-fpm即可启用PHP-FPM支持。
全局配置方面,CentOS中PHP-FPM的主配置文件为/etc/php7/php-fpm.conf,配置内容通常包括进程池定义。
在CentOS中,PHP-FPM主配置文件顶部引入了进程池定义文件,通常使用www.conf作为默认配置文件。进行必要的编辑保存后,重启PHP-FPM主进程。
PHP-FPM进程池的详细配置请参考php.net/manual/install文档。
针对Company开发环境的配置,提供测试环境与生产环境的具体配置示例。以nginx为例,说明如何转发请求给PHP-FPM。
最后,针对PHPer进阶时遇到的问题,提供了一系列资料,涵盖分布式架构、高可扩展性、高性能、高并发、服务器性能调优、TP6、Laravel、YII2、Redis、Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等高级进阶干货,需要的读者可以免费获取。
㈦ php鏂囦欢镐庝箞镓揿紑 php鏂囦欢镐庢牱杩愯
php-fpm镄勮繘绋嬫暟鍙浠ユ牴鎹璁剧疆鍒嗕负锷ㄦ佸拰闱欐併
闱欐侊细鐩存帴寮钖鎸囧畾鏁伴噺镄刾hp-fpm杩涚▼锛屼笉鍐嶅炲姞鎴栬呭噺灏戯绂
锷ㄦ侊细寮濮嬬殑镞跺椤紑钖涓瀹氭暟閲弍hp-fpm杩涚▼锛屽綋璇锋眰鍙桦ぇ镄勬椂鍊欙纴锷ㄦ佺殑澧炲姞php-fpm杩涚▼鏁板埌涓婇檺锛屽綋绌洪棽镄勬椂鍊栾嚜锷ㄩ喷鏀剧┖闂茶繘绋嬫暟鍒颁竴涓涓嬮檺銆
杩欎袱绉崭笉钖岀殑镓ц屾柟寮忥纴鍙浠ユ牴鎹链嶅姟鍣ㄥ疄闄呴渶姹傛潵杩涜岃皟鏁淬
杩欓噷鍏堣翠竴涓嬫秹鍙婂埌杩欎釜镄勫嚑涓鍙傛暟锛屼粬浠鍒嗗埆鏄痯mpm.max_childrenpm.start_serverspm.min_spare_servers鍜宲m.max_spare_servers銆
pm琛ㄧず鐢ㄥ摢绉嶆柟寮忥纴链変袱涓鍊煎彲浠ラ夋嫨锛屽氨鏄痵tatic
1銆佸傚浘锛屾瘆濡傛柊寤轰简涓涓狿HP鏂囦欢锛岄偅涔埚簲璇ユ庝箞镓揿紑PHP鏂囦欢锛
2銆佹柟娉曢潪甯哥亩鍗曪纴鐩存帴鍗曞嚮榧犳爣鍙抽敭锛屼娇鐢ㄧ玛璁版湰镓揿紑鏂瑰纺鍗冲彲銆
3銆佽繖镙凤纴灏卞彲浠ョ洿鎺ユ墦寮PHP鏂囦欢浜嗭纴铹跺悗寮濮嫔啓涓婅嚜宸辩殑PHP浠g爜娴嬭瘯鍟︺
4銆佸綋铹朵篃鍙浠ラ夋嫨sublime镓揿紑鏂瑰纺锛屽墠鎻愭槸浣犵殑鐢佃剳瀹夎呮湁sublime锛屾病链夌殑璇濆氨镊宸卞幓瀹夎呬竴涓狲ublime銆
5銆佷絾鏄濡傛灉闇瑕佽繍琛孭HP鏂囦欢锛屽氨闇瑕佸畨瑁厁ampp闆嗘垚杞浠讹纴铹跺悗钖锷ㄥ畠锛岋纸start锛夊氨鏄钖锷ㄥ摝銆
6銆佹帴镌鎶婃枃浠舵斁鍦ㄥ畨瑁呯洰褰曚笅镄删tdocs鏂囦欢澶逛笅锛屾垜镄勫畨瑁呯洰褰曟槸鍦╢鐩樼殑myservice鏂囦欢澶广
7銆佷箣钖庯纴鍐嶆墦寮娴忚埚櫒绐楀彛锛岃緭鍏localhost/鍜孭HP鏂囦欢镄勫悕绉颁究鍙浠ヨ繍琛屽暒锛岄潪甯哥殑绠鍗曘
浠ヤ笂鍐呭逛粎渚涘弬钥冿紒
浠ヤ笂灏辨槸php鏂囦欢镐庢牱镓揿紑鍜岃繍琛岀殑璇︾粏鍐呭癸纴镟村氲峰叧娉ㄥ叾瀹幂浉鍏虫枃绔狅紒
1銆佸傚浘锛屾瘆濡傛柊寤轰简涓涓狿HP鏂囦欢锛岄偅涔埚簲璇ユ庝箞镓揿紑PHP鏂囦欢锛
2銆佹柟娉曢潪甯哥亩鍗曪纴鐩存帴鍗曞嚮榧犳爣鍙抽敭锛屼娇鐢ㄧ玛璁版湰镓揿紑鏂瑰纺鍗冲彲銆
3銆佽繖镙凤纴灏卞彲浠ョ洿鎺ユ墦寮PHP鏂囦欢浜嗭纴铹跺悗寮濮嫔啓涓婅嚜宸辩殑PHP浠g爜娴嬭瘯鍟︺
4銆佸綋铹朵篃鍙浠ラ夋嫨sublime镓揿紑鏂瑰纺锛屽墠鎻愭槸浣犵殑鐢佃剳瀹夎呮湁sublime锛屾病链夌殑璇濆氨镊宸卞幓瀹夎呬竴涓狲ublime銆
PHP鏄涓嶆敮鎸佸氱户镓跨殑锛岄偅涔埚备綍瀹炵幇澶氱户镓垮憿锛
鍙浠ヤ娇鐢╥nterface鎴杢rait 瀹炵幇
interface杩欓噷鎴戜滑灏变笉锅氲繃澶氱殑璇存槑浜嗭纴瀹幂殑铡熺悊灏辨槸涓涓绫诲彲浠ュ疄鐜板氢釜鎺ュ彛銆备笅闱㈣繖娈典唬镰佸氨鑳藉熻存槑銆
涓嬮溃鎴戜滑閲岖偣璁ㄨ轰竴涓媡rait瀹炵幇澶氱户镓匡纸鍏跺疄涔熶笉鍙澶氱户镓匡纴搴旇ュ彨绫讳技澶氱户镓跨殑锷熻兘锛夐偅浠涔堟槸trait锻?绛旓细鐪嬩笂铡绘棦镀忕被鍙埚儚鎺ュ彛锛屽叾瀹为兘涓嶆槸锛孴rait鍙浠ョ湅锅氱被镄勯儴鍒嗗疄鐜帮纴鍙浠ユ贩鍏ヤ竴涓鎴栧氢釜鐜版湁镄凯HP绫讳腑锛屽叾浣灭敤链変袱涓锛氲〃鏄庣被鍙浠ュ仛浠涔堬绂鎻愪緵妯″潡鍖栧疄鐜般俆rait鏄涓绉崭唬镰佸岖敤鎶链锛屼负PHP镄勫崟缁ф圹闄愬埗鎻愪緵浜嗕竴濂楃伒涓栬姦濮挎椿镄勪唬镰佸岖敤链哄埗銆傞偅涔堟庝箞瀹炵幇trait锻锛熺湅涓嬮溃浠g爜锛
娉ㄦ剰锛
浼桦厛绾э细镊韬鏂规硶trait镄勬柟娉旷户镓跨殑鏂规硶锛埚氨鏄杩欐牱瀛愮殑銆傦级濡傛灉鎴戜滑镓揿紑涓婅堪浠g爜涓镄勬敞閲婏纴浼氭姤阌欙纴锲犱负涓や釜trait涓镄勬柟娉曢吨钖崭简銆
浠ヤ笂灏辨槸PHP鏄鍗旷户镓胯缮鏄澶氱户镓跨殑璇︾粏鍐呭癸纴镟村氲峰叧娉ㄥ叾瀹幂浉鍏虫枃绔狅紒闱欐佹垨钥卍ynamic锷ㄦ併傚湪钥佷竴浜涚殑鐗堟湰涓锛屽摋鎴杁ynamic鍙堣绉颁綔apache-like銆傝繖涓瑕佹敞镒忕湅閰岖疆鏂囦欢缁椤嚭镄勮存槑浜嗐
涓嬮溃4涓鍙傛暟镄勬剰镐濆垎鍒涓猴细
pm.max_children闱欐佹柟寮忎笅寮钖镄刾hp-fpm杩涚▼鏁伴噺锛
pm.start_servers锷ㄦ佹柟寮忎笅镄勮捣濮媝hp-fpm杩涚▼鏁伴噺锛
pm.min_spare_servers锷ㄦ佹柟寮忎笅镄勬渶灏弍hp-fpm杩涚▼鏁伴噺锛
pm.max_spare_servers锷ㄦ佹柟寮忎笅镄勬渶澶php-fpm杩涚▼鏁伴噺銆
濡傛灉灏哾m璁剧疆涓簊tatic锛岄偅涔埚氨鍙链塸m.max_children杩欎釜鍙傛暟鐢熸晥銆傜郴缁熶细寮钖璁剧疆镄勬暟閲忎釜php-fpm杩涚▼銆
濡傛灉灏哾m璁剧疆涓篸ynamic锛岄偅涔坧m.max_children鍙傛暟浼氩け鏁堬纴钖庨溃3涓鍙傛暟鐢熸晥銆傜郴缁熶细鍦╬hp-fpm杩愯屽紑濮嬬殑镞跺椤惎锷╬m.start_servers涓猵hp-fpm杩涚▼锛岀劧钖庢牴鎹绯荤粺闇姹傚姩镐佸湪pm.min_spare_servers鍜宲m.max_spare_servers涔嬮棿璋冩暣php-fpm杩涚▼鏁般
阃夋嫨鍝绉嶆墽琛屾柟寮忔瘆杈冨ソ
浜嫔疄鍜孉pache涓镙凤纴鎴戜滑杩愯岀殑PHP绋嫔簭鍦ㄦ墽琛屽畬鎴愬悗鎼灭粷锛屾垨澶氭垨灏戦兘浼氭湁鍐呭瓨娉勯湶镄勯梾棰樸傝繖涔熸槸涓轰粈涔埚紑濮嬬殑镞跺欎竴涓猵hp-fpm杩涚▼鍙鍗犵敤3M宸﹀彸鍐呭瓨锛岃繍琛屼竴娈垫椂闂村悗灏变细涓婂崌鍒20鍒30M镄勫师锲犮傛墍浠ワ纴锷ㄦ佹柟寮忓洜涓轰细缁撴潫鎺夊氢綑杩涚▼锛屽彲浠ュ洖鏀堕喷鏀句竴浜涘唴瀛桡纴镓浠ユ帹钻愬湪鍐呭瓨杈冨皯镄勬湇锷″櫒涓娄娇鐢ㄣ
鍏蜂綋链澶ф暟閲忔牴鎹鐗╃悊鍐呭瓨镐诲ぇ灏忛櫎浠20M寰楀埌銆傛瘆濡傝512M镄刅PS锛屽缓璁畃m.max_spare_servers鍊艰剧疆涓20銆傝岃呖浜巅m.min_spare_servers锛屽垯寤鸿镙规嵁链嶅姟鍣ㄧ殑璐熻浇𨱍呭喌𨱒ヨ剧疆锛屾瘆杈冨悎阃傜殑鍊煎湪5鍒10涔嬮棿銆
瀵规瘆杈冨ぇ鍐呭瓨镄勬湇锷″櫒𨱒ヨ达纴璁剧疆涓洪润镐佺殑璇濅细鎻愰珮鏁堢巼銆傚洜涓洪戠箒寮鍏硃hp-fpm杩涚▼涔熶细链夋椂婊烇纴镓浠ュ唴瀛桦熷ぇ镄勬儏鍐典笅寮闱欐佹晥鏋滀细镟村ソ銆傛暟閲忓彲浠ユ牴鎹鐗╃悊鍐呭瓨镐诲ぇ灏忛櫎浠30M寰楀埌銆傛瘆濡傝2GB鍐呭瓨镄勬湇锷″櫒锛屽彲浠ヨ剧疆涓50锛4GB鍐呭瓨鍙浠ヨ剧疆涓100绛夈
浠ヤ笂鍐呭逛粎渚涘弬钥冿紒
浠ヤ笂灏辨槸php鏄闱欐佽缮鏄锷ㄦ佺殑璇︾粏鍐呭癸纴镟村氲峰叧娉ㄥ叾瀹幂浉鍏虫枃绔狅紒