【问题标题】:ColdFusion sessions not being timed outColdFusion 会话未超时
【发布时间】:2012-01-30 01:36:45
【问题描述】:

我们在 CF 8 上的服务器上运行了 2 个核心应用程序,并且两者都在应用程序 CFC 中设置了完全相同的会话超时(目前为 2 小时)。但是,我们看到其中一个应用程序的会话正在失控(目前在一台服务器上超过 120,000 个),我们将其称为 AppA 而 AppB 似乎很好(而 AppB 是我们期望更多流量的应用程序) )。

所以我做了一些进一步的挖掘,发现 AppA 的大部分会话都空闲了很多小时,到目前为止我看到的最高值超过 11 小时。

我们实际上并没有对会话做那么多,所以我有点困惑为什么它们没有按预期超时。我还在应用程序 CFC 中转储了 this 范围,它显示了 sessionTimeout 的预期值。

我注意到的唯一一件事是,在一个实例中,我们从 Session 变量的 Request 范围内分配了一个变量。如果它是不同的范围,我可能会认为这会导致 GC(或其他)无法清除的某种引用。

【问题讨论】:

  • 会话超时是不活动超时,您确定 11 小时内没有任何东西接触到 cfc?

标签: session coldfusion timeout


【解决方案1】:

就螺旋而言,我想说这与一些未通过 CFID/CFTOKEN 以维持会话的请求有关。这可能是 Web 服务调用、CFHTTP 请求、搜索引擎机器人等。听起来您的某个应用程序正在经历这种情况。如果是这种情况,那么对于 CFHTTP,通过 CFID/CFTOKEN 来维护会话。 Web 服务有点棘手,您需要创建一个来回传递的“密钥”,整个单独的主题!可以通过一些条件来设置会话超时值来处理机器人。

在这 11 个小时里,我会说那是因为它被什么东西维持着。一些持续的轮询?重复 AJAX 请求?它必须是继续传递 ID/TOKEN 的东西。

【讨论】:

  • 在这种情况下,FusionReactor 将是一个很好的工具,可以查看您不知道的正在运行的脚本。
  • 是的,我做了更多的挖掘工作,发现那里的大多数会话在它们启动的整个过程中都是空闲的,因此这指向我的机器人。我们在这个应用程序上对爬虫进行了一些基本检查,但在另一个应用程序上,我们对垃圾邮件机器人进行了一些更积极的检查,所以我想我也会将这些检查转移到这个应用程序中。
【解决方案2】:

当我在应用程序或会话范围内持久化 CFC 时,我曾经在 CF6.1 中获得服务器锁定。现在我在请求范围内实例化它们并且锁定停止发生(没有明显的性能下降)。也许你有类似的问题。

【讨论】:

    【解决方案3】:

    实际上会话是从另一个应用程序启动的,该应用程序没有覆盖基本 Application.cfc 中的默认值(包括应用程序名称)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      相关资源
      最近更新 更多