O multithreading do Python não funciona no servidor VPS

2

Eu estou executando um aplicativo multithreaded python com vários processos que raspa dados de alguns sites. Enquanto correndo no meu localhost Ele funciona muito bem, mas no servidor vps eu estou usando (Centos 5.8, 2.6 GHZ com 4 núcleos) executa muito lento.

No comando nethogs, o uso da rede ficou muito baixo. Eu tenho cerca de 8KBps com 15 tópicos. Por outro lado, no meu PC eu uso 100-120KBPS.

Eu li sobre as limitações do Python GIL e de threading. Parece que o GIL nunca libera o bloqueio no VPS, embora deva fazer I / 0

Existe alguma configuração no VPS que eu precise mudar para o encadeamento funcionar corretamente?

UPDATE: Na verdade, o multithreading está funcionando, mas é a CPU que estava causando o problema. 15 Threads eram muitos para isso e ficou muito ocupado com a troca de threads.  Embora o vps afirma que é 2,6 GHZ cpu, eu acho que na verdade não é. Existe uma maneira de medir a velocidade real do processador no VPS?

    
por Sabirul Mostofa 01.09.2012 / 16:22

1 resposta

3

Você quase certamente está compartilhando a CPU com outros VPSs no mesmo host, por isso não pode esperar obter o mesmo desempenho de uma CPU dedicada. O GIL não se comporta de maneira diferente em CPUs diferentes, então essa não é a causa. Use top para verificar a utilização da CPU no VPS; Você está interessado principalmente na linha Cpu desta forma:

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

Com um hipervisor recente e sistema operacional, você deve ver um st número diferente de zero - esse é o tempo de CPU "roubado" por outras VMs no mesmo host, a partir do qual você pode calcular a proporção da CPU estão ficando.

    
por 01.09.2012 / 23:40