2017-02-01 2 views
1

J'ai besoin de votre aide.Startup Application lent

J'ai fait une application console avec C# net.4.5 ans AWSSDK V3.3, pour configurer mon intance au démarrage.

Mon Probleme est, au premier démarrage de mon instance (Windows Server 2008R2) l'application à partir EXTRÊMEMENT lentement et course très lentement.

En effet, j'utilise "Planificateur de tâches" pour démarrer l'application au démarrage.

Lorsque je redémarrer l'instance ou redémarrer (ou même redémarrer) l'application, tout fonctionne bien.

  • Quand je commence l'application manuellement: la tâche (toutes les choses que l'application ont todo) est terminée en moins de 40 secondes.
  • Lorsque je démarre l'application au démarrage avec Task Scheduler: la tâche prenant sur 5 minutes! compléter. (Quel démarrage à froid!)

  • J'ai retardé le début de mon application (avec un/timout .bat) (90secondes)>app encore lent ... extremly

  • Je retardé le début de mon application (avec un/.tot). (300 secondes), pour être absolument sûr que tous les frameworks .net sont entièrement chargés>toujours bien fonctionner!

Donc, maintenant je dois courir des centaines de cas spot avec cette application de démarrage .... si je perds 5 minutes au démarrage sur chaque instance, je lâche un looot d'argent!

Que pensez-vous de mon cas? pensez-vous que je suis juste sur le pré-chargement de .net framworks? est-il possible de le faire charger plus vite?

Je suis conscient de ngen.exe, je l'ai essayé sur le .exe et dlls. mais le problème est toujours le même. Je pense que le problème est plus global, pas spécifique à mon application.

Pour information:

dans mon application à partir du SDK j'utilise:

  • EC2InstanceMetadata
  • AmazonS3Client
  • GetObjectRequest
  • GetObjectResponse

informations d'identification sont magasin d ine app.config

Tous ces cours sont appelés une seule fois. (pas de boucle de réessayer si failling).Je veux dire, s'il n'y a pas Internet, l'application plante ou renvoie une exception. L'application est faite dans VS 2015, et les dlls AWSSDK sont dans le dossier racine du .exe

Merci pour votre aide!

---------------------------- modifier ----------------- -

J'ai fait un test simple avec un code simple de console propre (modèle Visual Studio 2015) (écrire 100 fichier txt sur C :). J'ai couru le programme au démarrage avec le planificateur de tâches, et il faut 5 minutes pour accomplir cette énorme tâche .... il semble donc que le problème n'est pas mon code.

edit: J'ai aussi essayé l'application de test simple avec ".net framework 3.5 client". même chose ... app pend pendant 4 minutes, puis faire le travail. (6 minutes au total).

@ MaLiN2223 Peut-être faire un service plutôt qu'une application console est une solution ... je devrais essayer. Qu'est-ce que mon application de démarrage faire:

  • fichiers donwload sur amazon S3

  • get instance infos de aws-sdk

  • Démarrer ou arrêter des services

  • valeur Variation .ini

  • Monter le lecteur réseau

  • lecture valeur xml

  • applications de démarrage

pour votre information, le code de test:

using System; 
using System.IO; 
using System.Diagnostics; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      for (int i = 0; i < 100; i++) 
      { 
       Console.Write("Writting file nb: " + i.ToString()); 
       File.Create(@"C:\test_" + i.ToString() + ".txt"); 

      } 
      log(); 
      Console.ReadKey(); 
     } 
     static void log() 
     { 
      using (StreamWriter writer = new StreamWriter("C:\\test_log.txt")) 
      { 
       var uptime02 = new PerformanceCounter("System", "System Up Time"); 
       uptime02.NextValue();  //Call this an extra time before reading its value 
       var timeTowrite = TimeSpan.FromSeconds(uptime02.NextValue()); 
       writer.WriteLine(timeTowrite); 
      } 
     } 
    } 
} 
+0

Il peut être extrêmement difficile de déboguer ceci pour nous sans aucun code. Avez-vous appliqué des règles à ce serveur Windows? Parce que: [Cela pourrait être le cas] (https://support.microsoft.com/fr-fr/help/969972/you-encounter-a-slow-application-startup-or-a-slow-logon-on- un-ordinateur-qui-est-courant-windows-server-2008-ou-windows-vista-après-vous-apply-software-restriction-policies). Je vous recommande également de lire [THIS] (https://blogs.technet.microsoft.com/markrussinovich/2010/12/06/the-case-of-the-slow-project-file-opens/), cela ** pourrait ** aider à identifier le problème. – MaLiN2223

+0

(Deuxième commentaire car il n'y a plus de caractères là-bas) Vous pouvez également rechercher des applications de profilage installées là, elles sont connues pour provoquer une lenteur au démarrage. – MaLiN2223

+0

Est-ce que vous chantez vos assemblages? –

Répondre

1

D'accord ..., je trouve le problème et la réponse! Le problème est que "task scheduler" lance les applications avec une priorité définie par défaut à "below to normal" .... Evidemment, mon application est plus lente car de nombreux processus de haute priorité sont lancés au démarrage ...

Il est impossible de modifier la priorité directement dans le calendrier de tâche. Cela doit être fait en exportant la tâche en XML, en la modifiant et en la réimportant.

Original post here!

Merci vous.