Частый статус HTTP 0
У меня есть веб-приложение, которое представляет собой типичный стек Java (Джерси, Спринг и т. Д.), Хотя внешний интерфейс - это SPA. Мы часто получаем сбои $.ajax с нулевым кодом состояния. Мы видели, что это происходит больше из следующих изменений / условий:
- Внедрение единого канала SSE (берет соединение из клиентского пула)
- Использование Chrome, но происходит с FF
- Переход с Tomcat 7 на 8.5 (я думаю, что NIO стал разъемом по умолчанию)
- Также происходит с Weblogic
- Разработка (в производстве мы используем webpack для объединения в один файл, поэтому больше запросов в dev.)
Я сделал некоторую отладку, и основная ошибка в Chrome - HTTP Status 0 с NET::ERR_INVALID_RESPONSE или NET::ERR_INVALID_HTTP_HEADER. Я посмотрел журналы Tomcat и похоже, что запрос получен, но соединение закрыто до того, как ответ будет записан.
Есть идеи? Кто-нибудь видел эту проблему и есть подсказки?
Может ли это быть каким-то жнецом, убивающим пустые соединения, даже при том, что данные ждут?
Вот дамп net-internals запроса.
7821: URL_REQUEST
http://localhost:8080/application/api/v1/object/19?mode=design
Start Time: 2017-12-01 07:01:48.047
t=76821 [st= 0] +REQUEST_ALIVE [dt=23]
--> priority = "MEDIUM"
--> url = "http://localhost:8080/application/api/v1/object/19?mode=design"
t=76821 [st= 0] URL_REQUEST_DELEGATE [dt=0]
t=76821 [st= 0] +URL_REQUEST_START_JOB [dt=23]
--> load_flags = 33026 (BYPASS_CACHE | MAYBE_USER_GESTURE | VERIFY_EV_CERT)
--> method = "GET"
--> url = "http://localhost:8080/application/api/v1/object/19?mode=design"
t=76821 [st= 0] URL_REQUEST_DELEGATE [dt=0]
t=76821 [st= 0] HTTP_CACHE_GET_BACKEND [dt=0]
t=76821 [st= 0] HTTP_CACHE_DOOM_ENTRY [dt=1]
--> net_error = -2 (ERR_FAILED)
t=76822 [st= 1] HTTP_CACHE_CREATE_ENTRY [dt=0]
t=76822 [st= 1] HTTP_CACHE_ADD_TO_ENTRY [dt=0]
t=76822 [st= 1] +HTTP_STREAM_REQUEST [dt=0]
t=76822 [st= 1] HTTP_STREAM_JOB_CONTROLLER_BOUND
--> source_dependency = 7824 (HTTP_STREAM_JOB_CONTROLLER)
t=76822 [st= 1] HTTP_STREAM_REQUEST_BOUND_TO_JOB
--> source_dependency = 7825 (HTTP_STREAM_JOB)
t=76822 [st= 1] -HTTP_STREAM_REQUEST
t=76822 [st= 1] +HTTP_TRANSACTION_SEND_REQUEST [dt=0]
t=76822 [st= 1] HTTP_TRANSACTION_SEND_REQUEST_HEADERS
--> GET /application/api/v1/object/19?mode=design HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36
DNT: 1
Referer: http://localhost:8080/application-design/design/object/19/component
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: JSESSIONID=E17B2B710866EC345BBC62B4B6ECA338
t=76822 [st= 1] -HTTP_TRANSACTION_SEND_REQUEST
t=76822 [st= 1] +HTTP_TRANSACTION_READ_HEADERS [dt=22]
t=76822 [st= 1] HTTP_STREAM_PARSER_READ_HEADERS [dt=22]
--> net_error = -370 (ERR_INVALID_HTTP_RESPONSE)
t=76844 [st=23] -HTTP_TRANSACTION_READ_HEADERS
--> net_error = -370 (ERR_INVALID_HTTP_RESPONSE)
t=76844 [st=23] -URL_REQUEST_START_JOB
--> net_error = -370 (ERR_INVALID_HTTP_RESPONSE)
t=76844 [st=23] URL_REQUEST_DELEGATE [dt=0]
t=76844 [st=23] -REQUEST_ALIVE
--> net_error = -370 (ERR_INVALID_HTTP_RESPONSE)