ホームページ バックエンド開発 PHPチュートリアル php-fpm を使用して高パフォーマンスのチューニングを行う方法

php-fpm を使用して高パフォーマンスのチューニングを行う方法

Jul 08, 2023 am 11:30 AM
php-fpm チューニング ハイパフォーマンス

php-fpm を使用して高パフォーマンスのチューニングを行う方法

PHP は、Web アプリケーションや動的 Web サイトの開発に広く使用されている、非常に人気のあるサーバーサイド スクリプト言語です。ただし、トラフィックが増加すると、PHP アプリケーションのパフォーマンスが低下する可能性があります。この問題を解決するには、php-fpm (FastCGI Process Manager) を使用して高性能チューニングを行うことができます。この記事では、php-fpm を使用して PHP アプリケーションのパフォーマンスを向上させる方法とコード例を紹介します。

1. php-fpm のインストールと設定

まず、php-fpm をインストールする必要があります。次のコマンドを使用して、Linux システムに php-fpm をインストールできます:

sudo apt-get install php-fpm
ログイン後にコピー

インストールが完了したら、いくつかの構成を実行する必要があります。 php-fpm の設定ファイルを開きます。このファイルは、/etc/php/7.4/fpm/pool.d/www.conf にあります。構成ファイルでは、特定のニーズに応じて調整できます。

  1. プロセス プール構成を調整する

プロセス プールは php-fpm プロセスの数を制御し、実際の状況に応じて調整できます。以下にいくつかの構成例を示します。

pm = dynamic
pm.max_children = 10
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
ログイン後にコピー

上記の構成では、動的プロセス プール (動的) を使用し、子プロセスの最大数 (pm.max_children) を 10 に設定し、初期の子プロセスの数を 10 に設定します。開始された子プロセス (pm .start_servers) は 4、アイドル プロセスの最小数 (pm.min_spare_servers) は 2、アイドル プロセスの最大数 (pm.max_spare_servers) は 6 です。

  1. プロセス管理方法の最適化

php-fpm は、実際のニーズに応じて選択できるさまざまなプロセス管理方法をサポートしています。以下に、構成例をいくつか示します。

pm = ondemand
pm.process_idle_timeout = 10s
pm.max_requests = 500
ログイン後にコピー

上記の構成では、オンデマンド管理方法 (ondemand) を使用し、プロセス アイドル タイムアウト (pm.process_idle_timeout) を 10 秒に設定し、最大数を設定しました。リクエスト数 (pm.max_requests) は 500 です。

2. PHP コードの最適化

php-fpm の構成を調整することに加えて、PHP コードを最適化してパフォーマンスをさらに向上させることもできます。

  1. キャッシュの合理的な使用

PHP は、OPcache、APC、Memcached などのさまざまなキャッシュ メカニズムを提供します。これらのキャッシュ メカニズムを適切に使用すると、スクリプトの実行時間を大幅に短縮できます。

以下は OPcache を使用するためのサンプル コードです:

<?php
$filename = 'somefile.php';
if (apc_exists($filename)) {
    include apc_fetch($filename);
} else {
    ob_start();
    include $filename;
    $content = ob_get_contents();
    ob_end_clean();
    apc_store($filename, $content);
    echo $content;
}
?>
ログイン後にコピー
  1. データベースへの繰り返し接続を避ける

PHP アプリケーションでは、データベース接続は非常にリソースです。操作を消費するため、データベースへの繰り返し接続を避けるように努める必要があります。

次は、シングルトン モードを使用してデータベース接続を管理するためのサンプル コードです:

<?php
class Database {
    private static $instance;
    private $connection;

    private function __construct() {
        $this->connection = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
    }

    public static function getInstance() {
        if (!self::$instance) {
            self::$instance = new Database();
        }
        return self::$instance;
    }

    // ...
}

$db = Database::getInstance();

// 使用$db进行数据库操作
?>
ログイン後にコピー

3. モニタリングとデバッグ

パフォーマンス チューニングに php-fpm を使用した後、次のことも行います。最適化の結果を保証するには、監視とデバッグが必要です。

  1. php-fpm ステータス ページの使用

php-fpm には、ブラウザからアクセスして php-fpm の実行ステータスとパフォーマンスを表示できるステータス ページが用意されています。索引。

次のコマンドを使用して、php-fpm ステータス ページを有効にできます:

sudo nano /etc/php/7.4/fpm/pool.d/www.conf
ログイン後にコピー

構成ファイル内で次の行を見つけて、コメントを解除します:

;pm.status_path = /status
ログイン後にコピー

構成ファイルを保存します。

sudo service php-fpm restart
ログイン後にコピー
ログイン後にコピー

これで、http://yourdomain.com/status にアクセスして、php-fpm のステータス ページを表示できます。

  1. パフォーマンス デバッグに xdebug を使用する

xdebug は、パフォーマンスの問題のデバッグと分析に使用できる強力な PHP デバッガーです。

まず、xdebug をインストールする必要があります。次のコマンドを使用して、Linux システムに xdebug をインストールできます:

sudo apt-get install php-xdebug
ログイン後にコピー

インストールが完了したら、いくつかの構成を実行する必要があります。 php.ini ファイルを開きます。このファイルは、/etc/php/7.4/cli/php.ini および /etc/php/7.4/fpm/php.ini にあります。ファイルの最後に次の内容を追加します:

[xdebug]
zend_extension=/usr/lib/php/20190902/xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=1
ログイン後にコピー

構成ファイルを保存し、php-fpm を再起動します:

sudo service php-fpm restart
ログイン後にコピー
ログイン後にコピー

これで、デバッガー ソフトウェア (PhpStorm、Eclipse など) を使用できるようになります。 .) php-fpm に接続し、デバッグとパフォーマンス分析を実行します。

結論

php-fpm の構成と PHP コードを最適化することで、PHP アプリケーションのパフォーマンスを向上させることができます。プロセス プール構成の適切な調整、プロセス管理方法の最適化、キャッシュの使用、データベース接続の繰り返しの回避などの手法は、PHP アプリケーションの応答速度と同時処理能力を向上させるのに役立ちます。同時に、監視およびデバッグ ツールを通じて、パフォーマンスの問題を適時に発見して解決し、全体的なユーザー エクスペリエンスを向上させることができます。この記事が、php-fpm を使用した高パフォーマンスのチューニングに役立つことを願っています。

以上がphp-fpm を使用して高パフォーマンスのチューニングを行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Swoole を使用して高性能 HTTP リバース プロキシ サーバーを実装する方法 Swoole を使用して高性能 HTTP リバース プロキシ サーバーを実装する方法 Nov 07, 2023 am 08:18 AM

Swoole を使用して高性能 HTTP リバース プロキシ サーバーを実装する方法 Swoole は、PHP 言語に基づいた高性能、非同期、同時ネットワーク通信フレームワークです。一連のネットワーク機能を提供し、HTTP サーバー、WebSocket サーバーなどの実装に使用できます。この記事では、Swoole を使用して高性能 HTTP リバース プロキシ サーバーを実装する方法と、具体的なコード例を紹介します。環境構成 まず、サーバーに Swoole 拡張機能をインストールする必要があります

PHP と WebSocket: 高性能のリアルタイム アプリケーションの構築 PHP と WebSocket: 高性能のリアルタイム アプリケーションの構築 Dec 17, 2023 pm 12:58 PM

PHP と WebSocket: 高性能リアルタイム アプリケーションの構築 インターネットが発展し、ユーザーのニーズが高まるにつれて、リアルタイム アプリケーションはますます一般的になってきています。従来の HTTP プロトコルには、最新のデータを取得するために頻繁なポーリングや長時間のポーリングが必要になるなど、リアルタイム データを処理する場合にいくつかの制限があります。この問題を解決するために、WebSocket が登場しました。 WebSocket は、双方向通信機能を提供する高度な通信プロトコルであり、ブラウザとサーバーの間でリアルタイムの送受信を可能にします。

C++ ハイパフォーマンス プログラミングのヒント: 大規模なデータ処理のためのコードの最適化 C++ ハイパフォーマンス プログラミングのヒント: 大規模なデータ処理のためのコードの最適化 Nov 27, 2023 am 08:29 AM

C++ は、開発者に柔軟性と拡張性を提供する高性能プログラミング言語です。特に大規模なデータ処理シナリオでは、C++ の効率と高速な計算速度が非常に重要です。この記事では、大規模なデータ処理のニーズに対応するために C++ コードを最適化するためのテクニックをいくつか紹介します。従来の配列の代わりに STL コンテナを使用する C++ プログラミングでは、配列は一般的に使用されるデータ構造の 1 つです。ただし、大規模なデータ処理では、vector、deque、list、set などの STL コンテナーを使用すると、より多くの処理が実行される可能性があります。

Go 言語を使用して高性能音声認識アプリケーションを開発および実装する Go 言語を使用して高性能音声認識アプリケーションを開発および実装する Nov 20, 2023 am 08:11 AM

科学技術の継続的な発展に伴い、音声認識技術も大きく進歩し、応用されています。音声認識アプリケーションは、音声アシスタント、スマート スピーカー、仮想現実などの分野で広く使用されており、より便利でインテリジェントな対話方法を人々に提供しています。高性能音声認識アプリケーションを実装する方法は、検討する価値のある問題となっています。近年、音声認識アプリケーションの開発において、高機能なプログラミング言語としてGo言語が注目を集めています。 Go 言語は、同時実行性が高く、記述が簡潔で、実行速度が速いという特徴があり、高パフォーマンスの言語を構築するのに非常に適しています。

Go 言語を使用して高性能の顔認識アプリケーションを開発する Go 言語を使用して高性能の顔認識アプリケーションを開発する Nov 20, 2023 am 09:48 AM

Go 言語を使用して高性能の顔認識アプリケーションを開発する 要約: 顔認識テクノロジは、今日のインターネット時代において非常に人気のあるアプリケーション分野です。この記事では、Go 言語を使用して高性能の顔認識アプリケーションを開発する手順とプロセスを紹介します。 Go 言語の同時実行性、高性能、使いやすさの機能を使用することで、開発者は高性能の顔認識アプリケーションをより簡単に構築できます。はじめに: 今日の情報社会では、顔認識技術はセキュリティ監視、顔決済、顔ロック解除などの分野で広く使用されています。インターネットの急速な発展により、

Docker と Spring Boot の技術的実践: 高パフォーマンスのアプリケーション サービスを迅速に構築する Docker と Spring Boot の技術的実践: 高パフォーマンスのアプリケーション サービスを迅速に構築する Oct 21, 2023 am 08:18 AM

Docker と SpringBoot の技術的実践: 高パフォーマンスのアプリケーション サービスを迅速に構築する はじめに: 今日の情報化時代において、インターネット アプリケーションの開発と展開はますます重要になっています。クラウド コンピューティングと仮想化テクノロジの急速な発展に伴い、軽量コンテナ テクノロジとして Docker が広く注目され、応用されるようになりました。 SpringBoot は、Java アプリケーションを迅速に開発および展開するためのフレームワークとしても広く認識されています。この記事では、Docker と SpringB を組み合わせる方法について説明します。

LLM を微調整する方法の革新: PyTorch のネイティブ ライブラリ torchtune の革新的な力と応用価値の包括的な解釈 LLM を微調整する方法の革新: PyTorch のネイティブ ライブラリ torchtune の革新的な力と応用価値の包括的な解釈 Apr 26, 2024 am 09:20 AM

人工知能の分野では、大規模言語モデル (LLM) が研究と応用においてますます新たなホットスポットになりつつあります。ただし、これらの巨大なシステムを効率的かつ正確に調整する方法は、産業界と学術界が常に直面している重要な課題です。最近、PyTorch 公式ブログに TorchTune に関する記事が掲載され、広く注目を集めました。 LLM のチューニングと設計に焦点を当てたツールとして、TorchTune はその科学的性質と実用性が高く評価されています。この記事では、LLM チューニングにおける TorchTune の機能、特長、および応用について詳しく紹介し、読者に包括的かつ深い理解を提供したいと考えています。 1. トーチチューンの誕生背景と意義、深層学習技術と深層学習モデル(LLM)の開発

Linux システムのシステム チューニングとパフォーマンス テストを実行する方法 Linux システムのシステム チューニングとパフォーマンス テストを実行する方法 Nov 07, 2023 am 11:33 AM

オペレーティング システムのパフォーマンスの最適化は、効率的なシステム運用を確保するための鍵の 1 つです。 Linux システムでは、システムの最高のパフォーマンスを確保するために、さまざまな方法でパフォーマンスのチューニングとテストを実行できます。この記事では、Linux システムのシステム チューニングとパフォーマンス テストを実行する方法を紹介し、対応する具体的なコード例を示します。 1. システムチューニング システムチューニングとは、システムのさまざまなパラメータを調整することにより、システムのパフォーマンスを最適化することです。 1. カーネル パラメータを変更する Linux システムのカーネル パラメータは、システムの動作を制御します。

See all articles