Можете ли вы предложить, как создать тестовую среду для моделирования различных типов пропускной способности и трафика в веб-приложении?
Или, может быть, программа с открытым исходным кодом, которая делает это против localhost?
Я думаю, что это очень важная тема при программировании веб-приложений, но это не обычная тема, единственный способ, который я могу представить для создания такой среды, - это использовать какой-то прокси в локальной сети, но до того, как начать изучать squid документации хотелось бы услышать ваши предложения.





Самое близкое, что я могу придумать, - это сделать что-то подобное с ВЕДэкстоп от Shunra ..
Shunra VE Desktop Standard - это клиентское программное решение на базе Windows, которое имитирует подключение к глобальной сети, чтобы вы могли тестировать приложения в различных текущих и потенциальных сетевых условиях - прямо со своего рабочего стола.
если вы используете apache, вы можете взглянуть на apache ab
Некоторое время назад я написал php-скрипт, который использовал CURL для запуска последовательности запросов страниц к моему серверу, что представляло собой типичный сценарий использования. Я попросил его вывести время, которое требовалось серверу, чтобы ответить на каждый из запросов. Затем у меня был другой сценарий, который порождал несколько этих сценариев тестовых случаев одновременно в течение длительного периода и коррелировал результаты в файл, который я мог затем просмотреть в электронной таблице, чтобы увидеть среднее время. Таким образом я мог смоделировать количество пользователей, попавших на нужный мне сайт. Ограничения состоят в том, что вам нужно запустить тестовый сценарий на сервере, отличном от веб-сервера, и что клиентский компьютер может стать слишком загруженным, чтобы давать значимые результаты после определенного момента. С тех пор я уволился с работы, иначе я бы вставил сюда скрипты.
Мы используем Loadrunner для моделирования пропускной способности и трафика в нашем приложении. Loadrunner может запускать агенты на разных машинах, и вы можете моделировать одну машину как работающую на модеме коммутируемого доступа, другую на DSL и другую на кабельном Интернете. Мы также используем Loadrunner для моделирования различных условий трафика от 10 пользователей до 500 пользователей. Мы также можем вставить время обдумывания в сценарий и смоделировать реального пользователя, выполняющего HTTP-запрос. Самое приятное то, что он поставляется со студией звукозаписи, где он подключается к Internet Explorer, и вы можете записать весь сценарий / вариант использования, который может быть таким простым, как переход с одной страницы на полномасштабный сценарий из 50-60 страниц или более.
Я нашел эту небольшую программу на Java, которая отлично работает: небрежный
еще не профессиональное решение, но оно работает для простых тестов, я думаю, оно использует потоки и буферы Java для замедления соединения.
Вы смотрели на Цунга? Это отличная утилита для проверки, будет ли ваш сайт масштабироваться в случае атаки, я имею в виду огромную популярность. Мы используем его для нашего веб-интерфейса, а также для наших внутренних систем.
Если вы используете Linux-сервер в качестве сервера, Linux-сервер в качестве клиента или имеете возможность разместить (например, виртуальную машину) маршрутизатор Linux между вашим клиентом и сервером, вы можете использовать NetEm.
NetEm - это дисциплина Linux TC (Управление трафиком), которая может задерживать (т.е. добавлять задержку) пакеты, покидающие хост. Хотя сложно установить хитроумные правила (например, добавить задержку к одному трафику, а не к другому), легко добавить простое правило типа «задерживать все, покидающее интерфейс на 50 мс», и некоторые рецепты предоставляются.
Вставив виртуальную машину Linux между вашим клиентом и сервером, вы можете имитировать столько задержки, сколько захотите. И вы можете включать и выключать его динамически. В Linux есть и другие дисциплины TC, которые можно комбинировать с NetEm для ограничения пропускной способности (но сценарий для их настройки может быть несколько сложным). NetEm также может случайным образом отбрасывать пакеты.
Я использую его, и он работает очень хорошо :)
Если вас интересует выполнение тестов в браузере, есть также действительно отличный плагин для Firefox.
Существует два подхода к формированию сетевого трафика для имитации сетевого соединения:
(2) - лучшее решение, если вы не хотите устанавливать программное обеспечение на клиент или сервер (и, возможно, влиять на производительность), но требует больше возиться с оборудованием.
Некоторые другие особенности, о которых вы, возможно, захотите подумать, - это то, какие параметры формирования можно моделировать. Большинство из них делают задержку и потерю пакетов, некоторые также ограничивают джиттер и полосу пропускания. Некоторые решения могут выборочно фильтровать трафик (например, по номеру порта, TCP или UDP и т. д.).
Вот список некоторых из найденных мной систем:
Открытый исходный код или бесплатное ПО
DummyNet - это BSD с открытым исходным кодом на основе Unix для выделенных устройств. Неясно, активно ли поддерживается программное обеспечение.
NistNet - это система на базе Linux с открытым исходным кодом для выделенных устройств. Программное обеспечение не поддерживалось активно в течение нескольких лет.
Коммерческий
Apposite Technoligies продает специализированные аппаратные решения для моделирования каналов WAN с графическим веб-интерфейсом для настройки параметров и сбора измерений трафика.
DataCom Восточного побережья продают аппаратные специализированные тренажеры для моделирования роутеров и модемов
Itrinegy предлагает как решения для выделенных устройств, так и решения для работы на клиентах или серверах.
Сеть FX предлагает несколько продуктов для специализированных устройств для моделирования нарушений сети между клиентом и сервером.
NetLimiter - это система на стороне клиента, которая позволяет регулировать работу отдельных приложений и включает брандмауэр.
Программное обеспечение Shunra предлагает широкий спектр продуктов, от моделирования и тестирования корпоративных сетей WAN высокого уровня до простого эмулятора на базе клиента.
Очень подробный и хорошо написанный ответ. Спасибо!
Как уже упоминали другие люди, Ab Apache (поставляется с Apache, так что он у вас, вероятно, уже есть) хорош.
Другие хорошие варианты:
Мне лично больше всего нравятся ab и JMeter.
Инструмент защиты веб-приложений (WAST) от Microsoft - это то, что вам нужно.
Я не использовал его в течение многих лет (отсутствие необходимости, не потому, что я нашел что-то еще), но xat webspeed было бы первым, на что я бы указал
Не забываем про Wanulator (http://www.wanulator.de/). Название Wanulator происходит от «WAN» и «simulator». Это в значительной степени описывает то, что делает программное обеспечение: оно имитирует различные условия Интернета, такие как задержка или потеря пакетов. Кроме того, он имитирует скорость линии доступа пользователя, например, модем, ISDN или ADSL. Wanulator в настоящее время упакован в виде загрузочного компакт-диска Linux на основе SLAX. Это даст вам полный опыт работы. Вы можете в мгновение ока превратить любой компьютер в тестовую систему - просто загрузив компакт-диск Wanulator. Пакет уже включает полезное клиентское ПО, такое как веб-браузер и сетевой сниффер (Wireshark). Тем не менее, если ПК имеет 2 сетевых интерфейса, система может работать как промежуточная система между вашим сервером и вашим клиентом - как коммутатор - без каких-либо проблем с настройкой.
Если это проект с открытым исходным кодом, не могли бы вы поделиться им?