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

Как ограничить одновременные сеансы пользователей в Apache (IHS) и WebSphere?

Как лучше всего ограничить количество одновременных пользовательских сеансов с использованием Apache (IHS / 2.0.42) и WebSphere (5.1) в периоды высокого трафика?

Желаемое решение должно ограничить количество пользователей и предоставить тем, кто не получает доступ к сайту, HTML-страницу, объясняющую текущую ситуацию с трафиком, и попросить их вернуться. Тем пользователям, которые попадают на сайт, должно быть разрешено свободно перемещаться, пока они не закроют свой браузер или их сеанс не истечет.

Архитектура является трехуровневой (отдельные веб-серверы, серверы приложений и базы данных) с несколькими серверами на каждом уровне. В настоящее время наши серверы приложений и баз данных облагаются налогом на трафик, в то время как веб-сервер выдерживает трафик.

К сожалению, это будет сложно сделать с Apache, поскольку это, скорее всего, ваше узкое место. По умолчанию Apache может обрабатывать максимум 256 подключений одновременно. Сюда входят ваши проксированные данные Websphere, а также ваши статические файлы, отправляемые непосредственно из Apache. Вы были бы подавлены, сколько отдельных соединений может использовать клиент.

Есть несколько вещей, которые вы можете сделать, чтобы увеличить количество подключений, которые может поддерживать Apache, например, переключение на mod_worker_mpm может помочь.

Сложность обслуживания прозрачной страницы «сервер перегружен» возникнет как раз в тот момент, когда ваш сервер будет перегружен. То есть, когда все в порядке, вы не хотите тратить ресурсы на подсчет активных сеансов и т. Д. А когда дела идут плохо, последнее, что вам нужно сделать, - это увеличить нагрузку на свой сервер, выполняя дорогостоящие вычисления.

Невозможно зарезервировать соединения для людей, у которых уже есть сеанс, потому что http ориентирован на запросы, а не на сеансы. То есть, если они не могут установить соединение, потому что ваш веб-сервер перегружен, то их сеанс не получит никакого приоритета.

Сказав все это, я рекомендую несколько вещей:

  • mod_worker_mpm (если вы не используете php, а я так не думаю)
  • будьте готовы настроить свои конфигурации apache и websphere. У меня нет большого опыта работы с websphere, но вы должны убедиться, что он может обрабатывать столько соединений, сколько может apache, чтобы он не стал следующим узким местом
  • заменить стандарт ErrorDocuments с кастомными, а именно 502 и 503
  • следите за журналами ошибок Apache, чтобы получить предупреждения о максимальном исчерпании возможностей клиента
  • внимательно следите за памятью вашего сервера, apache имеет тенденцию порождать много многих процессов, которые могут быстро изменить ваш сервер, прямо в тот момент, когда он вам тоже не нужен.

Если ничего из этого не поможет, я бы рассмотрел следующие

  • переключиться на однопоточный веб-сервер, есть несколько вариантов на выбор, большинство из них также поддерживают ограничение для каждого IP-соединения, что может быть полезно
  • если apache просто действует как прокси, подумайте о чем-то вроде HAProxy, который намного лучше справляется с большим количеством прокси-соединений.
  • будьте готовы настроить ваше приложение, чтобы оно было более эффективным под нагрузкой