記事ディレクトリ
ヘスティアCP サーバーCPUが急増? PHP-FPM プロセスを最適化するための完全なガイド!

サーバーの CPU は常に 100% ですか?ファンが激しく回転していますか?ウェブサイトの起動速度が遅くなっていませんか?犯人はphp-fpmかもしれません!
私は最近発見した chenweiliang.com このPHPプール php-fpm プロセスが CPU を大量に消費し、サーバーがクラッシュしました。
サーバーを復活させるために、一連の最適化手法を試し、最終的にCPU使用量を削減することに成功しました。
さあ、これを共有しましょう 効率的な最適化ガイド! 🚀
1. php-fpmプロセスの数を制限する
php-fpmのデフォルト設定は无限プロセスが制御不能に作成され、サーバーの CPU が過負荷になります。
最適化するには、プロセス管理パラメータを変更します。
開く php-fpm 構成文例:
sudo nano /etc/php/*/fpm/pool.d/www.conf
- *PHP8.3 などの PHP バージョンに変更し、次のように変更します。
/etc/php/8.3/fpm/pool.d/www.conf
HestiaCP によって設定された PHP バージョンを照会する
v-list-web-domain user domain.com
例えば:
v-list-web-domain abc chenweiliang.com
出力には次のようなものが表示されます。
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
これは、サイトが PHP 8.3。
次のパラメータを見つけて変更します。
pm = dynamic
pm.max_children = 16 ; 根据服务器资源调整,建议值:CPU 核心数 × 2
pm.start_servers = 4 ; 初始进程数,建议设为 max_children × 25%
pm.min_spare_servers = 2 ; 最小空闲进程数
pm.max_spare_servers = 7 ; 最大空闲进程数
pm.max_requests = 3000 ; 每个子进程处理完 3000 个请求后自动重启
pm.process_idle_timeout = 10s ; 空闲进程 10s 后自动退出
その後再起動 php-fpm 効果を上げるには:
sudo systemctl restart php-fpm
✅ 效果: php-fpm が CPU リソースを過剰に消費するのを防ぐために、プロセスの数を制限します。
2. OPCacheを有効にする(PHPのパフォーマンスを向上させるため)
PHP は実行されるたびにコードを再解析するため、リソースが無駄になります。
解決策は? OPCache を有効にして PHP コードをキャッシュします。
編集します php.ini 資料:
sudo nano /etc/php/*/fpm/php.ini
以下を追加または変更します。
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # 禁用实时检测,提高性能
保存後、PHP プロセスを再起動します。
sudo systemctl restart php8.3-fpm
✅ 效果: PHP コードの繰り返し解析を減らし、CPU の負荷を軽減し、実行効率を向上させます。
3. PHPスクリプトの最大実行時間を制限する
PHP スクリプトの実行時間が長すぎると、CPU リソースが継続的に占有されます。
適切なタイムアウト期間を設定すると、「頑固な」プロセスが長時間サーバーを占有するのを防ぐことができます。
開く php.ini 資料:
sudo nano /etc/php/*/fpm/php.ini
次のパラメータを変更します。
max_execution_time = 30 # PHP 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
次に、PHP プロセスを再起動します。
sudo systemctl restart php-fpm
✅ 效果: PHP プロセスが長時間実行されるのを防ぎ、CPU リソースの浪費を減らします。
4. チェック MySQL クエリが遅い
PHP-FPMは負荷が高く、遅い SQL クエリが原因の可能性があります。
开INV MySQL スロークエリログ、妨げとなっている SQL ステートメントを見つけます。
MySQL 構成ファイルを編集します。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
追加:
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1 # 超过 1 秒的查询会被记录
保存したら、MySQL を再起動します。
sudo systemctl restart mysql
次に mysqldumpslow 遅いクエリを分析します。
mysqldumpslow -s c -t 10 /var/log/mysql-slow.log
✅ 效果: 時間のかかる SQL クエリを見つけ出し、データベースのパフォーマンスを最適化し、間接的に PHP の負荷を軽減します。
5. Memcachedのリソース使用量を制限する
プロセスリストを見ると、 Memcached プロセスの CPU 使用率は 24.8% です。
キャッシュ割り当てが大きすぎるために、CPU が大量のデータを処理している可能性があります。
调整 memcached 構成:
sudo nano /etc/memcached.conf
修正:
-m 32 # 限制 Memcached 内存使用 32MB
次に再起動します。
sudo systemctl restart memcached
✅ 效果: Memcached プロセスの CPU 負荷を軽減し、キャッシュ効率を向上させます。
6. Nginxを有効にして静的リソースをキャッシュする
多くの場合、PHPは大量の CSS、JS、画像ただし、これらのファイルでは PHP 解析はまったく必要ありません。
解決策は?静的リソースをキャッシュするには Nginx を使用してください。
Nginx 設定を編集します。
sudo nano /etc/nginx/nginx.conf
追加:
location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
expires max;
log_not_found off;
}
保存したら、Nginx を再起動します。
sudo systemctl restart nginx
✅ 效果: PHP が静的ファイルを処理する回数を減らし、CPU 使用率を削減します。
7. CPUを最も多く使用するPHPスクリプトを見つける
最適化後も CPU 使用率が高すぎる場合は、一部の PHP スクリプトが乱暴に実行されている可能性があります。
次のコマンドを使用して、CPU 使用率が最も高い PHP プロセスを見つけます。
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
PHP スクリプトが CPU を大量に消費していることがわかった場合は、それを直接強制終了することができます。
kill -9 PID
✅ 效果:「悪いリンゴ」を正確に識別し、PHP プロセスが CPU を長時間占有するのを防ぎます。
要約: PHP-FPM を最適化する 7 つの方法
✅ PHP-FPMプロセスの数を制限するCPUの過負荷を防ぐため
✅ OPCacheを有効にするPHPコードの繰り返し解析を削減
✅ PHPタイムアウトの設定長期運用を防ぐため
✅ MySQL の遅いクエリを確認する、データベースクエリのパフォーマンスを最適化します
✅ Memcached メモリを調整するCPUの負担を軽減
✅ Nginx 静的キャッシュを有効にするPHPの解析負荷を軽減
✅ CPU使用率の高いPHPスクリプトを見つける、正確な最適化
结论
サーバーの最適化はフィットネスのようなもので、正確な調整を行う必要があり、いじらないでください。
一連の最適化を行った結果、サーバーのCPU負荷は 80%から15%に減少、ウェブサイトの起動速度が 2 倍になります。
サーバーに同様の問題がある場合は、これらの方法を試してください。 💪
👉 今すぐ行動を起こしましょう! PHP-FPM を最適化してサーバーを節約しましょう! 🚀
Hope Chen Weiliang ブログ ( https://www.chenweiliang.com/ ) が共有した「HestiaCP php-fpm プロセスは CPU リソースを大量に消費します。これを最適化するにはどうすればよいですか?」 ”」が役に立つかもしれません。
この記事のリンクを共有することを歓迎します。https://www.chenweiliang.com/cwl-32490.html
さらに多くの隠されたトリックのロックを解除するには、Telegram チャンネルにぜひご参加ください。
気に入ったらシェアして「いいね!」してください!あなたのシェアと「いいね!」が私たちの継続的なモチベーションです。