Мы запускаем Tomcat 6 на слайсе Ubuntu 2 ГБ на slicehost.com
Fwiw JSP-приложения - Open Clinica 3.1. Я реализовал SSL практически по книге, как вы можете видеть:
<Connector port="8443"
scheme="https" SSLEnabled="true"
keystorePass="XXXXX" keystoreFile="XXXXX"
maxKeepAliveRequests="0"
sessionCacheSize="0" sessionTimeout="0" compression="on" maxThreads="500"
clientAuth="false" sslProtocol="TLS" />
Проблема в том, что Java-приложение Open Clinica выполняет большое количество HTTP-запросов для создания страницы - с помощью инструментов разработчика Chrome я могу увидеть от 70 до 80 запросов для типичной страницы.
Когда вы добавляете дрожание руки SSL к каждому запросу, дополнительная сетевая задержка просто убивает время ответа приложения. FWIW - клиентские пользователи находятся в Израиле, Европе и США, поэтому вариант запуска локального сервера рядом с пользователями на самом деле невозможен. Я знаю, что, поскольку slicehose находится в США - задержка в сети в Израиле низкая, но я чувствую, что, поскольку производительность HTTP сервера была приемлемой или хорошей, мы должны добиться большего.
В попытке свести к минимуму рукопожатия ssl - я определил неограниченные sessionCacheSize и SessionTimeout, как видно из приведенного выше определения соединителя.
Однако, когда я запускаю ssldump на стороне клиента, я все еще вижу много подтверждений связи, которые, кажется, предполагают, что Tomcat фактически игнорирует эти параметры.
Сервер не перегружен - при 5 одновременных пользователях имеется около 100 МБ свободной памяти и практически нет подкачки.
Подтверждение связи SSL для каждого ресурса является верным признаком того, что HTTP сохранить жизнь функциональность не работает.
При использовании keep-alive для TCP-соединения выполняется одно подтверждение SSL, после чего через одно соединение можно запросить несколько ресурсов. Современные браузеры любят открывать более одного TCP-соединения, чтобы избежать узких мест на медленно загружаемых ресурсах, поэтому вы все равно будете видеть несколько рукопожатий, но определенно меньше, чем при отключенном keep-alive.
maxKeepAliveRequests="0"
отключает keep-alive, я считаю (на самом деле я не могу найти документацию о том, что делает 0; 1 отключает keep-alive, а -1 не устанавливает ограничений - я предполагаю, что 0 также является эффективным отключением).
Если вы намеревались отключить сохранение активности, я бы рекомендовал пересмотреть; если вы намеревались установить неограниченное значение, измените значение этого параметра на -1.
Keep-alive, очевидно, является самым большим преимуществом, которое вы получите, но если вам все же нужно уменьшить задержку, вы должны убедиться, что вы используете собственный коннектор APR.
http://tomcat.apache.org/tomcat-6.0-doc/config/http.html#Connector Comparison
Я бы предложил использовать обратный прокси-сервер Apache с разъемом AJP на передней панели. Поместите SSL в Apache и подключитесь к Tomcat в виде открытого текста по частной ссылке (например, localhost).
Используйте Apache для того, в чем он хорош (веб-сервер с множеством необычных опций), и Tomcat для того, в чем он хорош (приложения Java).