如何限制 Apache(IHS)和 WebSphere 中的同时用户会话?

如何限制 Apache(IHS)和 WebSphere 中的同时用户会话?

在高流量时段,限制使用 Apache (IHS/2.0.42) 和 WebSphere (5.1) 的同时用户会话数的最佳方法是什么?

理想的解决方案应该限制用户,并向无法访问网站的用户显示一个 HTML 页面,解释当前的流量情况并要求他们返回。那些确实进入网站的用户应该被允许自由浏览,直到他们关闭浏览器或会话到期。

该架构为 3 层(独立的 Web、应用程序和数据库服务器),每层都有多个服务器。目前,我们的应用程序和数据库服务器承受着巨大的流量压力,而 Web 服务器则能很好地承受流量。

答案1

不幸的是,这对于 Apache 来说很难做到,因为它很可能是您的瓶颈。开箱即用的 Apache 可以同时处理最多 256 个连接。这包括您的代理 Websphere 数据,以及直接从 Apache 发送的静态文件。您将无法控制客户端可以使用的独立连接数。

您可以采取一些措施来增加 Apache 可以支持的连接数量,例如切换到 mod_worker_mpm 可能会有所帮助。

当您的服务器超载时,提供清晰的“服务器超载”页面的难度就会随之而来。也就是说,当一切顺利时,您不想浪费资源来计算活动会话等。而当情况变糟时,您最不想做的事情就是增加服务器的负载来进行昂贵的计算。

无法为已有会话的用户保留连接,因为 http 是面向请求的,而不是面向会话的。也就是说,如果他们由于您的 Web 服务器过载而无法建立连接,那么他们的会话将不会获得任何优先权。

说了这么多,我还是推荐以下几点:

  • mod_worker_mpm(除非你使用 php,但我认为你不会使用)
  • 准备好调整你的 apache 和 websphere 配置。我对 websphere 没什么经验,但你必须确保它能处理和 apache 一样多的连接,这样它才不会成为下一个瓶颈
  • 取代标准錯誤文檔s 与自定义的,特别是 502 和 503
  • 查看 Apache 错误日志中有关最大客户端耗尽的警告
  • 密切关注您的服务器内存,apache 倾向于产生许多进程,这会很快使您的服务器交换,就在您不需要它的时候。

如果以上方法都无济于事,我会考虑以下方法

  • 切换到单线程 Web 服务器,有几个可供选择,大多数还支持一些每个 IP 连接限制,这可能会有用
  • 如果 Apache 只是充当代理,可以考虑使用 HAProxy 之类的东西,它在处理大量代理连接方面表现更好
  • 准备调整你的应用程序,使其在负载下更高效

相关内容