Ситуация:

  • Есть удаленный сервер.
  • Я запускаю клиентскую программу, которая звонит на сервер и запрашивает данные.
  • Эти запросы выполняются очень медленно.
  • Сервер ограничивает количество результатов до 50, а остальное разбивает на страницы. Таким образом, если есть 300 общих результатов, я должен сделать в общей сложности 6 отдельных запросов.
  • (За комментарий Джеймса) Данные представлены в текстовом формате JSON.
  • (Согласно другому комментарию Джеймса) Соединение является соединением https (SSL).

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

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

Как бы я это выяснил? У меня нет доступа к серверу вообще. Допустим, запрос занимает 3 секунды. Затем:

  1. Какая часть этих 3 секунд тратится на открытие TCP-соединения?
  2. Какая часть расходуется на отправку данных запроса?
  3. Какая часть тратится на ожидание получения данных сервером?
  4. Какая часть расходуется на ожидание получения всех запрошенных данных на моем компьютере?

Я не хочу, чтобы мне приходилось катиться по собственному коду TCP/IP, чтобы получить низкоуровневый доступ, необходимый для измерения подобных вещей.

Я уверен, что для этого должны быть написаны инструменты. Когда я гуглю, я вижу такие программы, как netstat, ss, netperf, ttcp и т.д. Но я даже не уверен, какие слова использовать в поиске Google, чтобы искать решения этой проблемы.

Есть идеи?

0