При 300 запросах в секунду к одному сервису копятся тысячи соединений TIME_WAIT
Сервис заказов вызывает сервис цен 300 раз в секунду через общий http.Client со стандартным транспортом. netstat показывает тысячи соединений в состоянии TIME_WAIT, а в трассах заметна стоимость установки TLS почти на каждом запросе.
Что настроить?
- Увеличить MaxIdleConnsPerHost у транспорта
- Создавать новый http.Client на каждый запрос
- Отключить keep-alive, чтобы соединения закрывались сразу
- Уменьшить таймаут клиента до 100 мс
