Что лучше: стресс-тестирование всей системы против профилирования и стресс-тестирование отдельных частей?

Я работаю в компании, которая полностью работает в облаке, и мы начали проект стресс-тестирования. Идея состоит в том, чтобы загрузить все производственное оборудование в новую среду и провести на нем стресс-тесты, чтобы определить общую емкость системы и определить узкие места.

Сейчас я вспоминаю время, когда мы проводили стресс-тесты физических серверов, а также частных облаков, и я помню, что было почти невозможно получить полную копию производства и всех его движущихся частей. Кроме того, даже при использовании инструментов стресс-тестирования, таких как sysbench, Jmeter и ab, вы никогда не сможете точно смоделировать трафик, как при производстве.

Обычно мы отслеживаем и профилируем производство настолько, насколько это возможно, выявляем проблему, а затем пытаемся решить эту конкретную проблему, моделируя ее в среде стресс-тестирования.

Чтобы рассчитать емкость, которую мы использовали (и некоторые все еще делают), используйте расчет, чтобы предсказать, когда емкость будет достигнута или если время отклика будет ниже удовлетворительных уровней.

Учитывая, что проект по воссозданию производственных и стресс-тестов требует значительных затрат времени и ресурсов, это лучший способ найти узкие места в системе и измерить мощность, или же "старый" способ лучше?

1 ответ

Всегда лучше подчеркнуть всю систему и использовать производственную среду (или даже производство).

Прежде всего, проверьте, может ли пропорционально уменьшенная среда тестирования обнаружить проблемы с производительностью? вопрос и его ответы.

Базовая инфраструктура приложения состоит из множества различных компонентов, таких как кэши, веб-серверы, серверы приложений и диски (I/O). Пропускная способность и CDN также играют роль в его функции и, следовательно, должны учитываться при масштабировании. Каждый компонент ведет себя по-разному в приложении в зависимости от того, как оно было настроено и масштабировано. Однако многоуровневая структура затрудняет расчет того, как каждый из них должен быть проверен и масштабирован.

Поэтому по возможности всегда идите на тестирование системы в реальных условиях. Если это невозможно, вы все равно можете запустить нагрузочные тесты в уменьшенной среде, однако не ожидайте, что вы сможете точно экстраполировать результаты, как если бы эта машина имела 10 ГБ ОЗУ и была способна выдержать 1000 RPS, что Машина имеет 20 ГБ ОЗУ, поэтому она будет 2000 RPS - так работать не будет.

Другие вопросы по тегам