Я настраиваю наши производственные серверы для портала, у нас есть 4 сервера, 2 для Интернета и 2 для приложений, и есть брандмауэр до и после веб-серверов (так что да, между приложением и веб-серверами есть брандмауэр) проблема здесь началось с отбрасывания незанятых соединений между серверами приложений и веб-серверами с помощью брандмауэра, пробовалось множество решений, и теперь казалось, что проблема переместилась из застрявших разорванных соединений, которые были в приложении, потому что при падении с брандмауэра эта проблема возникла, когда у меня низкая нагрузка на портал, и для его решения мне нужно перезапустить все серверы приложений, теперь у меня проблема с днями высокой нагрузки, и срочным решением был простой быстрый перезапуск веб-серверов Apache, как решить эту проблему.
Я внес изменения с помощью генератора конфигурации балансировки нагрузки Jboss: http://lbconfig.appspot.com/?lb=mod_jk&mjv=1.2.28&nca=64&ncj=64&nai=2&nji=2&njips=6&f=true&c=false&lr=false&lrl=&mpm=Prefork
И отслеживая соединения на обоих серверах с помощью команды netstat и с помощью обзора Google Analytics в реальном времени, я получил следующую статистику с ~ 40 посетителями после 3 дней последнего перезапуска:
Веб-сторона (2 сервера, но подключений к ней "на каждый" не всего):
ESTABLISHED ~700 - 750
TIME_WAIT: 100-200 (big jumbs for one second 150 another 200 another 170 and then 120 and so)
Сторона приложения (здесь я подсчитал все подключения, большинство из них УСТАНОВЛЕНО и несколько CLOSE_WAIT 0-5 каждый раз, когда я проверяю):
S1 (4 instances running) : 900-950
S2 (5 instances running) : 1000-1100
Детали серверов:
Мои конфигурации: В основном, как дал мне генератор (вы можете увидеть ссылку):
httpd.conf:
KeepAlive On
ServerLimit 12800
StartServers 5
MinSpareServers 5
MaxSpareServers 20
MaxClients 12800
MaxRequestsPerChild 5000
ExtendedStatus Off
worker.properties:
worker.maintain=30
worker.template.type=ajp13
worker.template.session_cookie=JSESSIONID
worker.template.lbfactor=1
worker.template.ping_timeout=10000
worker.template.connection_pool_timeout=10
worker.template.socket_keepalive=True
worker.template.socket_timeout=600
worker.template.connect_timeout=10000
worker.template.prepost_timeout=10000
worker.template.connection_ping_interval=20
worker.template.ping_mode=A
worker.template.socket_connect_timeout=600000
Со стороны стеклянной рыбы таймауты 10 секунд со стороны конфигурации кластера, у меня есть:
Свойство службы HTTP:
Обработка запроса:
Keep Alive (включено):
Пул подключений:
Так:
относительно mod_jk / mod_ajp: мы использовали это немного более крупную настройку и то и дело наталкивались на ошибки и ошибки, соединения сбрасывались, но так и не нашли реального решения какой-либо из наших проблем (но мы обнаружили некоторые ошибки, которые все еще существуют)
Мой совет: сделайте альтернативную настройку и тесты производительности: mod_jk vs proxy_http, и если proxy_http находится в допустимых пределах, пропустите mod_jk. Я сделал это в двух разных настройках сейчас (и, кроме того, могу заменить apache на nginx -> BIG WIN) и не жалею об этом.
профи
минусы