Прога делает GET запрос по списку URL и проверяет вхождение фразы в ответе сервера.
Странность:
В 1 поток работает со скоростью 0,8 адресов в секунду.
В 5 потоков - 4,3 адреса в секунду.
В 20 потоков - 5,1 адреса в секунду.
В 50 потоков - 12,8 адреса в секунду.
Т.е. рост числа потоков не приводит к пропорциональному росту производительности.
При этом:
- у каждого потока есть задание в нужный момент времени, т.е. он не простаивает и с увеличеним числа потоков растет время выполнения кода:
httplib2.request(url, 'GET', headers=headers)
- канал 100мбит/с загружен меньше, чем на 1%.
Находил, что в старых версиях httplib2 было: http://code.google.com/p/httplib2/issues/detail?id=91
что решилось вводом
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
Как понять что сейчас (внутри библиотеки httplib2) тормозит процесс?