HestiaCP php-fpm プロセスは CPU リソースを大量に消費します。どうすれば最適化できますか?

HestiaCPサーバーのCPUスパイクが発生しましたか?PHP-FPMプロセスの最適化に関する完全ガイド!

HestiaCP php-fpm プロセスは CPU リソースを大量に消費します。どうすれば最適化できますか?

サーバーの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 脚本最多执行 30max_input_time = 30  # 处理输入数据最多 30memory_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を最適化してサーバーを保護しましょう! 🚀

Chen Weiliang氏のブログ(https://www.chenweiliang.com/ )に掲載されている記事「HestiaCPのphp-fpmプロセスが多くのCPUリソースを消費するが、どのように最適化すればよいか?」が、皆様のお役に立てば幸いです。

この記事のリンクはご自由に共有してください:https://www.chenweiliang.com/cwl-32490.html

さらに多くの隠されたトリックのロックを解除するには、Telegram チャンネルにぜひご参加ください。

気に入ったらシェアして「いいね!」してください!あなたのシェアと「いいね!」が私たちの継続的なモチベーションです。

 

发表评论

すでに* を記入ておく必要があります。

上へスクロール