問題タブ [high-load]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
1580 参照

java - Full GC 後にソケット接続が遅くなった原因は何ですか?

クライアント サーバー アプリ、1 サーバー、約 10 クライアントがあります。これらは、カスタム クエリを使用して tcp ソケット経由で通信します。

システムは何ヶ月もスムーズに動作していましたが、ある時点で、毎日スケジュールされたサーバー FULL GC に約 50 秒かかった後、クライアントから送信されたクエリとサーバーから受信した応答の間の時間が長いことがわかりました。 > 10~20代。約 3 時間後にシステムが回復し、すべてが正常に動作するようになりました。

この問題を調査したところ、次のことがわかりました。

  1. クライアントとサーバーの両方でガベージ コレクションの問題がない
  2. サーバーでのクエリ処理時間はわずかでした。
  3. サーバーの負荷が高かった。
  4. ネットワーク帯域幅は飽和状態ではありませんでした。
  5. FULL GC 中に接続がリセットされませんでした (毎日の FULL GC はそれまで通常のイベントでした)。
  6. 最近、マシンと OS が Centos 6 (カーネル 2.6.32) から Centos 7 (カーネル 3.10.0) に変更されましたが、新しい構成は広範囲にテストされています。また、Oracle JDK のバージョンが 1.7.65 から 1.7.75 に変更されました。

サーバーでスレッド ダンプを取得しました。

FilterInputStream.read()次のとおりです。

in私たちのコードの はですBufferedInputStream

問題は、フル GC の一時停止後にほとんどの接続が遅くなったのはなぜですか? スタックトレースが で終わるのはなぜFilterInputStream.read()ですか? ソケット入力ストリームまたはソケット入力ストリームのどこかで終了するべきではありませんBufferedInputStreamか? この読み取りにより、サーバーの負荷が高くなる可能性はありますか?

読み取りに使用するコード:

どこ:

正常に動作しているクライアント接続からのスタック トレースを次に示します。

アップデート:

EJPの回答について:

  1. EOS は関与しておらず、接続は確立されていましたが、非常に遅かったです。

  2. EOS があったとしても、コードが EOS でどのように回転するかはわかりません。値forによって制限されconstructLengthます。それでも、提案された改善は有効です。

  3. 問題のあるスタックトレースは、から継承されたDataInputStream( ) で行われた読み取りで終了します。上記のコードを参照してください。、ないは欠落しています。ここには a が呼び出されており、これには独自のメソッドが定義されています。しかし、スタック トレースは途中で停止し、到達していません。なんで?(_socketDIS.read()FilterInputStream.read()DataInputStreamBufferedInputStreamread()FilterInputStream.read()in.read()BufferedInputStreamread()BufferedInputStream.read()

0 投票する
0 に答える
1619 参照

php - php-cgi.exe プロセスにより、IIS 7.5 で CPU 使用率が高くなる

CPU 使用率がランダムに急増する Windows Server を使用しています。ProcessExplorer と Windows タスク マネージャーを見ると、多数の php-cgi.exe プロセスが同時に実行されているように見えます。それぞれCPUの約10〜15%を占めています。サーバーが応答しなくなるほど悪い場合もあります。

FastCGI 設定で、MaxInstancesを 4 に設定したので、4 つを超える php-cgi.exe プロセスが同時に実行されることはありません。したがって、インスタンスの数を 4 に制限する方法について、アドバイスまたは指示をお願いします。

追加メモ: instanceMaxRequestsも 10000 に設定し、 PHP_FCGI_MAX_REQUESTSも 10000 に設定しました。

0 投票する
1 に答える
346 参照

activemq - ActiveMQ ブローカーの信頼性をどのように提供しますか?

キューの信頼性を提供する最善の方法は、マスター/スレーブ ブローカーのネットワーク (たとえば、ZooKeeper を使用したマスター/スレーブ) であると理解していますか? コンシューマーとプロデューサーのフェイルオーバー設定では、マスターのアドレスを設定し、マスターの 1 つがオフラインになると、ブローカー ネットワークの別のマスター/スレーブ ノードがこのマスターのメッセージをスレーブから取得し、メッセージを失うことはありません。壊れたマスターがオンラインになると、新しいコンシューマーとプロデューサーを取得し、いくつかのメッセージを取得します。私は正しい?

0 投票する
1 に答える
10919 参照

django - 高負荷時の最大リクエスト制限ブロックを備えた Gunicorn

次のシナリオを理解しようとしています。

  • 前にnginxを使用したWebサイトがあります(SSLで提供、構成は以下を参照)
  • Django アプリケーションへのリクエストは gunicorn によって処理されます (0.18、構成は以下を参照、supervisord によって管理されます)。
  • ユーザーがウェブサイトをロードすると、10 個のリクエストが gunicorn によって処理されます (残りのリクエストは nginx によって提供される静的ファイルです) - このリクエストは長時間実行されるリクエストではありません
  • gunicorn は、ワーカーが再生成されるまで、ワーカーごとに最大 1000 のリクエストを受け取るように構成されています
  • 約 450 人が短時間 (1 ~ 2 分) でページを読み込むことができます。
  • その後、gunicorn は何らかの方法でブロックし、それ以上の接続を処理しません。その結果Gateway Timeout、しばらくすると nginx が応答します。

ワーカーの再起動が実際には起こらないか、メカニズムが負荷によってブロックされていると思いますか? この問題を解決するために何が起こっているのかを知りたいです。

ここで何が起こっているのか誰でも説明できますか? どうもありがとう!

PS: 私は gunicorn 18.0 を使用することに縛られています。新しいバージョンは現在使用できません。

ここに私が使用する設定があります。

nginx:

gunicorn (supervisord 経由で開始):

0 投票する
1 に答える
460 参照

logging - リアルタイムのログ解析

ログ ファイルをリアルタイムで解析するツールを作成したいと考えています。ログ ファイルは非常に高速に書き込むことができます (たとえば、1 秒あたり最大 10k 行)。各行を取得し、1 つの正規表現を実行して結果を DB に書き込むだけです。速度の関係で、ファイル全体を読み取るだけでは実行できなかったので、 のような代替を記述する必要がありますtail -f。教えてください、どのように、どのテクノロジーを使用してこれを行うことができますか?

PS 下手な英語で申し訳ありません。

0 投票する
2 に答える
2357 参照

spring-cloud - 春のクラウド zuul 構成

Spring Cloudアプリケーションに対して負荷テストを行っています。同時ユーザー数が一定数に達すると、転送エラーが発生するようになりました

以下は、zuul からのログです。根本的な原因は「実行用のセマフォを取得できませんでした」

私の質問は、この転送エラーを回避するために zuul を構成する方法です。あなたの助けは非常に高く評価されています。