web-dev-qa-db-ja.com

32ビット/ 64ビットサーバー間でASP.NETのパフォーマンスが低下する

現在、ASP.NET 4にアップグレードする際に、32ビットの運用サーバーをより強力な64ビットサーバーにアップグレードする過程にあります。ただし、軽負荷テストを実行すると、パフォーマンスが低下しているようです。

20人のユーザーの一定の負荷でいくつかの簡単なユースケースを実行する簡単な負荷テストを作成し、結果を比較しました。

Page responses

ご覧のとおり、最もパフォーマンスの高い構成は、ASP.NET2.0を備えた既存の32ビットサーバーです。

64ビットマシンで32ビットモードでIISを実行すると、既存の32ビットサーバーにかなり匹敵しますが、IIS in 64ビットサーバーの64ビットモード-パフォーマンスが大幅に低下します。新しいサーバーの方が優れているため、なぜそうなるのかわかりません。

何らかの理由で、64ビットでIISを使用してテストを実行するたびに、開始時に大きなスパイクが発生し、その後は均等になりますが、応答時間は32ビットよりも長くなります。スパイクは発生します。 32ビットモードでIISを実行すると、離れてしまいます。

64bit spike

アプリプール/アプリはテスト間で再起動されていませんが、スパイクは一貫して存在し、他の構成よりも応答が高いことに注意してください。

だから-私の質問は:これがなぜであるか誰かが何か考えを持っていますか?設定する必要のある構成設定はありますか?違いの原因を絞り込む方法について、誰かがいくつかの指針を持っていますか?

現在の運用サーバー:Win Server2003-32ビット-IIS6

新しいサーバー:Win Server 2003R2-64ビット-IIS6

9
DavidMasters84

ドキュメントによると、MSは64ビットサーバーで32ビットアプリプールを実行することを推奨しています。Webアプリはとにかく(内部的に)より多くのメモリを使用するべきではないからです。

32ビットアプリは常にパフォーマンスが高くなります。ポインタが小さいほど、特定の命令セットに必要なメモリが少なくなり、キャッシュヒット率が向上します。

64ビットプロセスは、プロセスが実際により多くのメモリを必要とする場合にのみ意味があります。 Webフロントエンドがそれだけを実行し続ける場合(フロントエンド)、これほど多くのメモリが必要になる理由はありません;)

さらに、実際にパフォーマンスの高いバージョンにアップグレードすることには意味があります。 IIS6は、パフォーマンス面で大きな問題を抱えています-IIS 7.5は、特にASP.NET /マネージコードを実行している場合、はるかに優れています。

4
TomTom

これをWindows2K3サーバーで試したところ、同じことがわかりました。当時はここにいませんでしたが、MSが2K3で64ビット.Netを実装した方法と関係があります(何がわかりませんが、私に言ったのはMVPなので、私は彼の言葉をそれに取り入れます。)

また、Win2K8に移行すると、ここのサーバーで行ったのと同じことが表示され、同じパフォーマンスの問題が発生する可能性があることをお知らせします。私が聞いたことと64ビット.Netを利用するための少しの読み物から、統合パイプラインの使用が推奨されます( http://msdn.Microsoft.com/en-us/magazine/cc135973.aspx

申し訳ありませんが、これはあなたの質問に答えませんが、私はあなたがこの問題を見ているのはあなただけではないことをあなたに知らせたいと思いました。

2
enterzero