Назад | Перейти на главную страницу

Рекомендации по настройке Apache для Windows Server 2008

Мы реализовали Apache 2.4 64bit в Windows Server 2008 R2 в качестве обратного прокси, чтобы воспользоваться сертификатом с подстановочными знаками для нашего домена. Мы были разочарованы производительностью даже при небольшой нагрузке, поэтому я, вероятно, что-то неправильно сконфигурировал. Веб-сайты, обслуживаемые прокси-сервером (Glassfish 3.0.1), становятся все медленнее и перестают отвечать на запросы. Перезапуск Apache временно решает проблему, но быстро перестает отвечать. Обходя прокси-сервер путем прямого перехода к IP-адресу сервера Glassfish, мы видим, что проблема не в GF. Единственное, что мы делаем, - это обратный прокси-сервер SSL-интерфейса на Apache и передача трафика по внутренней сети с http на сервер Glassfish.

Когда веб-сайты не отвечают, просмотр процессов Windows Server показывает ОЧЕНЬ незначительную активность. ЦП может работать на 10% (один ЦП). Имеется менее 30 TCP-соединений. Использование памяти меньше 1 ГБ (это машина с 4 ГБ). Сетевой трафик едва превышает порог в 100 кбит / с. Все указывает на то, что сервер почти не вспотел, но сайт не отвечает.

Я установил следующие свойства:

SSLSessionCache  "shmcb:C:/Apache_direct/logs/ssl_scache(1024000)"
SSLSessionCacheTimeout  300

ThreadsPerChild 3000
MaxRequestsPerChild 0 
KeepAlive On 
KeepAliveTimeout 15 

ProxyRequests Off
SSLStrictSNIVHostCheck off
ProxyBadHeader Ignore

У меня есть настройки виртуального хоста для каждого порта http и https для каждого сервера. Настройки VHost похожи на:

<VirtualHost *:443>
ServerName test.domain.org
#
ProxyPreserveHost On
SSLEngine on
ProxyPass / http://192.168.80.196:8080/
ProxyPassReverse / https://192.168.80.196:8080/

</VirtualHost>

Я пропустил здесь важную настройку или неправильно настроил настройку? Основываясь на том, что я прочитал, Apache должен легко обрабатывать трафик, который у нас есть, а именно:

800 visits an hour.  13k visits daily.
100 uploads an hour of roughly 60mb MP3 files.
400 downloads an hour of those same MP3 files.
800 downloads of small (100k) pdf files.

Glassfish обслуживает все загрузки / выгрузки файлов, и мы позволяем этим сеансам сохраняться до часа. Поскольку большинство файлов уникальны, мы не уверены, какие настройки кеша нам следует использовать (если они есть). Возможно, мне стоит опустить настройки кеширования SSL?

В Интернете очень много обращений по настройке производительности Apache, но мало кто посвящен конкретно обратному прокси, SSL и дает рекомендации в зависимости от типа / объема трафика. Некоторые предложения были бы очень полезны.

Я собираюсь ответить на свой запрос, чтобы, если кто-то столкнется с этим, он хотя бы увидел какие-то ответы….

Я так и не получил подтверждения, что эта конкретная конфигурация верна, неверна или может быть улучшена. Я знаю, что мы решили пойти еще раз со следующими модификациями (с моей стороны чистые догадки):

Threadlimit 3000
ThreadsPerChild 3000
MaxRequestsPerChild 0 
KeepAlive On 
KeepAliveTimeout 15 

AcceptFilter https none
AcceptFilter http none
EnableSendfile Off
EnableMMAP off

ProxyRequests Off
SSLStrictSNIVHostCheck off
ProxyBadHeader Ignore
HostnameLookups off
ExtendedStatus off

У нас не было проблем с производительностью с этой конфигурацией, поэтому мы работаем с ней в производственной среде. На главный вопрос, как добиться хорошей производительности в среде обратного прокси, был дан ответ методом проб и ошибок.