У меня проблема с задержкой при использовании набора микроприложений на 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-адреса, когда он получает немного трафика по сравнению с отсутствием трафика)