2 votes

Le multithreading Python ne fonctionne pas sur un serveur VPS

J'exécute une application Python multithread avec plusieurs processus qui extrait des données de certains sites Web. Elle fonctionne très bien sur mon serveur local, mais sur le serveur virtuel que j'utilise (Centos 5.8, 2.6 GHZ avec 4 cœurs), elle est très lente.

Avec la commande nethogs, j'obtiens une utilisation du réseau trop faible. J'obtiens environ 8KBps avec 15 threads. Par contre, sur mon PC, l'utilisation est d'environ 100-120KBPS.

J'ai lu des articles sur les limitations de la GIL Python et du threading. Il semble que la GIL ne libère jamais le verrou sur le VPS alors qu'elle devrait le faire lors d'un I/0.

Y a-t-il une configuration dans le VPS que je dois changer pour que le threading fonctionne correctement ?

UPDATE : En fait, le multithreading fonctionne mais c'est le processeur qui causait le problème. 15 Threads étaient trop nombreux pour lui et il devenait trop occupé avec le changement de thread. Bien que le serveur virtuel prétende qu'il s'agit d'un processeur 2.6 GHZ, je pense que ce n'est pas le cas. Y a-t-il un moyen de mesurer la vitesse réelle du processeur dans le VPS ?

3voto

mgorven Points 29736

Vous partagez très certainement le CPU avec d'autres VPS sur le même hôte, vous ne pouvez donc pas espérer obtenir les mêmes performances qu'avec un CPU dédié. Le GIL ne se comporte pas différemment sur les différents CPU, ce n'est donc pas la cause. Utilisez top pour vérifier l'utilisation du processeur sur le VPS ; vous êtes principalement intéressé par l'utilisation du CPU. Cpu une ligne comme celle-ci :

Cpu(s): 30.2%us,  7.8%sy,  0.0%ni, 41.0%id, 20.8%wa,  0.0%hi,  0.2%si,  0.0%st

Avec un hyperviseur et un système d'exploitation récents, vous devriez voir une valeur non nulle de st nombre -- il s'agit du temps CPU "volé" par d'autres VM sur le même hôte, à partir duquel vous pouvez déterminer la proportion du CPU que vous obtenez.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X