Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Monter en charge d'une application web en python

17 réponses
Avatar
Pensee
Bonjour,

J'aimerais tester la capacite de monte en charge de mon application en
python.

Est ce qu'il existe des bibliotheques qui permettent de faire ce type
de travail ?

10 réponses

1 2
Avatar
Pierre Quentel
On 8 mai, 01:56, Pensee wrote:
Bonjour,

J'aimerais tester la capacite de monte en charge de mon application en
python.

Est ce qu'il existe des bibliotheques qui permettent de faire ce type
de travail ?


Bonjour,

Tu peux essayer cet excellent script sur le Python Cookbook :
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/442412

A+
Pierre

Avatar
William Dode
On 07-05-2007, Pensee wrote:
Bonjour,

J'aimerais tester la capacite de monte en charge de mon application en
python.

Est ce qu'il existe des bibliotheques qui permettent de faire ce type
de travail ?



Ici http://wwwsearch.sourceforge.net/ tu trouveras une librairie
intéressante pour tout ce qui est test d'appli web.

Sinon, une liste d'outils :
http://www.opensourcetesting.org/performance.php


--
William Dodé - http://flibuste.net
Développeur informatique indépendant

Avatar
Méta-MCI
Bonjour !

La question est intéressante.

Mais, je m'interroge, sur plusieurs points :
- si le test a lieu sur la même machine que le serveur Web, ne
risque-t'on pas de tomber sur les limites de l'OS, pour les sockets ?
Certains OS limitent volontairement le nombre de connexions simultanées.
- si le test utilise une autre machine (en réseau local, par exemple), ne
risque-t'on, pas de tomber sur les mêmes limites ? D'où impossibilité de
tester plus d'un certain nombre de connexions "externes".
- si l'on utilise des machines "extérieures", à partir d'un seul lieu, ne
risque-t'on pas de buter sur des contraintes des routeurs ? (et,
éventuellement, d'un parefeu sortant) ; les limites des connexions Internet
utilisées ne risquent-elles pas de "brider" le test, le rendant ainsi non
fiable ?


En fait, je m'étais posé la question, et n'avais rien trouvé de mieux que de
demander à plusieurs participants d'un (autre) newsgroup de lancer un script
de test à une heure précise. Mais le résultat est peu convainquant (même si
rassurant).

@+

MCI
Avatar
Olivier Ravard
Méta-MCI wrote:
Bonjour !

La question est intéressante.

Mais, je m'interroge, sur plusieurs points :
- si le test a lieu sur la même machine que le serveur Web, ne
risque-t'on pas de tomber sur les limites de l'OS, pour les sockets ?
Certains OS limitent volontairement le nombre de connexions simultanées.
- si le test utilise une autre machine (en réseau local, par exemple),
ne risque-t'on, pas de tomber sur les mêmes limites ? D'où
impossibilité de tester plus d'un certain nombre de connexions "externes".
- si l'on utilise des machines "extérieures", à partir d'un seul lieu,
ne risque-t'on pas de buter sur des contraintes des routeurs ? (et,
éventuellement, d'un parefeu sortant) ; les limites des connexions
Internet utilisées ne risquent-elles pas de "brider" le test, le rendant
ainsi non fiable ?


A ce propos, quelqu'un aurait-il expérimenté si une appli faite avec cherrypy
tient correctement la charge ? J'ai << cru >> constater des blocages lors de requêtes
simulatées ...



En fait, je m'étais posé la question, et n'avais rien trouvé de mieux
que de demander à plusieurs participants d'un (autre) newsgroup de
lancer un script de test à une heure précise. Mais le résultat est peu
convainquant (même si rassurant).

@+

MCI



Avatar
MC
Re !

J'ai fait un petit test, à l'automne dernier :
- Cherrypy sous windows-2003-server-web-edition sur une machine
reliée à Internet par une liaison à 100 Mbd.
- tests réalisés à partir de 4 sites utilisant des liaisons ADSL
(128k/512k 1M/8M 1M/10M) et SDSL (2M/2M)
- chaque sites lançait 2 ou 3 connexions simultanées
- le test consistait à effectuer une requête sur les code postaux
d'un département, dans une table (de 56000 enregistrements) gérée par
le BDE (Borland), piloté par le même script Python qui utilise
Cherrypy.
- le résultat consistait en une page Html, contenant un tableau
limité à 1000 lignes.

Performances : le temps de réponse (2 secondes, mais 3 pour la liaison
128/512) a toujours été stable, quelque soit le nombre de connexions.


Donc, pour moi, Cherrypy tient vraiment la route. En plus, la dernière
version est donnée pour être 2 ou 3 fois plus rapide.




--
@-salutations

Michel Claveau
Avatar
jp.camguilhem
On 8 mai, 01:56, Pensee wrote:
Bonjour,

J'aimerais tester la capacite de monte en charge de mon application en
python.

Est ce qu'il existe des bibliotheques qui permettent de faire ce type
de travail ?


Si tu as apache d' installé sur les machines clientes qui doivent
faire tes tests, tu as le module apache bench qui te permet entre
autres de gérer les clients et les requêtes simultanées :
sudo ab -n 100 -c 100 http://tonsupersite.com/

Par contre tu ne sauras pas où ton application se traine si tel était
le cas.
Il te faudra mesurer en interne.

les principales sources d'optimisation sont :
vérifier la bonne négociation des objets en cache du coté client
le caching coté serveur des fichiers css, images et autres javascript.
Si tu as apache en frontal de ton application, il fait celà très bien
(mod_cache)
tu peux bien entendu aussi diminuer la taille de ces derniers(virer
les sauts de ligne etc..., diminuer la taille des images, compresser
ces derniers.

Le caching des requêtes sql s'il y en a.
Les languages de templates ne sont pas tous égaux en termes de
performances etc...

Voilà pour un début.

@++

Avatar
Olivier Ravard
MC wrote:
Re !

J'ai fait un petit test, à l'automne dernier :
- Cherrypy sous windows-2003-server-web-edition sur une machine reliée
à Internet par une liaison à 100 Mbd.
- tests réalisés à partir de 4 sites utilisant des liaisons ADSL
(128k/512k 1M/8M 1M/10M) et SDSL (2M/2M)
- chaque sites lançait 2 ou 3 connexions simultanées
- le test consistait à effectuer une requête sur les code postaux d'un
département, dans une table (de 56000 enregistrements) gérée par le BDE
(Borland), piloté par le même script Python qui utilise Cherrypy.
- le résultat consistait en une page Html, contenant un tableau limité
à 1000 lignes.

Performances : le temps de réponse (2 secondes, mais 3 pour la liaison
128/512) a toujours été stable, quelque soit le nombre de connexions.


Donc, pour moi, Cherrypy tient vraiment la route. En plus, la dernière
version est donnée pour être 2 ou 3 fois plus rapide.



Merci pour ces infos. Ceci confirme la bonne opinion que j'ai sur ce produit.

Avatar
Mihamina (R12y) Rakotomandimby
Pensee - :

Bonjour,


Bonjour,

J'aimerais tester la capacite de monte en charge de mon application en
python.


Je me souviens que S Fermigier de chez Nuxeo en avait fait un pour
benchmarker CPS il y a 2 ans.
En demandant sur la ML user-fr de CPS, tu devrait avoir plus de précisions.

Avatar
Bruno Desthuilliers
Bonjour,

J'aimerais tester la capacite de monte en charge de mon application en
python.

Est ce qu'il existe des bibliotheques qui permettent de faire ce type
de travail ?

Pour du test "boite noire", il y a apache bench et pas mal d'autres

outils - le fait que ton appli soit en Python n'a pas d'incidence de ce
point de vue.

Pour du test "boite blanche", tu peux toujours faire les mêmes tests
qu'en boite noire en faisant tourner ton appli sous contrôle d'un
profiler (modules profile, cProfile ou hotshot). Cela aura bien sûr une
incidence sur les perfs absolues (comparativement aux mêmes tests sans
le profiler), mais permettra de savoir où ça coince le plus.

Avatar
Bruno Desthuilliers
Bonjour !

La question est intéressante.

Mais, je m'interroge, sur plusieurs points :
- si le test a lieu sur la même machine que le serveur Web, ne
risque-t'on pas de tomber sur les limites de l'OS, pour les sockets ?


Pas seulement. Le processus de test requiert également des ressources
mémoires ou CPU qui ne sont par conséquent plus disponibles pour le
processus à tester... Sur des appli gourmandes en ressources (je pense
notamment aux usines à gaz comme Plone ou feu CPS), ça peut faire une
différence notable (expérience personnelle).

Certains OS limitent volontairement le nombre de connexions simultanées.
- si le test utilise une autre machine (en réseau local, par exemple),
ne risque-t'on, pas de tomber sur les mêmes limites ? D'où
impossibilité de tester plus d'un certain nombre de connexions "externes".
- si l'on utilise des machines "extérieures", à partir d'un seul lieu,
ne risque-t'on pas de buter sur des contraintes des routeurs ? (et,
éventuellement, d'un parefeu sortant) ; les limites des connexions
Internet utilisées ne risquent-elles pas de "brider" le test, le rendant
ainsi non fiable ?


En fait, je m'étais posé la question, et n'avais rien trouvé de mieux
que de demander à plusieurs participants d'un (autre) newsgroup de
lancer un script de test à une heure précise. Mais le résultat est peu
convainquant (même si rassurant).


Il est de toutes façons irréaliste d'espérer simuler crédiblement le
comportement effectif des internautes. L'avantage du test automatisé est
sa répétabilité. Cela permet d'une part de répérer les requêtes les plus
coûteuses (après quoi on peut sortir le profileur), et d'autre part de
vérifier les effets d'une modification de code, de paramétrage ou
d'environnement. Dans tous les cas, il s'agit surtout d'avoir d'une part
un ordre de grandeur concernant les capacités à tenir la montée en
charge et d'autre part une connaissance un tant soit peu fiable des
paramètres influant ces capacités.

1 2