OVH Cloud OVH Cloud

Webservice lenteur

18 réponses
Avatar
Stephane
Bonjour,

J'ai developpé en C# un webservice d'interrogation de base de données
qui fonctionne correctement sauf lors de la première requete : le délai
d'attente pour la réponse est très longue (temps de réponse *4)... Cette
première requête effectuée, toutes les autres ont des délais d'attente
raisonnable (qq dizaine de ms). Le problème se reproduit après un
certain délai de non utilisation.

Il ne s'agit pas d'un problème de requete, cela se produit quelque soit
la requete et les paramètres sélectionnés.

Savez-vous d'où peut venir ce problème ?

Merci pour votre aide
Stéphane

8 réponses

1 2
Avatar
Delf
Stephane wrote:

Le seul paramètre (IIS6.0 sous 2k3 SP1) qui semble correspondre est
le delai d'expiration de session. S'agit-il bien de celui-là ?



Non, sous IIS 6.0 il y a une option explicite. Je ne me souviens plus de
sa localisation...

Peut-on forcer le webservice a toujours être chargé en mémoire ?



Oui, cf. autres posts.

Le serveur ne fait apparaitre aucun processus ASPNET_WP sous .Net
1.1.4322, est-ce normal ?



Sous dotnet 1.1, j'avais le processus ASPNET_WP...

--
Delf
Do not use this email in Cc!
L'alcool tue lentement. On s'en fout. On n'est pas pressé.
Avatar
Arnaud CLERET
Dans le cadre de IIS 6.0 la gestion du process d'exécution de votre
application se fait dans les pools d'application. Vous pouvez configurer le
recyclage en fonction de différents paramètres comme le délais, le nombre de
requêtes ...
Vous pouvez aussi paramétrer le nombre de worker process exécutant votre
application. En générale, la règle consiste à attribuer 1 worker process par
CPU. Donc si 2 CPU = 2 worker process

D'autres optimisations liés à ASP.NET et les Web Services sont aussi
possible au niveau de machine.config (voir httpRuntime et ProcessModel).

Le principe de recyclage de l'application est important et permet de
garantir la stabilité dans le temps.

Le processus exécuter dans le cadre de IIS 6 est "w3wp.exe"

--
arno - http://www.dotnetguru2.org/acleret/

"Stephane" a écrit dans le message de news:
uO%
Bonjour,

Le seul paramètre (IIS6.0 sous 2k3 SP1) qui semble correspondre est le
delai d'expiration de session. S'agit-il bien de celui-là ?
Peut-on forcer le webservice a toujours être chargé en mémoire ?

Le serveur ne fait apparaitre aucun processus ASPNET_WP sous .Net
1.1.4322, est-ce normal ?

Merci pour votre aide
Stéphane

Delf a écrit :
Stephane a écrit :

Comment peut-on modifier ce paramétrage ? Le principal client du web
service étant un service de diffusion, il ne peut pas attendre une
réponse aussi longtemps ?




Au niveau de la configuration de IIS (dans sa version 6.0) ou dans le
fichier machine.config (dans le répertoire Microsoft.NET) pour la 5.0





Avatar
Stephane
Merci à tous pour vos réponses qui devraient me permettre de résoudre
mes problèmes. J'ai effectivement toutes les options nécessaires au
niveau de la configuration du pool d'application. A ma charge de bien
les exploiter

Arnaud CLERET a écrit :
Dans le cadre de IIS 6.0 la gestion du process d'exécution de votre
application se fait dans les pools d'application. Vous pouvez configurer le
recyclage en fonction de différents paramètres comme le délais, le nombre de
requêtes ...
Vous pouvez aussi paramétrer le nombre de worker process exécutant votre
application. En générale, la règle consiste à attribuer 1 worker process par
CPU. Donc si 2 CPU = 2 worker process

D'autres optimisations liés à ASP.NET et les Web Services sont aussi
possible au niveau de machine.config (voir httpRuntime et ProcessModel).

Le principe de recyclage de l'application est important et permet de
garantir la stabilité dans le temps.

Le processus exécuter dans le cadre de IIS 6 est "w3wp.exe"



Avatar
Delf
Arnaud CLERET wrote:

Vous pouvez aussi paramétrer le nombre de worker process exécutant votre
application. En générale, la règle consiste à attribuer 1 worker process par
CPU. Donc si 2 CPU = 2 worker process



J'ai remarqué que si j'active 2 process ASP.NET sur un mono-CPU, j'ai
des problèmes de variables de Session...

--
Delf
Do not use this email in Cc!
L'homme n'est que poussière. La femme est aspirateur.
Avatar
Delf
Arnaud CLERET a écrit :

Le principe de recyclage de l'application est important et permet de
garantir la stabilité dans le temps.



Stabilité dans le temps ? Une application stable n'a pas besoin d'être
recherger non ?

--
Delf
Avatar
Arnaud CLERET
En effet, dans l'aboslue une application écrite dans les règles de l'art et
sans aucune faille ne devrait pas avoir besoin d'être recyclée.

Par contre, dans le cas où cette même application est installée sur un
serveur mutualisé, une autre application peut perturber son fonctionnement
(utilisation mémoire) si les pools ne sont jamais recyclés.

L'autre possibilité est de paramétrer le pool pour qu'il ne se recycle qu'en
cas de dépassement mémoire ce qui dans le cadre d'une application "parfaite"
ne déclenchera jamais le recyclage mais permet d'avoir un garde fou au cas
où.

--
arno - http://www.dotnetguru2.org/acleret/

"Delf" a écrit dans le message de news:
4422d210$0$12885$
Arnaud CLERET a écrit :

Le principe de recyclage de l'application est important et permet de
garantir la stabilité dans le temps.



Stabilité dans le temps ? Une application stable n'a pas besoin d'être
recherger non ?

--
Delf


Avatar
Patrice Manac'h
Bonjour,

une application n'a pas besoin d'être tout le temps chargée en mémoire. Par
exemple, pour un site de commerce français, entre 3 heures et 5 heures
matin, l'activité n'est en général pas très soutenue :) Si vous envisagée
d'héberger sur la même machine un site pour un pays sur un aurte fuseau
horaire, vous pouvez alors mutualiser la machine pour plusieurs sites...

Cdt,

Patrice Manac'h
MCS France


"Arnaud CLERET" a écrit dans le message
de news:
En effet, dans l'aboslue une application écrite dans les règles de l'art
et sans aucune faille ne devrait pas avoir besoin d'être recyclée.

Par contre, dans le cas où cette même application est installée sur un
serveur mutualisé, une autre application peut perturber son fonctionnement
(utilisation mémoire) si les pools ne sont jamais recyclés.

L'autre possibilité est de paramétrer le pool pour qu'il ne se recycle
qu'en cas de dépassement mémoire ce qui dans le cadre d'une application
"parfaite" ne déclenchera jamais le recyclage mais permet d'avoir un garde
fou au cas où.

--
arno - http://www.dotnetguru2.org/acleret/

"Delf" a écrit dans le message de news:
4422d210$0$12885$
Arnaud CLERET a écrit :

Le principe de recyclage de l'application est important et permet de
garantir la stabilité dans le temps.



Stabilité dans le temps ? Une application stable n'a pas besoin d'être
recherger non ?

--
Delf






Avatar
Delf
Patrice Manac'h a écrit :

une application n'a pas besoin d'être tout le temps chargée en mémoire. Par
exemple, pour un site de commerce français, entre 3 heures et 5 heures
matin, l'activité n'est en général pas très soutenue :)



Oui mais s'il faut attendre 20s que le site se charge à 4h du mat'...
c'est scandaleux =) L'acheteur risque d'aller voir ailleurs :)

--
Delf
1 2