【问题标题】:How to determine as to how many sessions are too many for a web application如何确定对于 Web 应用程序来说有多少会话过多
【发布时间】:2016-07-20 22:27:55
【问题描述】:

我有运行 Oracle Commerce 的 Jboss 应用服务器。我有 5 个页面服务实例 [VM 服务器] 和大约 300 个用户在任何给定时间浏览站点。我正在尝试为会话超时提出一个数字,以便客户有足够的时间浏览和结帐,但也不希望有太多打开的会话会占用内存。所以我的问题是有一个经验法则来确定会话超时吗?

Jboss 7,Java 7,每个 jvm 有 8gb 内存。当前会话超时设置为 10 分钟。想把它增加到30分钟。

【问题讨论】:

    标签: java jboss timeout session-timeout


    【解决方案1】:

    以下是我能想到的: - 会话大小。 - 线程池 - 作为服务器的并发线程数。这可由应用程序服务器配置。 JBoss 有几个可用的线程池,例如,您有几个用于 servlet 容器的池,分别用于 EJB 容器等等。你可以在这里阅读一些细节。 https://developer.jboss.org/wiki/ThreadPoolConfiguration#jive_content_id_Deploying_Threading_Components - 您的用例。您期望有多少并发用户。

    如果你用完了线程,所有进一步的请求都将被排队(我认为这有点取决于 Executor),但在一般情况下是这样的。这给内存带来了压力。所以你不应该在最大池大小之上操作。

    会话的大小和您期望的并发用户数将帮助您弄清楚您的内存将如何随着时间的推移而增长。 您应该考虑挑选时间以及过去几年网站使用量的增长情况。

    这里应该注意的是,由于您有在线应用程序,由于垃圾收集器,您应该更喜欢小堆大小而不是大堆大小。使用新的 G1 垃圾收集器可能是个好主意。

    根据上次评论编辑: 在探查器的帮助下,在没有非常高的精度的情况下测量堆的一种简单方法是: 1. 启动服务器,单用户试运行,初始化所有类。 2.强制垃圾收集,做一个基准测试 3. 运行大量并行用户样本并观察您的峰值内存以及达到您的选择内存时 GC 能够释放多少(再次强制 GC)。

    现在这是一种幼稚的方法。

    更复杂的方法是借助一些对象分配监控工具(再次使用分析器)来计算会话的大小。

    【讨论】:

    • 在 Java 中有没有办法找出会话大小?
    • 是的,这并不难。只需为自己配备一个好的分析器,例如 Yourkit,您就可以测量您想要的任何对象的大小。如果你需要一个免费的,visualVM 可能会解决问题。同样,主要问题是您想要做到多精确。
    【解决方案2】:

    此外,您应该考虑通过启用 GC 日志记录来检查 JVM 的内存。当它筋疲力尽时,它会给出一个好主意。 另一个指标是 CPU 利用率。这取决于用户活动和应用程序需要什么,如果您有足够的内存,只要您有足够的 CPU 能力来处理请求,就可以增加并行会话的数量。

    【讨论】:

      【解决方案3】:

      (我知道这是一篇旧帖子,但这可能会对某人有所帮助)

      德赛,

      如果您想为用户提供充足的时间来浏览和结帐而不用担心超时,您可以考虑使用 JavaScript 来保持会话处于活动状态。只要窗口打开并且 javascript 正在运行,会话就会保持活动状态。一旦窗口关闭或导航离开,您的会话超时将继续倒计时。如果用户回来并且会话超时尚未过期,那么 Javascript 将 ping 服务器以重新开始倒计时。这也有助于处理过多的活动会话使服务器陷入困境。我使用了类似的设置,但我的会话超时设置得很低,为 5 分钟,并且 keepAlive 函数的间隔为 2 分钟。

      function keepAlive() {
          var httpRequest = new XMLHttpRequest();
          httpRequest.open('GET', "/restricted_file_url");
          httpRequest.send(null);
      }
      
      setInterval(keepAlive, 840000);  //My session expires at 15 minutes

      查看Ivar的解决方案here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-07
        • 1970-01-01
        • 2020-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-17
        • 2011-11-28
        相关资源
        最近更新 更多