目次
pool
聞いてください
pm
pm.max_children

PHP 最適化のごった煮

Jun 13, 2016 pm 12:18 PM
cpu nbsp php socket tcp

PHP の最適化 Hodgepodge

PHP の最適化に関する記事では、効率的なコードの書き方を説明することがよくありますが、この記事では、別の角度から問題を説明し、最適化の目的にも合わせて効率的な環境を構成する方法を説明することを目的としています。達成される。

pool

残念なニュースは、PHP プログラマの大多数が pool の値を無視していることです。ここで説明するプールは、データベース接続プールなどのことを指しますが、PHP では複数のプールを同時に起動できます。各プールは、互いの主権と領域の整合性を尊重しません。互いに内政干渉する。

-プール

利点は何ですか?デフォルトでは、PHP では 1 つのプールのみが有効になっており、すべてのリクエストはこのプールで実行されます。特定のリクエストが混雑すると、プール全体が炎上する可能性があります。複数のプールが有効になっている場合は、リクエストを異なるプールに分類して実行できます。混雑などの状況が発生した場合にのみ影響します。これにより、障害の範囲が制御されます。

聞いてください

Nginx と PHP は異なるサーバーにデプロイできますが、実際のアプリケーションでは、ほとんどの人が全員が同じサーバー上にデプロイすることに慣れているため、2 つのオプションがあります。1 つは TCP で、もう 1 つは Unix ソケットです。

-listen

TCP と比較すると、Unix Socket は TCP スリーウェイ ハンドシェイクなどの一部のリンクを省略するため、比較的効率的ですが、はい、Unix Socket を使用する場合は、TCP に対応する信頼性保証メカニズムがないため、バックログと somaxconn を大きく設定するのが最善です。そうしないと、同時実行性が高くなると不安定になります。

pm

プロセス管理は、動的と静的に分類できます。動的モードでは通常、最初に少数のプロセスが開始され、その後リクエストの数に応じてプロセスの数がリアルタイムで調整されます。この利点はリソースの節約であることは明らかですが、もちろん欠点も明らかです。一度大量のリクエストが発生すると、システムはビジー状態になり、新しいプロセスを FORK する必要があり、必然的にパフォーマンスに影響します。同様に、静的モードでは十分な数のプロセスを一度に FORK し、リクエストの量に関係なく変更されません。動的モードと比較して、静的モードはより多くのリソースを消費しますが、大量の同時リクエストに直面しても、高価な FORK を実行する必要はありません。

-pm

トラフィックの多い Web サイトの場合、サーバー リソースが逼迫していない限り、静的モードが最適な選択であることは間違いありません。

pm.max_children

いくつの PHP プロセスを開始するのが適切ですか?自分自身の答えを与える前に、次の記事を参照してください:

  • php-fpm の max_chindren に関するいくつかの誤解
  • PHP ワーカーは常に CPU の数と等しい必要があります

CPU は一度に 1 つのリクエストのみを処理できます。リクエストの数が CPU の数よりも多い場合、CPU は複数のタスクのスケジューリングを伴うため、必然的にパフォーマンスの一部を消費します。プロセスの数は CPU の数と同じである必要があり、各プロセスが専用の CPU に対応するため、コンテキスト切り替えの効率損失を最小限に抑えることができます。ただし、この結論が正しいのは、リクエストが CPU 集中型である場合に限られます。現時点では、データベース クエリなどの IO の存在が避けられないため、この結論には疑問があります。これにより、CPU は時間のかなりの部分を待機状態で費やすことになり、これは無駄な状態です。このとき、プロセスの数が CPU の数を超えている場合、IO が発生すると、CPU は実行を継続するために他のリクエストに切り替える機会が得られますが、これにより一定のコンテキスト切り替えのオーバーヘッドが発生しますが、これよりもはるかに優れています。 WAIT 状態に陥っています。

どれくらいが適切ですか?この問題を明確にするには、CPU に注意を払うことに加えて、メモリにも注意を払う必要があります:

-PHP メモリ

上に示したように、先頭のコマンドの結果のメモリ関連の列はそれぞれ VIRT、RES、SHR です。 VIRT はメモリ使用量の理論値を表します。通常、RES はメモリ使用量の実際の値を表しますが、これには SHR によって表示される値である共有メモリが含まれています。単一の PHP プロセスが独立して占有する実際のメモリ サイズは「RES - SHR」に等しく、通常は約 10M です。この計算に基づくと、理論的には 1G メモリで約 100 個の PHP プロセスをサポートでき、10G メモリで約 1,000 個の PHP プロセスをサポートできます。もちろん、多ければ多いほど良いと考えるのは失礼ではありません。PHP のステータス インターフェイスと組み合わせて、アクティブな接続数を監視して調整するのが最善です。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

See all articles