В настоящее время у меня проблема с настройкой производственного развертывания в AWS.
У меня есть экземпляр EC2 с хостингом NGINX / PHP / Laravel 5.1, который находится за AWS ELB.
Один из моих RESTAPI возвращает ответ размером от 1,2 до 1,6 МБ в конкретном сценарии (в большинстве общих сценариев он возвращает гораздо меньшие размеры ответов) и время ожидания вызовов.
Следующее сообщение об ошибке регистрируется
тайм-аут восходящего потока (110: тайм-аут соединения) при чтении ответа
заголовок из восходящего потока, клиент: xxxxxxxxxxx, сервер: xxxxxxxxxxx,
запрос: «POST / api / event / gallery HTTP / 1.1», upstream:
«fastcgi: // unix: /run/php/php7.0-fpm.sock», хост: «xxxxxxxxxxx»
Похоже, что 1.2-1.6 МБ не является большим размером ответа, чтобы объяснить время ожидания.
Я подтвердил, что мой реальный вызов PHP (в нижней части стека вызовов) возвращается в течение 20 секунд.
Последующие исследования показали, что время ожидания AWS ELB составляет 60 секунд, и, вероятно, соединение закрывается.
https://www.cadence-labs.com/2017/07/fix-nginx-timeout-499-client-closed-request/
Мой экземпляр AWS EC2 имеет тип m4.large. И я обеспокоен тем, почему производственной установке с проверенными компонентами, такими как AWS ELB, NGINX, будет трудно обрабатывать данные размером 1.x mb. Вполне вероятно, что я делаю что-то не так, или я неправильно настроил всю систему развертывания. Пожалуйста, помогите с вашими предложениями.
Или, может быть, я слишком оптимистичен, и мне следует перейти к нумерации ответов, чтобы удовлетворить большие размеры ответов. Но опять же, я не хочу разбивать на страницы, не понимая границ или не зная точно, когда я должен. Каков максимальный размер / предел для ответа REST API, после которого я должен рассмотреть разбиение на страницы?
Задача ещё не решена.
Других решений пока нет …