У меня возникли проблемы с HTTP-соединениями на нашем сервере после длительной транзакции. Следующий запрос приведет к исключению java.net.SocketException: неожиданный конец файла с сервера .
Это прекрасно работает, если я отключаю поддержку активности на HTTP-сервере Apache или на JVM с клиента.
Установка:
- HTTP-сервер Apache, конфигурация по умолчанию (также пытались увеличить время ожидания активности до 60 сек), подключенный к tomcat через AJP
- сервер Apache Tomcat, по умолчанию conf
- Приложение сервера Java (Spring stack), отвечающее на HTTP-запросы внутри tomcat
- Java-клиент (Spring, RestTemplate) -> снимать HTTP-вызовы с этого сервера
- Клиент Java может работать на том же сервере (-> http против localhost) или на другом компьютере, проблема остается прежней
- iptables отключен на сервере
- Для теста использовался только один клиент -> в данный момент никакой другой клиент не подключался к серверу
Что происходит?
...other stuff...
13:39:32.018 Do Rest call
13:39:32.111 Rest call return headers: Keep-Alive=[timeout=60, max=97], Connection=[Keep-Alive]
13:39:32.609 Do Rest call
13:39:33.849 Rest call return headers: Keep-Alive=[timeout=60, max=96], Connection=[Keep-Alive]
13:39:33.869 Do Rest call
...LONG RUNNING TRANSACTION...
13:40:05.828 Rest call return headers: Keep-Alive=[timeout=60, max=95], Connection=[Keep-Alive]
13:40:05.833 Do Rest call -> _java.net.SocketException: Unexpected end of file from server_; no trace in any log file on the server for this request
Я не могу понять, что вызывает разрыв соединения. Я не могу найти последний неудачный вызов покоя ни в одном журнале сервера. Любая идея, что это такое или что я могу сделать, чтобы еще больше изолировать проблему?
Здесь вы можете увидеть транзакции, зарегистрированные на сервере с помощью tshark