Расчет пропускной способности для загрузки веб-сервиса - PullRequest
2 голосов
/ 19 декабря 2009

У меня есть клиент-серверное приложение, которое обменивает XML-документы на данные, запрошенные клиентом. По сути, пользователь вводит некоторые ограничения поиска (атрибуты для сопоставления), и клиент связывается с двумя системами для получения данных (некоторые данные из базы данных и некоторые данные с файловых серверов).

Данные, возвращаемые с файловых серверов (файлы архивных данных), немного больше метаданных, возвращаемых с сервера, и, соответственно, для их выполнения требуется больше времени.

Пользователи попросили меня предоставить некоторые метрики о том, сколько времени требуется для загрузки архивных данных и скорости их загрузки (после загрузки).

Клиентский сервер взаимодействует с асинхронным вводом-выводом и многочисленными потоками, поэтому я не могу просто использовать таймер запуска / остановки для этого.

Моя текущая реализация работает так:

  1. Запись текущих тиков (это длительный процесс, поэтому разрешение тиков в порядке)
  2. Асинхронно передать запрос в веб-службу.
  3. --- Подождите ---
  4. получить текущие тики
  5. получить размер возвращаемого документа (некоторые издержки не учитываются в конверте SOAP, но я думаю, это нормально)
  6. Оценить = (Размер документа / 1024) / (Конечные тики - Начальные тики) * Тики / Секунды (я позволяю объекту временного диапазона делать это)

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

Есть ли лучший способ рассчитать этот показатель, который был бы более защищен от этого? Имеет смысл, что скорость будет выше для больших архивов, но в тестировании я вижу, что она в 10-40 раз выше, чем для файла, размер которого не имеет смысла.

1 Ответ

2 голосов
/ 19 декабря 2009

Пропускная способность, измеренная в вопросе, предполагает, что время передачи является однородным. Это не. В начале сеанса существует стоимость установки, которая включает в себя трехстороннее рукопожатие TCP и время сервера, необходимое для получения результата. После завершения настройки в остальной части преобладает пропускная способность сети.

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

Что ты можешь сделать? Найдите способ удалить компоненты установки из уравнения.

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

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

...