Проще говоря, у меня есть приложение, в котором данные должны передаваться через Интернет между двумя серверами. В идеале я бы хотел проверить, в какой момент программа перестает работать. При каком нижнем пределе (пропускная способность, задержка, отброшенные пакеты) перестают работать, чтобы проверить надежность программного обеспечения.
Я думал, что сделаю следующее:
Звучит ли это как хорошая идея или есть более простые / лучшие способы сделать это? Я не так удобен в Linux, а мои товарищи по команде еще меньше.
Я думаю, что «производительность» было неправильным словом. Что я действительно хочу проверить, так это то, при каком нижнем пределе (пропускная способность, задержка, отброшенные пакеты) перестают работать, чтобы проверить надежность программного обеспечения.





FreeBSDs ipfw позволяет имитировать ссылки с заданной полосой пропускания, задержкой или частотой ошибок. Вы можете использовать эту машину FreeBSD как свою машину «посередине» в описанной выше настройке.
Вы, вероятно, также можете запустить хотя бы одну из конечных точек на одном компьютере, если хотите уменьшить количество задействованных серверов.
Много лет назад мы с коллегой с большим успехом использовали ipfw для нагрузочного тестирования прокси. Он заменил дорогостоящее решение (которое останется безымянным), которое так плохо работало, что я попытался вернуть наши деньги.
У нас было подобное требование лет десять назад - посмотрю, смогу ли я вспомнить, как нам это удалось.
Если я помню, мы написали программу прокси-сервера для сокетов, которая управлялась inetd в системе UNIX. Этот сокет будет принимать соединения от клиента и открывать эквивалентные сеансы до сервера. Затем он будет зацикливаться, передавая сообщения в обоих направлениях.
Способ, которым мы достигли характеристик WAN, заключался в введении случайных задержек (с верхним и нижним пределами) как при установлении соединения, так и при передаче данных после того, как соединение было установлено.
У него также была возможность иногда сбрасывать ссылку, поскольку ссылки WAN были для нас менее надежными, чем локальный трафик.
Я помню, что нам пришлось сделать его многопоточным, чтобы задержки не влияли на обратный трафик по ссылке.
Кто-то на самом деле собрал настройки и все, что не нужно для решения этой проблемы FreeBSD, и они назвали это ДУММИНЕТ.
It simulates/enforces queue and bandwidth limitations, delays, packet losses, and multipath effects. It also implements a variant of Weighted Fair Queueing called WF2Q+. It can be used on user's workstations, or on FreeBSD machines acting as routers or bridges.
Он может имитировать именно то, что вы хотите, и это бесплатно и будет загружаться на обычное оборудование. У них даже есть готовая установка, достаточно маленькая, чтобы ее можно было поместить на дискету (!), Которую вы можете скачать по этой ссылке.
Может ли DummyNet работать на машинах VMware? Я скачал, посмотрел и, похоже, работает только на физических машинах. В примерах, которые я видел, используются два перекрестных кабеля между машинами и машиной freebsd, и я не уверен, как настроить freebsd в качестве шлюза.
Я не пробовал dummynet на VMware, но это определенно интересная идея. Потенциально, если вы построите дешевую быструю коробку с кучей сетевых карт, вы сможете смоделировать с ее помощью целую топологию.
WANem делает именно это. Мы использовали его как на виртуальной машине на рабочем столе, так и на выделенном старом компьютере, и он отлично работал. Он может имитировать всевозможные нарушения связи.
Возможно, пришло время немного узнать о Linux, потому что добавить задержку в 50 мс для каждого исходящего пакета можно, набрав всего одну строку:
tc qdisc add dev eth0 root netem delay 50ms
Подробнее см. Linux Traffic Control HOWTO
Для этого есть очень хорошее (и бесплатное) решение Microsoft, мы используем его довольно долго, и он отлично работает, он может очень легко имитировать все (потеря пакетов, низкая пропускная способность, отключение, задержка ...) Это лучшее решение, которое я нашел для среды Windows.
Более подробную информацию и ссылку для скачивания можно найти здесь: Сообщение в блоге MARCO
этот продукт претерпел некоторую эволюцию, и теперь он интегрирован в визуальную студию в рамках тестирования автоматизации, но я обнаружил, что использование автономной версии (которую довольно сложно найти, поэтому сохраните локальную копию) работает намного лучше. имейте в виду, что вам нужно как минимум два компьютера (или виртуальные машины), так как вам нужно пройти через сетевой адаптер, чтобы приложение могло творить чудеса.
Не могли бы вы подробнее рассказать, какое тестирование производительности вы пытаетесь провести?