Как должен я стресс-тест / нагрузочный тест клиент-серверное приложение? [закрытый]

Цикл for ссылается на одну и ту же переменную набора данных, поэтому каждый раз, когда выполняется цикл, переменная заменяется новым импортированным набором данных. Вам нужно где-то хранить результат, будь то новая переменная каждый раз или в словаре. Попробуйте что-то вроде этого:

googleObj = None
RDPIObj = None
CPIObj = None

data = {"google":[googleObj, "multiTimeline.csv", "Month"], 
    "RDPI":  [RDPIObj,"RealDisposableIncome-2004-1_Present-Mon-US(Grab-30-11-18).csv", "DATE"], 
    "CPI":   [CPIObj, "CPI.csv", "DATE"]}

for dataset in data.keys():
    obj = data[dataset][0]
    obj = pd.read_csv("%s" %(data[dataset][1]), index_col="%s" %(data[dataset][2]), parse_dates=["%s" %(data[dataset][2])])
    obj = dataset.loc["2004-01-01":"2018-09-01"]


Таким образом, у вас будет локальный объект фрейма данных для каждого из ваших наборов данных. Недостатком является то, что вы должны определить каждую переменную.

Другим вариантом является создание второго словаря, как вы упомянули, что-то вроде этого:

data = {"google":["multiTimeline.csv", "Month"], 
    "RDPI":  ["RealDisposableIncome-2004-1_Present-Mon-US(Grab-30-11-18).csv", "DATE"], 
    "CPI":   ["CPI.csv", "DATE"]}

output_data = {}
for dataset_key in data.keys():
    dataset = pd.read_csv("%s" %(data[dataset_key][0]), index_col="%s" %(data[dataset_key][1]), parse_dates=["%s" %(data[dataset_key][1])])
    dataset = dataset.loc["2004-01-01":"2018-09-01"]
    output_data[dataset_key] = dataset
12
задан jkp 7 November 2008 в 01:44
поделиться

4 ответа

Если бы у Вас есть бюджет, LoadRunner идеально подошел бы для этого.

0
ответ дан 26 October 2019 в 10:47
поделиться

Если Вы - удобные тесты кодирования в Python, я нашел, что funkload очень способен. Вы не говорите, что Ваш сервер является находящимся в http, таким образом, Вам, вероятно, придется адаптировать их тестовые средства к Вашему собственному клиент-серверному стилю.

После того как у Вас есть тест в Python, funkload может выполнить его на многих потоках, контролируя время отклика, и подведя итог для Вас в конце теста.

6
ответ дан 26 October 2019 в 10:47
поделиться

Тест 1: Соединитесь и клиенты Разъединения как безумный, чтобы видеть, как хорошо Вы обрабатываете init и конец сессий, и сколько Ваш сервер переживет под скачками, также при выполнении этой меры, сколько клиентов не удается соединиться. Это очень важно

Тест 2: Соедините клиенты и сохраните их, вошел в систему для, говорит неделя, делая случайные действия (FuzzTest). Время распространение в прямом и обратном направлениях каждого действия. Также ведите учет порядка действий, потому что этот путь Ваши "клиенты" найдет лазейки в Ваших вариантах использования (очень важными, и ОЧЕНЬ трудно протестировать рационально).

Протестируйте 3 и 4: Определите главные варианты использования для своей системы и опишите сценарии, которые делают эти задачи. Затем работайте, несколько клиентов, делающих ту же задачу (протестируйте 3), и также несколько клиентов, делающих различные задачи (протестируйте 4).

Серия: Теперь другой размер, в котором Вы нуждаетесь здесь, является количеством клиентов. Хороший ряд был бы: 5,10,50,100,500,1000,5000,10000...

Таким образом, можно получить данные для каждой серии тестов с различными рабочими нагрузками.

Также поздравляю при ПОТЯГИВАНИИ Вашего клиентского API к Python! Это - отличный способ подготовить вещи.

Примечание: IBM имеет образец тестирования пуха на Java, который не связан с Вашим случаем, но поможет Вам разработать хороший fuzztest для своей системы

8
ответ дан 26 October 2019 в 10:47
поделиться

Для производительности Вы смотрите на две вещи: задержка (скорость отклика приложения) и пропускная способность (сколько операции в секунду на интервал). Для задержки у Вас должен быть приемлемый сравнительный тест. Для пропускной способности у Вас должна быть минимальная приемлемая пропускная способность.

Они - Вы начальные точки. Для сообщения клиенту, сколько xyz's можно сделать на интервал затем, Вы испытываете необходимость для знания аппаратной и программной конфигурации. Знание производственных аппаратных средств важно для получения точных чисел. Если Вы не знаете аппаратной конфигурации затем, необходимо создать способ отобразить фигуры с тестовых аппаратных средств на возможные производственные аппаратные средства.

Без ведома аппаратных средств затем можно действительно только наблюдать тенденции в производительности со временем, а не абсолютных понятиях.

Знание конфигурации программного обеспечения одинаково важно. У Вас есть кластеризованная конфигурация сервера, это, сбалансированная загрузка, является там чем-либо еще работающим на сервере? Можно ли масштабировать программное обеспечение, или необходимо ли масштабировать аппаратные средства для удовлетворения требованию.

Знать, сколько клиентов можно поддерживать Вас, должно понять то, что является стандартным набором операций. Быстрый тест должен удалить клиент и описать тупиковый клиент и вращение столько из них, сколько Вы можете. Имейте каждое подключение к серверу. Вы в конечном счете достигнете предела ресурса серверного соединения. Без организации пула подключений или лучших аппаратных средств Вы не можете стать выше, чем это. Часто Вы будете поражать архитектурную проблему прежде здесь, но в любом случае у Вас есть верхние границы.

Возьмите эту информацию и разработайте сценарий, который может выполнить Ваш клиент. Необходимо отобразиться, сколько времени сценарий берет для выполнения действия относительно того, сколько времени это возьмет ожидаемого пользователя, чтобы сделать это. Начните увеличивать свои числа, как упомянуто выше Вам, поражает точку, где увеличение клиентов вызывает большее уменьшение в производительности.

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

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

Параллельные поиски должны быть сделаны посредством Ваших стандартных поисков поведения, действующих от имени клиента или, записать сценарий для установления семафора, который ожидает на многих потоках, затем можно выпустить их внезапно. Интересно и наказывает Вашу базу данных. При выполнении поисков необходимо принять во внимание любые слои кэширования, которые могут существовать. Необходимо протестировать и кэширование и не кэшируясь (в сценариях, где все делают уникальные поисковые запросы).

Устройство хранения данных базы данных основано на физическом пространстве; можно определить размер строки от длин поля и ожидаемого населения данных. Экстраполируйте это статистически или создайте сценарий поколения данных (полезный для Ваших сценариев тестирования загрузки, и должен быть актив к Вашей организации), и затем отобразите сгенерированные данные на бизнес-объекты. Ваши клиенты будут заботиться о том, сколько "бизнес-объектов" они могут сохранить, в то время как Вы будете заботиться о том, насколько необработанные данные могут храниться.

Другие вещи рассмотреть: Какова ожидаемая доступность? Что относительно того, сколько времени это берет для обеспечения сервера онлайн. Доступность на 99,9% не хороша, если требуется два дня для возвращения онлайн одного времени, это действительно понижается. На обороте более низкий availablility более приемлем, если требуется 5 секунд к перезагрузке, и у Вас есть падение.

5
ответ дан 26 October 2019 в 10:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: