У нас возникают некоторые проблемы с колеблющейся (нестабильной) пропускной способностью при загрузке одного потока HTTP с сервера Nginx в Linux.
Мы обнаружили, что один поток HTTP дает нестабильную пропускную способность, которая колеблется в большую и меньшую сторону.
Мы предоставляем загружаемые файлы клиентам, которые загружают их в веб-браузере по протоколу HTTP. Это, конечно, загрузка одного соединения / потока.
Мы предоставляем эти файлы по всему миру, поэтому, конечно же, мы работаем с BDP и т. Д.
Сервер подключен к 1 Гбит / с (прямой Ethernet в центре обработки данных в Лондоне).
Вот наши текущие настройки sysctl.conf для повышения пропускной способности даже при большей, чем обычно, задержке:
net.core.netdev_max_backlog=3000
net.core.netdev_budget=600
net.core.optmem_max = 268435456
net.ipv4.tcp_slow_start_after_idle=0
net.ipv4.tcp_mtu_probing=1
net.core.rmem_max = 268435456
net.core.wmem_max = 268435456
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728
Сервер, обслуживающий файлы, - это сервер Nginx. Нет проблем с дисковым IOPS, и ресурсы довольно бесплатны даже после максимального соединения (1 Гбит / с).
Для тестирования мы запустили виртуальную машину на расстоянии около 1000 миль в Германии со скоростью 400 Мбит / с (мы находимся в Великобритании). Мы провели тест для однопоточной загрузки HTTP и заметили, что скорость загрузки будет колебаться от ~ 20 Мбит / с до ~ 43 Мбит / с - она никогда не была стабильной и полностью загруженной. Пропускная способность постоянно росла и падала и никогда не была стабильной.
Чтобы устранить проблему с нашим сервером, мы провели тот же однопоточный тест с использованием тестовых файлов Tele2 по адресу: http://speedtest.tele2.net/
Используя сервер / файлы Tele2, мы заметили, что скорость была стабильной и не колебалась вверх / вниз, а пропускная способность была на максимальной пропускной способности (~ 400 Мбит / с) тестовой виртуальной машины в Германии.
Это подтверждает, что проблема связана с нашим сервером.
Когда мы запускали загрузку с несколькими потоками / потоками, например, используя aria2c для многопоточных загрузок HTTP, мы смогли достичь полной согласованной скорости, достигнув максимальной 400 Мбит / с на тестовой виртуальной машине.
Что могло быть причиной колебания скорости? Есть ли какие-то настройки / настройки, которые нам не хватает?
Спасибо за любую помощь и советы / советы заранее.