Я настроил Apache tomcat7 как бэкэнд и apache2.2 как внешний интерфейс на одном сервере CentOS 6, и вот часть моих конфигураций:
В Server.xml
У меня есть:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" connectionTimeout="600000" maxKeepAliveRequests="100" URIEncoding="UTF-8"/>
& в httpd.conf
:
ProxyRequests Off
Timeout 600
ProxyTimeout 600
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
Проблема в том, что выполнение некоторых сервлетов на моем сервере tomcat занимает около 3 минут, но через одну минуту открытый сокет на сервере (независимо от того, какой клиент я использую, будь то браузер или любое другое клиентское приложение) неожиданно закрывается сервером (в любом случае, выполнение сервлета продолжается до конца, даже после закрытия сокета).
В sysctl.conf
Я изменил значение для net.ipv4.tcp_fin_timeout
к 600
и я уверен, что это не проблема тайм-аута ОС, потому что, когда я обращаюсь к другому трудоемкому сценарию без mod_proxy (например, к сценарию PHP с 3-минутным временем выполнения на том же сервере apache), он отлично работает со всеми клиентами.
Любое предложение будет оценено
Попробуйте настроить тайм-аут подключения в директиве Proxy, как показано ниже
ProxyPass / ajp://localhost:8009/ connectiontimeout=600 timeout=600
ProxyPassReverse / ajp://localhost:8009/
Я использовал эти настройки для своего приложения, и оно работало нормально