![Заголовок Keep-Alive не отправляется из http-коннектора Tomcat 5.5?](https://rvso.com/image/515665/%D0%97%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BE%D0%BA%20Keep-Alive%20%D0%BD%D0%B5%20%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D1%82%D1%81%D1%8F%20%D0%B8%D0%B7%20http-%D0%BA%D0%BE%D0%BD%D0%BD%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%B0%20Tomcat%205.5%3F.png)
В настоящее время мы используем аппаратный балансировщик нагрузки, который затем подключается к Apache, а тот — к Tomcat 5.5 через коннектор AJP.
Мы решили отказаться от Apache по разным причинам. В нашей текущей системе он не дает никаких преимуществ.
Однако, когда я смотрю на заголовки, отправляемые при этом, заголовок «Keep-Alive: timeout=15 max=96» не отправляется, если вы используете http-коннектор tomcat.
Интересно, что я не могу найти документацию по "keepalivetimeout" для tomcat5.5, но могу найти для tomcat6. Но также я не могу найти доказательств того, что tomcat5.5 не поддерживает эту настройку.
вот мой соединитель:
<Connector port="8090" maxHttpHeaderSize="8192"
maxThreads="400" minSpareThreads="150" maxSpareThreads="300"
enableLookups="false"
connectionTimeout="2" maxKeepAliveRequests="400" disableUploadTimeout="true" />
Итак; Есть ли способ указать тайм-аут keepalive, если мы используем http-коннектор с tomcat 5.5, и принудительно отправить эту запись заголовка?
Для ясности — точная запись заголовка, которую я вижу от сервера, выглядит так с помощью Apache:
Keep-Alive: timeout=2, max=100
Но ничего от кота/койота.
Я посмотрел на это еще раз и не думаю, что запись заголовка Keep-Alive действительно имеет значение. Проблема, похоже, в том, что keep-alive просто не поддерживаются в http-коннекторе tomcat 5.5? Они, похоже, работают в tomcat6 (+java 6).
Спасибо, Дэн.
решение1
Вы двигались в правильном направлении. В tomcat 5.5 connectionTimeout такой же, как keepalivetimeout в tomcat 6.0. Но вам следует изменить значение с 2 на 2000, так как значение tomcat указывается в миллисекундах, а значение apache — в секундах.
Вы правы, так как вы не видите значение тайм-аута в заголовках http, отправляемых вашим tomcat. Но тайм-аут будет выполнен на стороне сервера. Я предполагаю, что он не отправляется, так как коннектор tomcat — это HTTP/1.1, а — Kee-Alive: timeout=X, max=Y
HTTP/1.0. Посколькудокументация tomcatговорит, что вам следует синхронизировать значения тайм-аута на обеих сторонах, в вашем случае — балансировщике нагрузки и tomcat.