Как исправить HTTP / 2.0 504 Gateway Timeout для нескольких одновременных XHR-соединений при использовании HTTP / 2 - PullRequest
0 голосов
/ 30 апреля 2019

Я активирую поддержку HTTP / 2 на моем сервере. Теперь у меня проблема с AJAX / jQuery-скриптами, такими как загрузка или обработка Api.

После max_input_time 60 секунд для php я получил: [HTTP / 2.0 504 Gateway Timeout 60034ms]

с HTTP / 1 - только несколько соединений, при которых стартуются одновременно, а когда соединение завершается, запускается другой. с HTTP / 2 все начинается сразу.

когда загружается пример 100 изображений, это занимает много времени для всех.

Я не хочу менять max_input_time. Я надеюсь ограничить одновременные соединения в скриптах.

спасибо

1 Ответ

0 голосов
/ 01 мая 2019

HTTP / 2 преднамеренно разрешает несколько запросов параллельно.Это отличается от HTTP / 1.1, который разрешает только один запрос за раз (но который браузеры компенсируют открытием 6 параллельных подключений).Недостатком радикального увеличения этого лимита является то, что вы можете получать больше запросов на ходу одновременно, борясь за пропускную способность.

У вас есть два варианта решения:

  1. Измените свойприложение для загрузки дросселя, вместо того, чтобы ожидать, что браузер или протокол сделает это за вас.
  2. Ограничьте максимальное количество одновременных потоков, разрешенных вашим веб-сервером.Например, в Apache это контролируется директивой H2MaxSessionStreams , в то время как в Nginx она аналогичным образом контролируется конфигурацией http2_max_concurrent_streams .Другие потоки должны будут ждать.
...