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 ?