Python multithreading not working on VPS server
Я запускаю многопоточное приложение на Python с несколькими процессами, которое очищает данные с некоторых веб-сайтов. Работая на моем локальном хосте, он отлично работает, но на используемом мной vps-сервере ( Centos 5.8, 2.6 ГГц с 4 ядрами) работает очень медленно.
Из команды nethogs я получаю слишком низкое использование сети. Я получаю около 8 Кбит / с с 15 потоками. С другой стороны, в моем ПК используется около 100-120 Кбит / с.
Я читал об Python GIL и ограничениях потоков. Кажется, GIL никогда не снимает блокировку на VPS, хотя должен делать это при I/0
Есть ли какая-либо конфигурация в VPS, которую мне нужно изменить для правильной работы потоков?
ОБНОВЛЕНИЕ: На самом деле многопоточность работает, но проблема была в процессоре. 15 потоков было слишком много для него, и он стал слишком занят переключением потоков. Хотя VPS утверждает, что это процессор с частотой 2,6 ГГц, я думаю, что на самом деле это не так. Есть ли способ измерить реальную скорость процессора в VPS?
1 ответ
Вы почти наверняка совместно используете ЦП с другими VPS на том же хосте, поэтому вы не можете ожидать, что получите ту же производительность, что и выделенный ЦП. GIL не ведет себя по-разному на разных процессорах, так что это не причина. использование top
проверить загрузку процессора на VPS; вы в основном заинтересованы в Cpu
строка как это:
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
С последним гипервизором и ОС вы должны увидеть ненулевой st
число - это время ЦП, "украденное" другими виртуальными машинами на том же хосте, из которого вы можете определить, какую долю ЦП вы получаете.