2017-02-08 3 views
0

HTTP APIを実行しているため、毎分30,000回以上呼び出す必要があります。
現在、1分あたり1,200回と呼ぶことができます。毎分1200回の呼び出しを行うと、すべての要求が完了し、すぐに応答が得られます。
しかし、1分に12,000回も呼び出すと、すべての要求を完了するのに10分かかります。そしてその10分の間、私はサーバー上のどのWebページも閲覧することができません。私はCentOSの7高HTTP APIコールのときにApacheサーバーが遅くなる

サーバーの仕様

インテル®Xeon®E5-1650 v3のヘキサコアハスウェル、
RAM 256ギガバイトDDR4 ECC RAM、
ハードドライブ2 Xを実行しています

非常に遅いことがありますタイムスタンプエコー480ギガバイトSSD(ソフトウェアRAID 1)、
接続1ギガビット/秒

API-単純なPHPスクリプト

echo time(); 

私はtopコマンドを確認し、サーバー

には負荷はありません

おかげ

答えて

1

が輻輳問題のような音、それに私を助けてください。 次のリクエストが直前の実行時間内に完了した場合、スクリプト/ページの処理方法は問題ありません。

リソース(CPU、RAM、ディスク、ネットワークトラフィック、および接続)。 それに平行なすべてのものを遅くします。

可能なことはいくつかありますが、セットアップで問題がどのようなものかを正確に把握し、測定値が目的の結果を生成するかどうかを判断する必要があります。

リソースが並列プロセスによって混雑するという問題がある場合は、接続制限を減らして接続を待機モードにすることができ、すべてを混雑させる代わりに実際にページを渡すためのリソースが増えます。 これを見てください:それはそれらを処理することができ、サーバは速く接続を受け入れる場合 http://oxpedia.org/wiki/index.php?title=Tune_apache2_for_more_concurrent_connections

を、あなたは今まであなたが変更に問題を持ってしようとしています。ある時点で接続が切断されるはずです。フランスのバゲットをすみやかに喉の下に詰め込めば、口を開くことができ、どちらかの方法で窒息するでしょう。

ネットワーク側でシステムが圧倒された場合(転送速度制限、OSの同時接続など)、ロードバランサの使用を検討する必要があります。ロードバランサがサーバーに実際にページ要求を処理する能力があることを確認した後でのみ、ユーザーはさらにユーザーを送信します。 これは通常、ページの読み込み(サーバー側のコードの実行、大量のデータなど)を遅らせる何らかの処理を行うとうまく動作します。

パフォーマンスを最適化してください WebサーバーでPHPコードを実行する方法はたくさんありますが、あなたはappacheを使用すると仮定します。私は専門家ではありませんが、CGIやFastCGIなどのモードがあります。大幅に実行速度を向上させることができます。これらに接続された設定を調整することで、何が起きているかを表示することもできます。たとえば、その数の同時接続を処理するPHPの脅威の数はごくわずかです。

はここに解決策なし「すべてのためにベストフィット」はありません http://blog.layershift.com/which-php-mode-apache-vs-cgi-vs-fastcgi/

例えば、このような何かを見てください。それを修正するには、サーバーのボトルネックが何であるかを把握する必要があります。それに応じて行動してください。

12000 1分あたりの通話回数== 200回/秒。

テストケースを多数の200に制限し、設定を変更しながらテストケースを増減できます。あなたの目標は、可能な限り最短時間でリクエスト数を調整して、輻輳が起こらないようにすることです。

それは言った:結果。

達成したいページの最大ロード数を最適化するために変更を実装する場合は、誤って他の条件を導入することになります。たとえば、Apacheによる最大のRAM使用量が問題になる場合、その上限を上げるとパフォーマンスは向上しますが、他のプロセスでもより多くのメモリを要求したい場合にOSがメモリ不足になる可能性が高くなります。

ロードバランサを追加すると、障害が発生し、速度が低下する可能性があります。はい、輻輳を防ぎますが、再ルーティングによる低速の価値がありますか?

パフォーマンスを上げると、システムの負荷が増加し、より多くの同時接続を受け入れることができます。それでラインのどこかに別のボトルネックが現れます。異なるプロセス上の高いトラフィックは、前記プロセスがクラッシュすると常に終了する可能性があります。 Apacheは非常にうまくWebサーバーを構築しているので、理論上、この問題に対してあなたを保護するはずですが、設定を誤って変更するとクラッシュする可能性があります。

実際に使用する前に、気をつけてテストしてください。

+0

あなたのご返信ありがとうございます – user231410

+0

私の喜びです。他の何かが私の頭に浮かんだ。 htopをインストールし、流出している脅威の数を確認します。それはあなたに何が起こっているのかの手がかりを与えることができます。ここ 言及したツール: iftop 頂上sysstatの http://unix.stackexchange.com/questions/67807/is-there-a-top-like-command-that-shows-the-network-bandwidths-ファイルアクセスも あなたのお手伝いをすることもできます –

関連する問題