TCP-клиент ждет после установления соединения - PullRequest
0 голосов
/ 02 мая 2019

У меня есть HTTP-сервер и клиент (я использую curl для тестирования).У меня проблема в том, что даже самый простой запрос ping выполняется за 3-5 секунд.Я запустил tcpdump на сервере, и кажется, что после установления TCP-соединения клиент (curl) ждет 3-4 секунды для отправки HTTP-запроса:

09: 06: 55.079376 IP-клиент> сервер: Flags [S], seq 1639466412, win 64240, параметры [mss 1358, nop, wscale 8, nop, nop, sackOK], длина 0

09: 06: 55.079457 IP-сервер> клиент: флаги [S.], seq 2519785093, ack 1639466413, win 29200, параметры [mss 1460, nop, nop, sackOK, nop, wscale 7], длина 0

09: 06: 55.087145 IP-клиент> сервер: флаги [.], ack 1, win 1029, длина 0

09: 06: 59.722060 IP-клиент> сервер: флаги [P.], seq 1:83, ack 1, win 1029, длина 82: HTTP: GET /ping HTTP / 1.1

Вы можете увидеть проблему между 3 и 4 строками вывода tcpdump.

Знаете ли вы, что может вызвать эту проблему?Это действительно на стороне клиента, или я должен проверить также на стороне сервера?

ОБНОВЛЕНИЕ Если я использую telnet для подключения к порту сервера и отправки GET, сервер немедленно отвечает.

1 Ответ

0 голосов
/ 16 мая 2019
  • Flags [S] Син
  • Flags [S.] - Syn Ack
  • Flags [.] - Заполнитель, обычно используемый для ACK.
  • Flags [P.] - Push Ack

  • Можете ли вы добавить time к вашей команде curl? как показано ниже.

  • Эти хосты, есть ли задержка между двумя?

В качестве теста на том же хосте (терминале):

terminal a $ python -m SimpleHTTPServer 8989

terminal b $ time curl -vvv localhost: 8989 результаты выглядят примерно так:

real    0m0.018s
user    0m0.006s
sys     0m0.005s

На данный момент трудно сказать, если это на стороне клиента или сервера, это зависит от данных, которые вы пытаетесь запросить. Вы можете поделиться этой командой query / curl?

...