php-fpm的优化需要根据业务的实际来做出调整,首先必须确认业务请求是密集型,还是松散型,不通请求模式导致php-fpm的优化策略不一样。线上的php-fpm最好一段时间优化一次,以达到服务器的高负载。
文章目录
PHP-FPM是PHP FastCGI流程管理器。这是一个FastCGI守护程序,它允许网站处理高负载。但是有时此服务本身会导致高负载。
为了调试该问题,我们要做的第一件事是检查PHP-FPM错误日志,该日志位于“ /var/log/php7.0-fpm.log”等位置。
错误日志的位置因安装路径和PHP版本而异。在检查错误日志时,我们发现了一些类似的警告。
[12-Nov-2018 11:12:11] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 9 idle, and 89 total children
此消息表示PHP-FPM池非常繁忙,无法使用现有配置参数来处理高流量。
由于许多原因,PHP-FPM可能导致高服务器负载:
配置和管理Web服务器以获得最佳性能是我们的主要任务,分析并解决服务器负载过高的原因,这是服务的一部分。
服务器所有者倾向于立即修复的第一件事是重新启动PHP-FPM服务。但是,仅重新启动服务只是一个临时解决方案,您很快就会发现负载激增。
在调试此类负载问题时,我们会分析一段时间内的日志和服务器性能。这有助于我们查明罪魁祸首并采取迅速的行动加以纠正。
PHP-FPM主要分为三种类型:动 dynamic, ondemand和static.。服务的性能根据这种类型而大大不同。
在dynamic类型中,子进程数是根据conf文件中的PHP-FPM参数动态设置的。但这是一种占用大量内存的类型。
在static类型中,子进程的数目由pm.max_children参数固定,但是对于Web流量不断变化的服务器,此类型不灵活。它还消耗过多的内存。
在ondemand类型中,基于流量仅按需生成PHP-FPM进程。此类型有助于管理受内存限制的服务器中的各种流量。但是,当流量波动很大时,开销会增加。
在评估可用服务器内存,流量高峰,网站页面,CPU使用率等之后,确定PHP-FPM的工作方式。
PHP-FPM具有许多配置参数,这些参数决定了它的执行方式。必须根据可用的服务器资源(例如RAM和CPU)确定这些参数。
例如,服务器中运行的总进程数大约为=(总RAM /每个进程的内存)。在具有多个服务的服务器中,所有这些服务都将在调整过程中考虑在内。
根据服务路径,PHP / FPM配置文件将位于/etc/php-fpm.conf或其他位置。该文件的内容如下所示:
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 150
我们为性能调整的一些主要参数是:
服务器所有者经常犯的一个常见错误是,为这些参数设置很高的值,以获得最佳性能。但是,如果没有足够的资源,那么高的值可能会使服务器崩溃。
首先根据服务器资源,网站流量和网站内容确定“ pm.max_children”参数的值。然后在进一步测试中得出其他参数。
如果参数很好,但怀疑某个应用程序或站点会导致高负载,则在PHP-FPM中启用慢速日志选项。
request_slowlog_timeout = 6s
slowlog = /var/log/php-fpm/slowlog-site.log
在PHP-FPM配置文件中为“ slowlog”参数提到的日志文件记录了执行时间超过6秒的请求。
分析这些请求使我们能够跟踪和修复服务器中资源密集的请求和应用程序。
PHP-FPM可以选择为单独的应用程序配置多个资源池。这有助于包含每个应用程序的资源并提高安全性。
通过基于池配置参数,我们限制了单个池用尽所有服务器资源。删除未使用的池以进行进一步管理。
调整PHP-FPM以获得最佳性能,不是一个临时的修复。服务的配置和参数将根据服务器的需求和资源而有所不同。
在高峰流量期间,性能可能会与正常时间有所不同。因此,在进行了调整之后,我们进行了压力测试,以查看服务在高负载期间的性能。
根据压力测试过程中的服务器性能,我们会对服务进行进一步的微调。我们还将监视服务器负载一段时间,以确保所做的更改确实有所帮助。
调整PHP-FPM后减少CPU负载
在这种情况下,我们可以通过执行PHP-FPM调整来大大减少服务器负载。
但是,在某些情况下,例如MySQL或Web服务器也是罪魁祸首,仅PHP-FPM调优可能无济于事。在这些情况下,我们将执行其他任务,例如:
解决由于PHP-FPM服务引起的高负载问题。全天候监控服务器性能,并定期进行服务器调整,以确保服务器负载保持正常。
2025年2月18日:好用德国(哈雷)IOS机场和最新小火箭账号如何使用PHP OPCache?快帆VPN教学指南在Replit上,将订阅转换为Sing-box配置文件的图文教程Clash规则添加指南:详细步骤与FAQ星链翻墙:原理、使用方法及常见问题详解vless转vmess: 从vless到vmess的完整转换指南Chrome代理插件SmartProxy详细使用教程Git refusing to merge unrelated histories华硕AC86U,官改、梅林固件破解限制,安装科学上网插件「保姆级教程」动态网主页:功能、设计与制作Chatkick是一款一站式AI招聘平台如何配置和使用SSH over ShadowsocksPotatso Shadowsocks详细介绍、教程与常见问题解答如何安装v2ray服务器Flyingbird飞鸟机场——优质高速稳定机场推荐(优惠码💰💰) <span>FlyingBird机场</span>免费公益节点 丨2025每日更新发布白月光机场发布旧不限时流量包套餐调整通知主打流媒体解锁的中转机场 CoffeeCloud 怎么样?不限制设备数量国内中转配合Cloudflare优选IP瞬间起飞,拯救垃圾/被墙节点