Web service

[Résolu]
Signaler
Messages postés
127
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
29 mai 2014
-
Messages postés
127
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
29 mai 2014
-
Bonjour à tous. J'ai créer un webservice qui fais un traitment avec un timer. (ecriture dans un fichier a tous les 5 seconde.)
Cependant mon service s'arrete tout seule apres 12 minutes environ. Y-a t'il un setting à quelpart part pour qu'il n'expire jamais ??

Nicolas!

9 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
Ah si ! en validant m'est venu un hypotéthique problème. ASP.net fonctionneun système de pool de threads, 20 par défaut, en lancant une méthode "infinie" tu monopolise un thread, il en reste plus que 19 (en fait 17 car 2 sont résérvés à localhost). Si tu lances 18 fois ta requête tu vas attendre qu'un thread se libère ... du coup ton serveur sera surchargé et c'est pas impossible que IIS se recycle s'il voit qu'il y a trop de connexion en attente (tu auras un server too busy à partir de 5000 connexions en attente) (je suis pas sur, car je me souviens pas avoir vu cette option dans IIS)

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
bonjour, un WebService qui doit faire une action à interval régulier ? Un serveur web est concu pour faire des requêtes le plus rapidement possible. Je te conseil donc de t'orienter vers un service windows, ou alors de faire le timer coté client.

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
127
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
29 mai 2014

Apres avoir refait des tests on a remarqué que le problème apparait seulement sur un server windows 2003. Sous le IIS de win XP le problème n'est pas présent. Le service a roulé toute la nuit. Y-a til un setting sous le IIS de windows 2003 ? Ou est-ce simplement un bug de win 2003 ??

Merci!

Nicolas!
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
Comme ca, sans code je peux pas te dire pk ca fait pas la meme chose entre IIS5 et IIS6. Mais une chose de sur c'est qu'un service windows me semble beaucoup plus adapté à ce que tu veux faire.

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
127
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
29 mai 2014

peut etre bien mais mes patrons tienne a faire ca en service web. J'ai lu un peu sur le web et plusieur personne semble avoir des problemes de timer qui s'arrete tout seul apres quelque instant et ce meme avec un service windows. J'utilise system.timer.   J'ai essayé avec system.threading.timer mais ca ne donne pas de meilleurs résultats. J'ai tenté de faire rouler 5 services en meme temps. Chacun d'eux ecrit dans son propre fichier date.now à interval d'une minutes. Ca fonctionne bien pendant une dizaine de minute.... parfois 20 minutes.  J'ai aussi fait le test en les faisant rouleur chacun dans son propre application pool. Meme résultat. 

Nicolas!
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
Si ton patron te demande de te tirer une balle dans le pied ...

Bref, explique lui qu'une application web n'est pas fait pour faire ca ! ou alors j'ai pas du tout compris ce que tu essayes de faire.

Tu as bien un client qui lance une méthode sur le serveur, puis cette méthode sur le serveur lance un timer coté serveur et ensuite meme si le client ne redemande pas la page alors le timer continue sur le serveur ?

Le problème c'est que si y'a plus d'activité sur le site web au bout d'un certains temps (20min configurable dans IIS) alors le pool d'application va s'arreter, mais augmenter cette valeur n'est pas une solution ! explique à ton patron que IIS n'est pas fait pour lancer des timer, il est fait pour répondre à des connexions HTTP et c'est à peu près tout ! 

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
127
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
29 mai 2014

En effet j'ai découvert qu'en décochant cette option mon service roule toujours apres 9h. Alors si ca fonctionne, qu'esse qui peut arriver d'Autre ??  Le but est de faire une verification dans la BD a tous les heure et d'envoyer des e-mail. Ma question c'est qu'est-ce qui peut arriver de grave ? car je vais surment devoir argumenter si je defent mon point avec mon patron.

Merci

Nicolas!
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
IIS est fait pour répondre à des connexions distante, il est concu et optimisé pour répondre le plus rapidement possible à une requête, par défaut IIS recycle le pool toutes les 1740 min (de mémoire) et va donc tuer tous les threads, il n'est absolument pas pensé pour cette utilisation.

Ce qui peut arriver de grave ? je vois pas, et je me suis jamais posé la question, mais faire un service windows me semble BEAUCOUP plus adapté et beaucoup plus facile à gérer, créer ...

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
127
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
29 mai 2014

C'est n'est pas un service qui sera appeler par plusieur usager en meme temps. Il sera lancé seulement une fois. Donc en théorie il ne devrait pas y avoir de problème.  Je pense aussi qu'un service windows serais plus approprié. l'avenir nous dira si le service web fait la job.  Merci beaucoup! Toujours un plaisir!

Nicolas!