4

Windows フォーム (.net 4) アプリケーションに問題があります。私たちのクライアントの 1 つは、ネットワーク共有から実行したいと考えています (私たちのアプリは、20 ~ 300 人のユーザーが同時に使用できます)。この行を app.config に追加することで、機能させることができました

<loadFromRemoteSources enabled="true" /> 

プログラムの起動には少し時間がかかり、しばらくするとユーザーが作業できるようになります。残念ながら、アプリケーションがしばらく使用されておらず、再度使用したい場合、応答が非常に遅いことに注意してください (アプリを「起動」するのに約 1 ~ 3 分かかります)。少なくとも、それは私たちのコンサルタントから聞いたことです。

おそらく来週の月曜日に自分で見ることになると思いますが、まず最初に知りたいのは次のとおりです。

  1. この動作は正常ですか? もしそうなら、それはなぜですか?
  2. この問題を調査するには、どのツールを使用すればよいですか?
4

1 に答える 1

4

管理されていない exe の場合、アプリケーションがしばらく使用されていない場合、ページ アウトされます。コードを含むページは、exe または dll から再ロードできるため、単純に破棄されます。アプリケーションの使用を再開すると、ページインされ、これにはしばらく時間がかかります。アプリがネットワーク共有から実行されている場合、このページインはネットワーク経由で発生し、非常に遅くなる可能性があります。IMAGE_FILE_NET_RUN_FROM_SWAPフラグを設定することで回避できます( を使用editbin /swaprun:net)。

C# アプリはもう少し複雑です。exe と dll は引き続きメモリ マップされますが、すべてのコードは実行時に IL から生成されます。この JITted コードはローカル ページ ファイルにページングされますが、リソースやメタデータは破棄され、ネットワークからの要求に応じてページインされると思います。これが遅さの原因かもしれません。

ただし、推測するのではなく、procmonを実行して、アプリが何をしているかを確認してください。

于 2012-02-28T23:48:48.180 に答える