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

ヘスティアCP サーバー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 を最適化してサーバーを節約しましょう! 🚀

Hope Chen Weiliang ブログ ( https://www.chenweiliang.com/ ) が共有した「HestiaCP php-fpm プロセスは CPU リソースを大量に消費します。これを最適化するにはどうすればよいですか?」 ”」が役に立つかもしれません。

この記事のリンクを共有することを歓迎します。https://www.chenweiliang.com/cwl-32490.html

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

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

 

发表评论

バグのあるボックスの内容は公開されません。 必須アイテム * 标注

上へスクロール