Проблема с задержкой в ​​Elastic Beanstalk, Nginx-lua, микроприложениях

У меня проблема с задержкой при использовании набора микроприложений на EB с балансировщиком нагрузки. Эта проблема связана с тем, что одно приложение на базе nginx пытается подключиться к другому приложению на ELB. Если мы задействуем API с помощью почтальона, это будет быстро, но отправка в конечную точку через nginx-lua будет сравнительно невероятно медленной.

Мои запросы proxy_passed nginx-lua (openresty) в целях безопасности, а также выполняется перезапись в nginx. Ex (измененные пути и имена переменных)

location /api
{
     proxy_set_header    Authorization   $token;
     rewrite             /api/(.*) /ipa/$1 break;
     proxy_pass  $elb_api_cname;
}

Кажется, что первые несколько запросов к конкретному api (у нас их несколько) имеют большую задержку, которая затем ненадолго снижается для последующих запросов.

Эти экземпляры разработчика не получают большого трафика. Когда мы меняем переменную proxy_pass, устанавливаемую lua, на прямой IP-адрес экземпляра EC2, это почти в 4-10 раз быстрее (300 мс согласовано против 1-5 с).

Я считаю, что это как-то связано с nginx, кеширующим IP-адрес при запуске, и ELB, меняющим IP-адреса, когда он получает немного трафика по сравнению с отсутствием трафика)


person JacobW    schedule 15.05.2018    source источник


Ответы (1)


Таким образом, проблема оказалась проблемой, которую мы могли решить, обновив наши решатели.

В блоке местоположения мы указали преобразователи для службы DNS Amazon, в то время как мы оставили другие преобразователи такими же, чтобы они работали для некоторых внутренних прокси.

Теперь это дает нам ожидаемую скорость.

person JacobW    schedule 21.05.2018