2009-08-27 12 views
4

私はasp.netの店で働いています。私は今日、私たちのサーバー上のボトルネックはCPUだと聞いたことがあります。私はいつもウェブアプリケーションがCPUの前にI/Oとネットワークに束縛される傾向があると思っていました。これはASP.net/IISのことですか?それは私たちのコードですか?それとも私は全部が完全に間違っていますか?ASP.net WebFormsはCPU集約型プラットフォームですか?

また、Googleではウェブフォームを使用してソーシャル/コマースサイトを一般公開しています。 CPUの負荷が問題であるということではなく、私たちのサーバーが現在負荷を処理できます。私はそれが驚くべきことだと思っています。なぜなら、Webアプリケーションについて理解していることから、スケーラビリティに関してはCPUの問題はほとんどありません。特に、.NETのような高速ランタイムを持つコンパイルされた言語です。

+0

詳細情報が必要です。どのようなタイプのWebアプリケーションを提供していますか?彼らはあなたの標準的なラインのビジネスCRUDアプリですか?その場合、データを保存するためのストレージモデルは何ですか?彼らがビジネスラインであれば、多くの計算と計算が行われていますか? –

+0

私は「私たちのコードですか?」と仮定しています。あなたのサーバーは今のところ遅いと思われる部分ですか? –

+0

もう少し説明が追加されました。 –

答えて

6

あなたのコードです。 ASP.NETについて本質的にCPUを集中させるものは何もありません。実際には、Webアプリケーションの10億小数点までPiを計算しない限り、CPUがボトルネックであったという理由で、私は、そのCPU時間をすべて食べることができる理由はないと思う。

+0

私は彼が彼のホスティングを行っているのと同じサーバー上でデータベースのバックエンド(SQL Serverのような)を動かしているかどうかも尋ねるでしょう。彼は追加サービスを行っていますか?十分なRAMがありますか? RAM RAM RAM、もっと良いです! :) –

+0

それも私の考えだった。 SQLサーバーは別のマシンにあります。 CPU使用後にRAMの使用量が2番目に多い(おそらく何かがあればキャッシュを使い過ぎるだろう) –

+0

これは共有ホスティング環境か、サーバを他のアプリケーションと共有するVPSですか?もしそうなら、重い負荷のサーバー上にいるかもしれず、動かされるべきです。 –

1

最初はぼやけていましたが、「I/O集中的です」と言っていましたが、実際はアプリケーションが提供しているものに依存しています。

極端な場合、マルチメディアサーバーはもちろんI/Oバウンドになります。

もう1つは、かなり単純なテキストのみのHTMLページを扱う計算集中型のサイトはCPUにバインドされています。

私の経験では、ほとんどのサイトがI/Oバウンドであることがわかりました。つまり、追加のサーバーを購入すると、CPUスループットではなくI/Oが増加します。私は、約30台のサーバーを持っていた私が取り組んだ最も精巧なサイトであっても、1台のプロセッサでうまく機能していると言えるほどです。購入を指示したのはネットワーク帯域幅でした。

+0

私たちはエンコードなどをしていません。静的リソースとHTML生成が混在しています。ほとんどのWebアプリケーションでCPUと同じ経験をしていないので、私は質問しました。 –

3

これはおそらくあなたのコードです。ここでASP.Netについて何かを明示的に述べることはできません。他のコンピュータプログラムと同様です。アプリケーションが実際に行っていることに完全に依存しています。

Webページを提供することに本質的にCPUを集中させるものは何もありません。私は1200ページの要求を提供するIISを実行しているラップトップを見た秒あたり。 ASP.Netは、最適なパフォーマンスではなくゲートからの「使いやすさ」のために構成されていることは事実ですが、パフォーマンスを向上させるにはそれを調整するのはそれほど難しいことではありません。

DottraceまたはRedGate Antsなどのプロファイラーを使用すると、コードのすべての処理が遅くなる場所を確認できます。

+0

IISフォームのラップトップはウェブフォームのページを提供していましたか?私は、この高い疑いを持っているのは、cpuの使用量がwebformsの "ページライフサイクル"のやり方から来て、コントロールをビルドして引き裂き、各リクエストごとにhtmlにレンダリングするというものです。 –

+0

はい、そうでした。 Webフォームのページをベンチマークしたことがありますか?非常に高速です。 – womp

1

パフォーマンスの問題があるかどうかを調べるコードを見ていきます。このサイトは1日に約100万ページを提供し、うまくいくようです。 Asp.netはスケーラビリティのために非常に最適化されています。

0

CPUを大量に使用しているというと、その相対的な用語ですが、.NETはそうではありませんが、ASP.NETは大変です。何千ものポストバックを行い、すべての要求に対してコントロールを再作成/破壊するWebアプリケーションは非常に高価です。

純粋なASP.NET(非Ajaxのもの、古いもの)は、可視性/色を計算します。1000sのhtmlページのすべての要素のすべての属性をサーバー上でのみ作成し、クライアントに配布します。あまりにも多くの計算を行うので、ひどく書かれたASP.NETサーバーコントロールだけでなく、より多くのCPUを食べる。

ASPを改善します。NETのパフォーマンス、より多くのAJAXを使用するか、Flex/SilverlightのようなRIAは、クライアントのCPUを使用してデータ視覚化を行うことができるため、CPUオーバーヘッドを大幅に削減します。

RIAクライアント(Flex/Silverlight)+ ASP.NET Webサービスは未来ですが、詳細な統計情報はありませんが、ほぼ1年前にASP.NETから離れ、CPU使用率は18% RIAベースのウェブサイトの99%から平均しています。

0

ハードウェアが遅い場合は、はい。最新のサーバーでは、ほとんどの場合、データベースはCPUに課税されます。

0

プロファイラを実行して、アプリケーション内にCPUが多すぎる、またはばかげたメモリを使用する領域があるかどうかを確認します。サーバー上でタスクマネージャーを使用して、実行中のIIS(inetinfoおよびw3wp)であり、他のプロセスではないかどうかを確認してください。 IISであれば、アプリケーションプールが逃げているかどうかを調べることができます。どのアプリケーションプールがどのワーカープロセスに割り当てられているかを調べるには、iisappコマンドを使用します。

関連する問題