3 votes

Asp classique - processus de longue haleine. Pourquoi est-ce mauvais ?

J'ai hérité d'un très vieux script ASP classique script, qui est utilisé pour envoyer des courriels à environ 5 000 à 10 000 destinataires à la fois, en envoyant des copies conformes par lots de plusieurs centaines. Ce script se trouve sur un serveur dédié avec un site web à fort trafic.

La propriété server.scripttimeout pour le script est fixée à 10 minutes, et la liste de diffusion entière est chargée en mémoire dans un dictionnaire scripting.dictionary, qui est utilisé pour effectuer la validation des emails et la suppression des doublons.

Ce script peut potentiellement être utilisé par 10 à 20 personnes simultanément, chacune envoyant jusqu'à 10 mailshots chacune.

J'ai le sentiment que cela ne peut pas être bon pour le serveur, ayant le potentiel pour que tant de processus longs se déroulent en même temps, mais je ne peux pas citer de raisons techniques pour cela. Cela peut-il causer des problèmes de blocage de threads ou de consommation de mémoire ? Cela pourrait-il perturber le service du site Web ?

Quelqu'un peut-il donner des raisons techniques pour lesquelles ce n'est pas une bonne idée ? J'ai le sentiment que ce script devrait être remplacé par un serveur de messagerie, cependant, j'ai besoin de raisons techniques à citer d'abord.

Toute contribution est appréciée.

Le meilleur, Jack


Editar

Plus précisément, je pense que chaque fois que ce script est exécuté, un thread du pool de threads ASP sera occupé à faire le mailing.

Según http://www.iis.net/ConfigReference/system.webServer/asp/limits la propriété processorThreadMax :

" L'attribut processorThreadMax spécifie le nombre maximum de threads de travail par processeur que IIS peut créer.

Remarque : Ce paramètre peut influencer considérablement l'évolutivité de vos applications Web et les performances de votre serveur en général. applications Web et les performances de votre serveur en général. Étant donné que cet attribut définit le nombre maximal de requêtes ASP pouvant être peuvent être exécutées simultanément, ce paramètre doit rester à la valeur par défaut. valeur par défaut, sauf si vos applications ASP font des appels étendus à des composants externes".

En supposant un serveur à processeur unique, avec cette valeur configurée par défaut (25 threads), aurais-je raison de dire que si 20 utilisateurs simultanés effectuent tous des mailshots en même temps, seuls 5 threads seraient disponibles pour servir le site web ?

Si j'ai raison, je pense que cette seule raison suffit à montrer que cette méthode n'est pas durable et qu'elle doit être remplacée par quelque chose de plus durable.

Quelqu'un peut-il confirmer si j'ai raison ?

1voto

penartur Points 5450

Quelques raisons à prendre en compte :

Que se passe-t-il si vous redémarrez le service IIS / le pool d'applications pendant la maintenance du site web ?

Que faire si votre mailer consomme une quantité énorme de ressources ?

Que faire si une autre page consomme une quantité énorme de ressources (empêchant votre mailer de fonctionner correctement) ?

PS : Et comment exécutez-vous maintenant votre script ? Si vous le faites en allant sur une page spécifique dans le navigateur, vous devez également prendre en compte les raisons de maintenance : le navigateur est susceptible d'annuler la requête par timeout, et, bien que vous puissiez contourner les divers problèmes qui se posent (IIS annulant l'exécution du script, journalisation incommode), cela ajoute encore au tas d'inconvénients.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X