задержка выше в низком трафике с нетто - PullRequest
0 голосов
/ 21 марта 2019

В нашей производственной среде возникла странная проблема: задержка выше при низком трафике. Затем я создаю Tcp Server и Client с Netty4 и отправляю данные по одному соединению. Каждый запрос составляет 100 КБ. Задержка в qps (запрос в секунду) = 1 намного выше, чем в в qps = 100. Условия:

  1. Задержка PING между сервером и клиентом составляет около 2 мс.
  2. опция TCP_NODELAY включена с обеих сторон.
  3. на стороне сервера, он будет находиться в режиме ожидания в течение 20 мс (смоделируя службу prod).

Результат теста:

  • <24 мс при qps = 100 (100 КБ на запрос); </li>
  • > 35 мс, когда qps = 1 (100 КБ на запрос);
  • <23 мс, когда qps = 1 (1 КБ на запрос); </li>

Задержка с другим размером пакета, когда qps = 1

  • Пинг laltency: 1.66ms
  • 100 кБ - 39 мс
  • 50 кБ - 32 мс
  • 20 кБ - 27,38 мс
  • 17 кБ - 26,15 мс
  • 15 кБ - 25,9 мс
  • 10 кБ - 22,62 мс (что приемлемо)

Я бы хотел выяснить причину плохой работы в условиях низкого трафика. Интересно, это вызвано некоторыми опциями Tcp.

1 Ответ

0 голосов
/ 26 марта 2019

Наконец, мы выяснили причину этой высокой задержки с низкой задержкой трафика. При тестировании пакетов разных размеров 14KB стал поворотным моментом: если пакет был не больше 14KB, задержка показала, как и ожидалось, но если размер пакета увеличился до 15KB, задержка ухудшилась. Поэтому мы попытались обновить net.ipv4.tcp_init_cwnd с 10 до 100, задержка сократилась, поскольку запрос с несколькими пакетами TCP может быть включен в одно и то же скользящее окно.

...