PHP 最適化のごった煮
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 のステータス インターフェイスと組み合わせて、アクティブな接続数を監視して調整するのが最善です。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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