À noter que la version qui précharge n'a pas besoin d'un serveur de fichiers statiques à côté, c'est complètement autonome, et peut tourner en frontal ou directement derrière un haproxy, sans nginx/apache/etc.
Si j'utilise par exemple waitress comme serveur python (serveur multi-thread) on reste à 21Mo en RSS mais on passe à 313Mo en VSZ !
Et c'est plus lent (2800/2400 req/s)
Avec gunicorn (pre-fork) on va plus vite, 3500/3000 req/s et la RAM monte : on a deux processus, un master et un worker, qui font 25Mo+22Mo en RSS (et 30+30 en VSZ), mais comme on le voit, il prefork un seul worker.
Si on met worker=10, par exemple, on est à 14000/10000 req/s, mais comme prévu, on a 10 workers, donc 25+220Mo de RAM, ça fait pas mal, mais ça "scale" :)
Yth, bon si j'arrêtais de procrastiner hein ?
PS : pour changer de serveur c'est assez simple run(host='localhost', port=8080, server='gunicorn', workers=10)
[^] # Re: C'est beaucoup ?
Posté par Yth (Mastodon) . En réponse au journal Java : presque 9 000 requêtes par seconde avec 8 Mo de RAM. Évalué à 6.
À noter que la version qui précharge n'a pas besoin d'un serveur de fichiers statiques à côté, c'est complètement autonome, et peut tourner en frontal ou directement derrière un haproxy, sans nginx/apache/etc.
Si j'utilise par exemple waitress comme serveur python (serveur multi-thread) on reste à 21Mo en RSS mais on passe à 313Mo en VSZ !
Et c'est plus lent (2800/2400 req/s)
Avec gunicorn (pre-fork) on va plus vite, 3500/3000 req/s et la RAM monte : on a deux processus, un master et un worker, qui font 25Mo+22Mo en RSS (et 30+30 en VSZ), mais comme on le voit, il prefork un seul worker.
Si on met worker=10, par exemple, on est à 14000/10000 req/s, mais comme prévu, on a 10 workers, donc 25+220Mo de RAM, ça fait pas mal, mais ça "scale" :)
PS : pour changer de serveur c'est assez simple
run(host='localhost', port=8080, server='gunicorn', workers=10)