検索

php fpmの設定方法

Nov 05, 2020 am 09:27 AM

php fpm の設定方法: 最初に ps コマンドで php-fpm に関連するすべてのプロセスを確認し、次に pstree コマンドで php-fpm の下のサブプロセスを確認し、次にパラメータ プロセスを設定し、最後に確認します。 php-fpm パラメータを設定するだけです。

php fpmの設定方法

推奨: 「PHP ビデオ チュートリアル

php-fpm

php- とはfpm は PHP のプロセス マネージャーです。 php の下の多くのワークプロセスは、php-fpm プロセス マネージャーによって管理されます。

php-fpm の仕組み

php-fpm の正式名は、PHP FastCGI Process Manager です。 php-fpm が開始されると、最初に php.ini が読み取られ、次に対応する conf 設定ファイルが読み取られます。conf 設定は php.ini の設定をオーバーライドできます。 php-fpm を開始すると、ポート 9000 をリッスンするマスター プロセスが作成されます (構成可能)。マスター プロセスは、fpm.conf/www.conf に基づいていくつかのサブプロセスを作成します。サブプロセスは、実際のビジネスを処理するために使用されます。 。 クライアント (nginx など) がポート 9000 に接続すると、アイドル状態のサブプロセスがそれ自体を受け入れます。すべてのサブプロセスがビジーの場合、受け入れられる新しい接続はマスターによってキューに入れられ、待機します。 fpm サブプロセスはアイドル状態になります。;受け入れられるセミ接続を格納するキューの長さは、listen.backlog によって構成されます。

php-fpm プロセスと子プロセスを表示する方法

php-fpm に関連するすべてのプロセスを表示します。

php fpmの設定方法

ここでの pool www はすべて php-fpm のサブプロセスであり、これは私たちがよくワークプロセスと呼ぶものです。

php-fpm のサブプロセスを表示

上記のコマンドにより、実際に php-fpm に関連するプロセスを確認できます。php-fpm のマスターをさらに表示する必要がある場合は、直感的にプロセスや作業プロセスを以下の方法で見ることができます。 ここでの 5370 は php-fpm のマスタープロセス番号です。上記のコマンドを実行すると、それがはっきりとわかります。

php fpmの設定方法

上記のコマンドにより、php-fpm がマスター プロセスであり、その下に 15 個のサブプロセスがあることがわかります。ここでの子プロセスの数はプロセスによってカスタマイズできます。次のパラメータを使用して構成を処理します。

pm = dynamic # 动态创建子进程
pm.max_children = 20 # 最大子进程数
pm.start_servers = 15 # 初始化php-fpm进程时,默认的子进程数复制代码

php-fpm パラメータ構成手順

php-fpm グローバル構成パラメータ

#php-fpm的运行权限。
#以什么用户什么组的权限来运行池fpm。
user = www
group = www

#php-fpm的运行方式,可以使端口,也可以使socke文件。
#如果是端口则是走tcp,如果是socket则直接读socket文件,这样性能相对更好。
listen = 127.0.0.1:9000 

#拥有socket权限的用户,需要和上面的user、group配置相结合。
#如果采用的端口的方式,则不配置。
listen.owner = www
listen.group = www
listen.mode = 0660

#这是php-fpm端口连接的地址。多个用","隔开。默认任意地址都可以连接。
#例如Nginx和php-fpm不在同一台服务器上,这里的值就是Nginx服务的ip地址。
#当Nginx和php-fpm配置在同一台服务器上,则直接写127.0.0.1即可。
listen.allowed_clients = 127.0.0.1 

#pid进程文件存放的位置,当我们启用一个php服务,
#则会自动创建一个该pid文件,其实我们可以直接把该文件理解理解php-fpm的进程号文件,
#两则是等价的。默认为none。
pid = /opt/remi/php72/root/var/run/php-fpm/php-fpm.pid 

#错误日志位置,默认:安装路径 #INSTALL_PREFIX#/log/php-fpm.log。
#如果设置为syslog,log就会发送给syslogd服务而不会写进文件里。
error_log = /opt/remi/php72/root/var/log/php-fpm/error.log 

#PHP限制的文件扩展名
security.limit_extensions = .php .php3 .php4 .php5 .php7

#系统日志标示,如果跑了多个fpm进程,需要用这个来区分日志是谁的。
syslog.ident = php-fpm 

#日记登记,可选:alert, error, warning, notice, debug。
log_level = notice 

#紧急重启阈值,需要与下面emergency_restart_interval参数一起配置。
emergency_restart_threshold = 60 

# 紧急重启阈值的时间范围。在此参数设置的时间内,
# 出现SIGSEGV或SIGBUS的子进程数超过emergency_restart_threshold参数设置的值。
# 那么fpm就会优雅的重启,值是0表示off这个功能,可用的单位有:s秒,m分,h时,d天。
emergency_restart_interval = 60s 

#设置子进程接受主进程复用信号的超时时间。
process_control_timeout = 0 

#当动态管理子进程时,fpm最多能fork多少个进程,0表示无限制,
# 这是所有进程池能启动子进程的总和,谨慎使用。
process.max = 128 

#设置子进程的优先级,在master进程以root用户启动时有效;
#如果没有设置,子进程会继承master进程的优先级,值范围-19(最高)到20(最低),默认不设置。
process.priority = -19 

#设置成no用于调试bug,默认为yes。
daemonize = yes 

#master进程最多能打开的文件数量。默认采用系统设置的值。
rlimit_files = 1024 

#master进程核心rlimit限制值;可选unlimited或>=0的整数,默认为系统的值。
rlimit_core = 0

#事件处理机制,默认自动检测,可选值:select,poll,
#epoll(linux>=2.5.44),kqueue,/dev/poll,port
events.mechanism = epoll 

#fpm想系统发送状态的频率。单位有s,m,h。
#前提是fpm被设置会系统服务。
systemd_interval = 10s

php-fpm プロセス プロセス プール構成

#php-fpm的队列长度。
listen.backlog = 65535 

#php进程池权限,同样要master进程是root用户才有效,
#和上面的全局设置一样,不设置的话会继承master进程的优先级。
process.priority = -19 

#子进程管理方式
#static(静态配置,在启动php-fpm时根据该值创建固定的子进程数量);
#dynamic(动态配置,在启动php-fpm时根据pm.start_servers的值初始化对应的子进程数,至少一个子进程);
#ondemand(按需配置,在启动php-fpm时不创建子进程,而是根据请求动态fork子进程);
pm = dynamic 

#最大子进程数量
pm.max_children = 5 

#初始化子进程数量,与上面的pm = dynamic配置使用。
pm.start_servers = 2 

#服务器闲置时最少保持2个子进程,不够这个数就会创建,只适用动态dynamic管理方式
pm.min_spare_servers = 2 

#服务器闲置时最多要有几个,多了会kill,只适用动态dynamic管理方式
pm.max_spare_servers = 3 

#子进程闲置时间,也就是说子进程没有可处理的任务时,在该之间使就会被killed。
pm.process_idle_timeout = 10s

#每个子进程最大的处理请求数量。在一定程度上可以防止内存泄漏。
pm.max_requests = 500 

#php-fpm状态监控的uri
pm.status_path string

#php-fpm监控页面的 ping 网址。
#如果没有设置,则无法访问 ping 页面。
#该页面用于外部检测php-fpm是否存活并且可以响应请求。请注意必须以斜线开头(/)。
ping.path string

#用于定义ping请求的返回响应。返回为 HTTP 200 的 text/plain 格式文本。默认值:pong。
ping.response string

#设置worker的nice(2)优先级(如果设置了的话)。
#该值从 -19(最高优先级) 到 20(更低优先级)。 
#默认值:不设置
process.priority int

#检测路径时使用的前缀
prefix string

#访问文件日志,没啥用处,比如yii2每次都记录访问index.php,只是记录真实的PHP文件。
access.log = var/log/$pool.access.log 

#php的慢日志
slowlog = var/log/$pool.log.slow 

#慢日志时间阈值
request_slowlog_timeout = 2s 

#单个请求的超时时间,当php.ini设置的最大执行时间未生效,则交由它来处理。
request_terminate_timeout = 3s 

#最大打开句柄数,默认为系统值。
rlimit_files = 1024 

#最多的核心使用数,默认为系统分配。
rlimit_core = 0

部分的な構成のデモ

php-fpm のバックログ サイズ設定

php-fpm のバックログ サイズ設定は、php-fpm の処理能力に関連しており、大きければ大きいほど良いというわけではありません。 。

値が大きすぎると、php-fpm はそれを処理できず、nginx はタイムアウトを待って切断し、504 ゲートウェイ タイムアウト エラーを報告します。同時に、php-fpm が処理を終了し、nginx への書き込みデータを準備したときに、TCP 接続が切断されたことがわかり、「パイプの破損」が報告されました。

この値が小さすぎると、nginx などのクライアント リクエストが php-fpm の受け入れキューにまったく入ることができなくなり、「502 Bad Gateway」エラーが報告されます。したがって、バックログのサイズは php-fpm の QPS に基づいて決定する必要があります。最適な計算方法は、QPS=バックログです。 詳細については、www.jianshu.com/p/3ecc99ebf…

php-fpm 起動モード

php-fpm はソケットまたはポートによって起動されます。これら 2 つの方法は、次のことに基づいています。実際の状況と構成を説明します。

nginx と php-fpm は同じサーバー上にあります。現時点では、TCP ポート通信の代わりに Unix ソケットのプロセス間通信を直接使用できるため、接続の作成時間を節約でき、パフォーマンスが向上します。 。 fpm がそのディレクトリにファイルを書き込む権限を持ち、nginx がそれを読み取る権限を持っている限り、sock ファイルはどこにでも作成できます。 TCP プロトコルはデータの正確性を保証するため、TCP 接続はより安定しますが、sock ではデータのコピーとコンテキストの切り替えが少なく、消費するリソースも少なくなります。ただし、ソケットは nginx と fpm が同じマシン上にある場合にのみ使用できます。

ソケット起動またはポート起動を選択する方法。

tcp メソッドは unix メソッドよりも同時実行性が高いため、同時実行性の高いプロジェクトには tcp メソッドを使用することをお勧めします。現在、Nginx 構成サンプル ファイルはデフォルトで tcp メソッドになっています。

UNIX 方式を使用する場合、最適化ポイントはソケット ファイルを /dev/shm ディレクトリに配置することです。このディレクトリに配置する理由については、.www.linuxidc.com/Linux/ を参照してください。 2014年~…。一般的な意味は、このディレクトリ下のファイルはハードディスクには保存されず、メモリに保存されるということです。ハードディスクの読み取りとメモリの読み取りでは、どちらが速くてどちらが遅いでしょうか? メモリが間違いなく速いです。

ソケット モードで起動するときにソケット ファイルを表示する方法。

socket文件是根据上面提到的pid配置项而定的。我们可以直接使用cat命令,查看进程号。

php fpmの設定方法

子进程默认启动数量,通过上面的pm = dynamic 配置,我们知道这种方式是动态配置子进程大小的,同时我们也可以设置默认的子进程数。

pm = dynamic
pm.max_children = 20### 默认15个子进程,演示的效果就是上面的shell命令的结果图。pm.start_servers = 15

当我们尝试设置为3时,显示如下错误信息。

php fpmの設定方法

说明,这里的start_servers配置项和min_spare_servers配置是有一定的关系的。我们设置为最小10,结果就能正常启动php-fpm了。


以上がphp fpmの設定方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
酸とベースデータベース:違いとそれぞれを使用するタイミング。酸とベースデータベース:違いとそれぞれを使用するタイミング。Mar 26, 2025 pm 04:19 PM

この記事では、酸とベースのデータベースモデルを比較し、その特性と適切なユースケースを詳述しています。酸は、財務およびeコマースアプリケーションに適したデータの整合性と一貫性を優先し、ベースは可用性に焦点を当て、

PHPセキュアファイルアップロード:ファイル関連の脆弱性の防止。PHPセキュアファイルアップロード:ファイル関連の脆弱性の防止。Mar 26, 2025 pm 04:18 PM

この記事では、コードインジェクションのような脆弱性を防ぐために、PHPファイルのアップロードを確保することについて説明します。ファイルタイプの検証、セキュアストレージ、およびアプリケーションセキュリティを強化するエラー処理に焦点を当てています。

PHP入力検証:ベストプラクティス。PHP入力検証:ベストプラクティス。Mar 26, 2025 pm 04:17 PM

記事では、組み込み関数、ホワイトリストアプローチ、サーバー側の検証などの手法に焦点を当てたセキュリティを強化するためのPHP入力検証のベストプラクティスについて説明します。

PHP APIレート制限:実装戦略。PHP APIレート制限:実装戦略。Mar 26, 2025 pm 04:16 PM

この記事では、Token BucketやLeaky BucketなどのアルゴリズムやSymfony/Rate-Limiterなどのライブラリを使用するなど、PHPでAPIレート制限を実装するための戦略について説明します。また、監視、動的に調整されたレートの制限、および手をカバーします

PHPパスワードハッシュ:password_hashおよびpassword_verify。PHPパスワードハッシュ:password_hashおよびpassword_verify。Mar 26, 2025 pm 04:15 PM

この記事では、パスワードを保護するためにPHPでpassword_hashとpassword_verifyを使用することの利点について説明します。主な議論は、これらの関数が自動塩の生成、強力なハッシュアルゴリズム、およびSecurを通じてパスワード保護を強化するということです

OWASPトップ10 PHP:共通の脆弱性を説明し、軽減します。OWASPトップ10 PHP:共通の脆弱性を説明し、軽減します。Mar 26, 2025 pm 04:13 PM

この記事では、PHPおよび緩和戦略におけるOWASPトップ10の脆弱性について説明します。重要な問題には、PHPアプリケーションを監視および保護するための推奨ツールを備えたインジェクション、認証の壊れ、XSSが含まれます。

PHP XSS予防:XSSから保護する方法。PHP XSS予防:XSSから保護する方法。Mar 26, 2025 pm 04:12 PM

この記事では、PHPでのXSS攻撃を防ぐための戦略について説明し、入力の消毒、出力エンコード、セキュリティを向上させるライブラリとフレームワークの使用に焦点を当てています。

PHPインターフェイスvs抽象クラス:それぞれを使用する時期。PHPインターフェイスvs抽象クラス:それぞれを使用する時期。Mar 26, 2025 pm 04:11 PM

この記事では、PHPでのインターフェイスと抽象クラスの使用について説明し、それぞれをいつ使用するかに焦点を当てています。インターフェイスは、無関係なクラスや複数の継承に適した、実装なしで契約を定義します。抽象クラスは共通の機能を提供します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)