Форум сайта python.su
Спасибо всем за такое внимание к моей проблеме
По делу:
Lexander,
Сколько вы говорите у вас потоков - 100 и более?Да, обычно меньше 100 не использовал
Чтобы проверить эту гипотезу, проверьте время до замедления с разным количеством потоков.Не очень понял что вы имеете ввиду? Если имеется ввиду зависимость влияния количества потоков на время замедления, то её я проверил и, как писал постом выше - она обратная: чем больше потоков - тем меньше времени проходит до замедления.
либо уменьшить количество потоков - этот вариант подойдет, если сетевой интерфейс нагружен на 50 и более процентов;Проверил нагрузку сетевого интерфейса: как до замедления, так и после, сетевой интерфейс используется обычно не более чем на 5%
либо переписать код на multiprocessing, twisted, asyncore и т.п. вещахУже смотрю в сторону twisted, но не увидел в нём поддержки socks5. Только socks4, если не ошибаюсь
для этого я и сделал Grab::Spider, чтобы сотни тредов или процессов не создавать.Но Spider подойдёт только в целях работы с http. А моя проблема наблюдается и в случае работы с smtp
Офлайн
либо переписать код на multiprocessing
Офлайн
Интересную вещь обнаружил сегодня.
Попробовал переделать многопоточное приложение, работающее с smtp, используя gevent.
В итоге всё работало отлично (скорость возможно даже чуть быстрее чем на потоках), памяти жрало ещё меньше, нагрузка сетевого интерфейса не поднималась выше 1%, НО после такого же промежутка времени, как у многопоточных приложений, скорость упала. Т.е. на 300 потоках скорость падала на 18 минуте, и на 300 гринлетах скорость также упала на 18 минуте.
Что это может значить?
Отредактировано deye (Май 31, 2013 14:42:41)
Офлайн
В свете вновь открывшихся фактов у меня еще 2 гипотезы:
1. стоит ограничение на сервере
2. стоит ограничение у провайдера
Это маловероятно (особенно, второе), но просто отложите себе в память.
Я все еще настаиваю на установке счетчиков и профилировании, чтобы понять где и на чем падает скорость.
Офлайн
Lexanderтоже об думал.
1. стоит ограничение на сервере
2. стоит ограничение у провайдера
deyeпопробуйте для эксперимента запустить два или три таких параллельно,
скорость также упала
Офлайн
также для эксперимента запустить второй процесс на 15минуте.
Офлайн