У меня есть веб-сервер, который обслуживает некоторые статические файлы. Иногда, когда сервер находится под большой нагрузкой, он отправляет частичные ответы со статусом HTTP 200.

Это проблема для моего приложения. Зачем?

  • На ответе установлены заголовки кеша, которые предназначены для длительного хранения файла, поскольку эти файлы статичны и никогда не должны изменяться.
  • Время от времени некоторые конечные пользователи получают только часть файла JavaScript с HTTP-статусом 200.
  • Этот файл кэшируется браузером и ломает мое приложение!

Я пробовал 2 разных веб-сервера (Jetty и Apache) и вижу, что проблема возникает с обоими, с балансировщиком нагрузки или без него (haproxy). Это заставляет меня думать, что это не сам веб-сервер, хотя, возможно, это ожидаемое поведение для любого веб-сервера под большой нагрузкой?

Как я могу узнать, что является причиной этой проблемы, или защититься от нее?

РЕДАКТИРОВАТЬ: Эти запросы также имеют заголовок ответа Content-Length который также предоставляется.

1 ответ1

0

Вам нужен захват пакета возникающей проблемы. Может случиться так, что все ваши вещи работают нормально, но конечные пользователи имеют ошибочные браузеры или находятся за ошибочными веб-прокси, брандмауэрами или шлюзами NAT, которые усекают файл.

Возможно, вы захотите посмотреть, как ваши серверы / обратные прокси / балансировщики нагрузки обрабатывают заголовки Content-Length и Transfer-Encoding при обработке этого файла JS. Также ознакомьтесь с правилами для этих вещей в разделе 3.3.2 RFC 7230, «Длина содержимого» и некоторых из следующих разделов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .