Время ожидания веб-сайта Google Cloud Run, если длина контента составляет от 4013 до 8092 символов. Что происходит? - PullRequest
0 голосов
/ 04 августа 2020

Эта проблема возникает с чистыми PHP файлами, обслуживаемыми Nginx и PHP -FPM. Я столкнулся с этой проблемой при разработке своего веб-сайта с использованием Symfony, но диапазон длины содержимого c для этого составляет 3702-15965 (интересно, почему он отличается от vanilla PHP).

Что Я пробовал до сих пор:

  • Продолжительность тайм-аута составляет 15 секунд, но я пробовал увеличить ее до 300 секунд, но все еще тайм-ауты. Так что я предполагаю, что это бесконечная зацикленность.
  • Не похоже, что это связано с ресурсами, потому что оно работает, даже если длина содержимого составляет 5 миллионов символов. посмотрим, смогу ли я внести изменения в диапазон длины c содержимого. Ответ: нет, диапазон оставался неизменным для всех моих тестов.
  • Я пробовал отключить gzip. Диапазон длины не изменился, но ответ изменился. Ответ с включенным Gzip: «Тайм-аут восходящего запроса» | Ответ с отключенным Gzip: полностью пустой

Примечания:

  • Эта проблема не существует на моем локальном хосте.
  • Это редко открывает страницу нормально. Я не могу воспроизвести это последовательно.
  • В журналах Nginx, PHP или GCR нет ошибок, кроме строк «время ожидания запроса истекло».

Любая помощь оценен. Спасибо.

Ответы [ 2 ]

1 голос
/ 08 августа 2020

Указывается от c до nginx, а не Cloud Run. Когда nginx начинает получать ответ от бэкэнда FastGCI, он буферизует ответ заголовка в памяти. Если ответ слишком велик для памяти, его часть можно сохранить во временный файл на диске, который управляется другими переменными, как описано здесь . При отключении fastcgi_buffering ответ передается клиенту синхронно по мере его получения. Дополнительную информацию можно найти в этих статьях [1] [2] [3]

[1] восходящий поток отправил слишком большой заголовок при чтении заголовка ответа из восходящего потока

[ 2] Nginx восходящий поток отправил слишком большой заголовок при чтении заголовка ответа из восходящего потока

[3] https://gist.github.com/magnetikonline/11312172#determine -fastcgi-response-sizes

0 голосов
/ 04 августа 2020

Как ни странно, я решил проблему при написании вопроса. Добавление fastcgi_buffering off; в конфигурацию Nginx устраняет проблему.

Но я до сих пор не понимаю, в чем проблема и почему отключение буферизации устранило ее. Так что, если кто-нибудь может объяснить это, я не возражаю отметить этот ответ как решение.

...