Надеюсь, кто-нибудь сможет помочь с этим.
Короткая версия: я собираюсь создать свой собственный тестер стресса на сайте на Python.
Почему?Потому что мне это нравится :) Я не ищу готовое решение [например, funkload или JMeter].Это кажется интересным занятием по программированию.Я также думаю, что изучение того, как делать то, что я хочу, может быть полезно позже в других ситуациях.
Что я хочу, чтобы это делало?Я намерен сделать его более сложным с течением времени, но моя первая цель проста: сделать как можно больше запросов в кратчайшие сроки.Я стреляю по 300-500 запросов в секунду.
Я пробовал несколько разных методов.Двумя наиболее перспективными являются:
- Нити порождения.Много их.Пусть каждый поток сделает один запрос.Это оказалось самым быстрым [легко получить около 1 запроса в секунду на поток - 500 потоков означало почти 500 запросов в секунду], однако это кажется чрезвычайно интенсивным для компьютера.На мой взгляд, объем памяти и вычислительные ресурсы, порождаемые несколькими сотнями потоков в Python, являются непомерно высокими.Я чувствую, что должно быть более элегантное решение.
- Используйте асинхронную библиотеку Python.Я возился с этим, и это, кажется, действительно круто, но я очень быстро заканчиваю.Если я получаю запросы размером около 140 байтов, то он способен выбрасывать> 1000 запросов в секунду [потрясающе!], Но мне нужно, чтобы он мог обрабатывать запросы, когда ответ значительно больше [т.е. 100–500 кБ].Введение большего размера ответа означает, что он душит около 10-50 запросов в секунду [если мне повезет].
У кого-нибудь есть какие-либо идеи или предложения?Если бы я мог каким-то образом получить размер ответа, не заставляя его прочесть, это было бы идеально.Все, что я хочу знать, это то, что я на самом деле получаю правильное количество байтов.Что это за данные, не имеет значения.
Или, если это не вариант в Python, то, честно говоря, я бы попробовал все, что кто-либо может предложить.Я играл с Twister, но не достиг скорости, превышающей ту, которую я уже видел с потоками.
В любом случае - любая помощь будет отличной.Спасибо!