サーバーを屈服させるASP.NET High CPU


8

新しいビルドでは、各サーバーでランダムな間隔で100%のCPUスパイクが発生しています。長期間、サイトが完全に応答しなくなります。これは、さまざまな国の人々がサイトにログオンするなどのピーク時に発生します。

perfmom、メモリプロファイラー、CLRプロファイラー、SQLプロファイラー、Red gate antプロファイラーを調べ、UATで負荷テストを試みましたが、問題を再現することもできませんでした。これは、ライブサイトにアクセスした数千のユーザーだけがそれを引き起こすことを意味する可能性があります。

私たちが気づいた1つのパターンは、新しいコード(壊れたビルド)が実際には著しく少ないスレッドを使用することでした。

また、IOCに春を使用しています-これはベッドの評判ですか?

さらに悪いことに、ビジネスへの影響のために展開して展開することはできません。そのため、追加した新機能のサブセットに問題を絞り込むことはできません。

私たちは本当に破壊されました-誰かが私たちに数人の命を救うかもしれない戦いの傷跡を持っていますか?


温度センサーは何を報告しますか?あなたの電源が追いつかないのかしら。(これを確認する方法はわかりません。)
サーノルド

2
サーバーをダウンさせると言ったときに、詳細を追加できますか?それはBSODですか?それは再起動するのでしょうか、それともアプリドメインが再起動するのでしょうか。

「100%cpu スパイク」がサーバーを「ダウン」させる可能性はまったくありません。かなり長い間、100%で固定しなければならず、放熱の問題も伴います。
Andrew Barber

1
何してるの?どのプロセスがピーク時にCPUを使用していますか?これが最も重要な質問です。
Aliostad

私の質問を更新しました-これはより良いですか?-1をありがとう:)

回答:


3

WinDdgでSosを使用してメモリダンプを実行し、分析することをお勧めします。私は、WinDbgなしではおそらく診断できないプロダクションに関するいくつかの問題を修正しました。

Tess Fernandezには、メモリダンプの分析方法を学ぶことができる素晴らしいブログがあります。


そのブログは優れたリソースであり、私たちはそれを使用しています。問題は、問題を再現してダンプを取得できないことです。

1
問題を再現するには、jmeter(jmeter.apache.org)とab(httpd.apache.org/docs/2.0/programs/ab.html)を使用してテストシステムを叩くことができます。これら、マルチコア、高速LAN、および一部の同僚によって、サーバーに十分な負荷をかけることができるはずです。
ローマ

1

これは通常、GCでの長期間のオブジェクトのクリーンアップが原因で発生します(stackoverflowにこの問題がありましたリンクを参照してください)。大量のオブジェクトコレクションをキャッシュまたはセッションに格納していますか?

GCによる攻撃

また、テスト用に本番環境で新しいサーバーを構築して構成することをお勧めします。ランダムな狂気があり、その理由がわからず、それを再現できない場合は、コードではなくハードウェアまたは構成を指差します。


ニュース機能が追加されているため、新しいコードを公開することはできません。コードが公開されたとき、GCの使用法は同じでした-ジェネレーション2も含めて。おかげで-他に提案はありますか?

不可能ではありませんが、ハードウェアと構成は、前に戻って正常に動作しているデプロイとほぼ同じです。

1

これは共有リソースを持つ仮想サーバーですか、それとも物理サーバーですか?前者の場合は、このサーバー専用のリソースを確認できます。幸運を...


0

cache serverフロントエンドとして使用してみてくださいApache Traffic Server (ATS)

これは問題を解決しませんが、潜在的に有害な負荷をバックエンドから移動し(フロントエンドにも問題があるかどうかを確認)、バックエンドでの加熱が少なくなるため、それを特定するのに役立つことがあります。何が悪いのかを簡単に確認できます。


0

データなしで障害を推測しようとしても無意味です。はい、Stackoverflowまたはエンジニアリングチームの誰かが幸運になるかもしれませんが、それは単に悪いエンジニアリングであり、すべての推測を試すのにどれくらいの時間がかかるか、そしてあなたが問題を見つけるかどうかについて計画を立てることはできません。

  1. 問題を再現する必要があります。Jmeterは幅が広いので良いスタートですが、アーキテクチャーを知らないと、適切なツールを推奨できません。
  2. 特にアプリケーション層でのロギングは必須です。パフォーマンスを遅くするためにIISトレースを有効にすることはできますが、Microsoftのマペットが有効にしたため、パイプラインフロー全体が遅い場合はキャプチャできません。再現が非常に難しい場合は、問題の場所を絞り込むのに役立つログをいくつか用意してください。(ああのように、このストアドプロシージャを呼び出すときはいつでも)。

100%のCPUは、I / Oである可能性が低いという意味で少し疑わしいです(dbが別のボックスである場合、遅いデータベースはWebサーバーで100%のCPUを引き起こすべきではありません)。あなたは家の近くを見る必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.