ホームページ php教程 php手册 PHP 開発のための負荷分散ガイド

PHP 開発のための負荷分散ガイド

Jun 13, 2016 pm 12:14 PM
php 使用 大きい 小さい 開発する ガイド はい サーバ モデル 負荷 過去

現在、「大型サーバー」モデルは廃止され、さまざまな負荷分散技術を使用した多数の小型サーバーに置き換えられています。これは、ハードウェアのコストを最小限に抑える、より実現可能なアプローチです。

これまでの「大規模サーバー」モデルに対する「小規模サーバーの増加」の利点は、次の 2 つの側面に反映されています。

1. サーバーがダウンすると、負荷分散システムは要求を停止します。サーバーがダウンし、正常に動作している他のサーバーに負荷が分散されます。
2. サーバーの拡張が簡単になります。必要なのは、負荷分散システムに新しいサーバーを追加することだけです。アプリケーションを中断する必要はありません。

ですから、この機会を活用してください :) もちろん、その代償として、アプリケーション開発がもう少し複雑になる必要があります。それがこの記事の内容です。

この時点で、「でも、負荷分散を使用していることをどうやって確認すればよいでしょうか?」と思っているかもしれません。 '。この質問をしている場合の最も正直な答えは、おそらく負荷分散システムを使用していないし、システムは負荷分散システムを考慮する必要がない、というものです。ほとんどの場合、アプリケーションが十分に大きくなると、負荷分散を明示的に提案して設定する必要があります。ただし、Web ホスティング会社が顧客のアプリケーションに対してこの負荷分散を実行しているか、以下で説明するように自社で実行しているのを時々見かけます。

以下に進む前に、この記事では主に PHP の負荷分散について説明していることを指摘しておきます。将来、データの負荷分散について書くかもしれませんが、今は待ってください。

Web サイトではなく「Web アプリケーション」と繰り返し言及していることに注意してください。これは、「Web アプリケーション」が、単純な静的コンテンツのみを表示する Web サイトではなく、サーバー側のプログラミングやデータベースを含む複雑なサイトであることを区別するためです。 。

1. PHP ファイル

最初の質問は、多数の小規模サーバーがある場合、どのようにして PHP ファイルをすべてのサーバーにアップロードするかということです。参考までに、次の方法があります。

1. すべてのファイルを各サーバーに個別にアップロードします。この方法の問題点は、サーバーが 20 台ある場合、アップロード プロセスに非常に時間がかかることです。エラーが発生しやすく、更新時に異なるサーバーに異なるバージョンのファイルが存在する可能性が非常に高くなります。
2. 「rsync」(または同様のソフトウェア) を使用すると、ローカル ディレクトリ上のファイルと複数のリモート ホスト上のディレクトリを同期できます。
3. バージョン管理ソフトウェア (Subversion など) を使用します。これは私のお気に入りの方法です。これにより、コードを非常に適切に保守できるようになり、アプリケーションを公開するときに、各サーバーで svn update コマンドを実行してアプリケーションを同期できます。このアプローチにより、サーバーを以前のバージョンのコードに切り替えることも簡単になります。
4. ファイル サーバーを使用します (これには NFS が非常に適しています)。もちろん、ファイル サーバーがダウンした場合は、ファイル サーバーを使用してサイトを保存します。利用できなくなります。この時点で、復旧するにはさらに多くのお金が必要になります。

どの方法を選択するかは、ニーズと持っているスキルによって異なります。バージョン管理システムを使用している場合は、更新コマンドを同時に実行して、すべてのサーバー上のコードを更新する方法を計画するとよいでしょう。ただし、ファイル サーバーを使用する場合は、サーバーがダウンした場合にリクエストの失敗を防ぐために、何らかの障害回復メカニズムを実装する必要があります。

2. ファイルのアップロード

サーバーが 1 つだけの場合、ファイルのアップロードは問題ありません。しかし、複数のサーバーがある場合、アップロードされたファイルはどのように保存されるべきでしょうか?ファイルのアップロードの問題は、クロスサーバー PHP ファイル ストレージに似ています。考えられる解決策は次のとおりです。

1. ファイルをデータベースに保存します。ほとんどのデータではバイナリ データを保存できます。ファイルのダウンロードを要求すると、アクセス データはバイナリ データと、対応するファイル名と種類をユーザーに出力します。このソリューションを使用する前に、データベースがファイルをどのように保存するかを検討する必要があります。このアプローチの問題は、データベース サーバーがダウンするとファイルが使用できなくなることです。
2. アップロードされたファイルをファイル サーバーに保存します。前の説明と同様に、すべての Web サーバーが共有するファイル サーバーをインストールする必要があります。アップロード後、すべての Web サーバーがそれを使用できるようになります。 。ただし、ファイル サーバーがダウンしている場合は、画像ファイルのダウンロードが中断される可能性があります。
3. 各サーバーにファイルを転送するための独自のアップロード メカニズムを設計します。この方法には、単一のファイル サーバーまたはデータベース ソリューションの欠点はありませんが、コードが複雑になります。たとえば、複数のサーバーにアップロード中にサーバーがダウンした場合、どうすればよいでしょうか?

アップロードされたファイルを保存するにはデータベースを使用しますが、ファイル キャッシュ メカニズムを設計することは良い解決策です。サーバーはファイルのダウンロード要求を受信すると、まずファイルがキャッシュ システムに存在するかどうかを確認し、存在しない場合はデータベースからファイルを読み取り、ファイル システムにキャッシュします。

3. セッション

PHP のセッション処理に精通している場合は、デフォルトでセッション データがサーバー上の一時ファイルに保存されることをご存知でしょう。さらに、このファイルはリクエストしたサーバー上にのみ存在しますが、後続のリクエストは別のサーバーによって処理される可能性があり、その結果、他のサーバー上に新しいセッションが生成されます。これにより、ログインしたユーザーが常に再ログインを求められるなど、セッションが頻繁に認識されなくなります。

私が推奨する解決策は、PHP の組み込みセッション処理メカニズムを再確立してセッション データをデータベースに保存するか、独自のメカニズムを実装してユーザーのリクエストが確実に同じサーバーに送信されるようにすることです。

4. 構成 (Configuration)

このトピックは PHP とは特に関係ありませんが、それでも言及する必要があると感じます。クラスター化されたサーバーを実行する場合は、サーバー間で構成ファイルの同期を維持する何らかの方法を用意することをお勧めします。構成ファイルに一貫性がない場合、非常に奇妙な断続的な動作が発生し、トラブルシューティングが困難になる可能性があります。

バージョン管理システムを使用して個別に管理することをお勧めします。この方法により、プロジェクトのインストールごとに異なる php 設定ファイルを保存し、すべてのサーバー設定ファイルの同期を保つことができます。

5. ロギング

設定の問題と同様、ロギングは PHP だけに関連するものではありません。ただし、サーバーを健全な状態に維持することは依然として非常に重要です。適切なログ システムがなければ、PHP コードがエラーを生成し始めたかどうかをどうやって知ることができるでしょうか (システムが正式に実行されているときは、常に display_errors 設定をオフにしますよね?)

いくつかあります。ログを実装する方法:

1. 各サーバーでログを記録します。 これが最も簡単な方法です。各マシンは 1 つのファイルのみを記録します。利点は、シンプルで構成がほとんど必要ないことです。ただし、サーバーの数が増えると、各サーバー上のログ ファイルを監視することが非常に困難になります。
2. 共有にログを記録する この方法でも各サーバーにログ ファイルが存在しますが、共有メカニズムを通じて中央のファイル サーバーに保存されるため、ログの監視が容易になります。このソリューションの問題は、ファイル サーバーが利用できない場合、単純なログ書き込みの問題により、最終的にアプリケーション全体がクラッシュすることです。
3. ログ サーバーにログを記録する syslog などのログ ソフトウェアを使用して、すべてのログを中央サーバーに書き込むことができます。この方法ではさらに多くの構成が必要になりますが、最も堅牢なソリューションも提供されます。

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

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

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

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

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