/ / Leistungsprobleme mit .net-Anwendung, die von Netzwerkfreigabe ausgeführt wird - c #, .net, Leistung, Netzwerkfreigabe

Leistungsprobleme mit .net-Anwendung, die von der Netzwerkfreigabe ausgeführt wird - c #, .net, Leistung, Netzwerkfreigabe

Ich habe ein Problem mit Windows Forms (.Netz 4) Anwendung. Einer unserer Kunden möchte es von Netzwerkfreigaben ausführen (unsere App kann von 20 bis 300 Benutzern gleichzeitig genutzt werden). Wir konnten es zum Laufen bringen, indem wir diese Zeile zu app.config hinzufügen

<loadFromRemoteSources enabled="true" />

Es dauert einen Moment, um das Programm zu starten und danachEine Weile können Benutzer arbeiten. Leider stellten sie fest, dass die Antwort sehr langsam ist, wenn die Anwendung für einige Zeit nicht verwendet wird und sie es erneut verwenden möchten (es dauert etwa 1-3 Minuten, um die App "aufzuwecken"). Zumindest habe ich das von unserem Berater gehört.

Ich werde es wahrscheinlich am nächsten Montag selbst sehen, aber zuerst würde ich gerne wissen:

  1. Ist dieses Verhalten normal und wenn ja, warum?
  2. Welche Tools sollte ich verwenden, um dieses Problem zu untersuchen?

Antworten:

3 für die Antwort № 1

Für nicht verwaltete Exes, wenn eine Anwendung nicht ausgeführt wurdeverwendet für eine Weile wird es ausgelagert. Seiten, die Code enthalten, werden einfach verworfen, da sie von der exe oder dll neu geladen werden können. Wenn Sie die Anwendung erneut verwenden, wird sie aufgerufen und dies dauert eine Weile. Wenn die App von einer Netzwerkfreigabe aus ausgeführt wird, erfolgt dieses Paging über das Netzwerk und kann sehr langsam sein. Es kann vermieden werden, indem Sie die IMAGE_FILE_NET_RUN_FROM_SWAP Flagge (mit editbin /swaprun:net).

C # -Apps sind ein bisschen komplizierter. Die EXE- und DLLs sind immer noch speicherplatziert, aber der gesamte Code wird zur Laufzeit von der IL erzeugt. Dieser JITted-Code wird in die lokale Auslagerungsdatei ausgelagert, aber ich vermute, dass alle Ressourcen oder Metadaten verworfen werden und auf Anforderung vom Netzwerk ausgelagert werden. Was für die Langsamkeit verantwortlich sein könnte.

Aber anstatt zu spekulieren, lauf procmon und sehen Sie, was Ihre App macht.