Ситуация:
- Есть удаленный сервер.
- Я запускаю клиентскую программу, которая звонит на сервер и запрашивает данные.
- Эти запросы выполняются очень медленно.
- Сервер ограничивает количество результатов до 50, а остальное разбивает на страницы. Таким образом, если есть 300 общих результатов, я должен сделать в общей сложности 6 отдельных запросов.
- (За комментарий Джеймса) Данные представлены в текстовом формате JSON.
- (Согласно другому комментарию Джеймса) Соединение является соединением https (SSL).
Владелец сервера предложил увеличить количество результатов на странице, чтобы я мог делать меньше запросов.
Хотя я думаю, что это поможет, я обеспокоен тем, что транзакция не будет достаточно быстрой для моих целей. Интересно: а что если проблема не в издержках сервера при получении данных? Что, если наибольшее снижение производительности связано с пропускной способностью сети и задержкой?
Как бы я это выяснил? У меня нет доступа к серверу вообще. Допустим, запрос занимает 3 секунды. Затем:
- Какая часть этих 3 секунд тратится на открытие TCP-соединения?
- Какая часть расходуется на отправку данных запроса?
- Какая часть тратится на ожидание получения данных сервером?
- Какая часть расходуется на ожидание получения всех запрошенных данных на моем компьютере?
Я не хочу, чтобы мне приходилось катиться по собственному коду TCP/IP, чтобы получить низкоуровневый доступ, необходимый для измерения подобных вещей.
Я уверен, что для этого должны быть написаны инструменты. Когда я гуглю, я вижу такие программы, как netstat, ss, netperf, ttcp и т.д. Но я даже не уверен, какие слова использовать в поиске Google, чтобы искать решения этой проблемы.
Есть идеи?