【问题标题】:Lucee Session Loss at erratic timesLucee 会话丢失在不稳定的时间
【发布时间】:2017-05-06 23:13:10
【问题描述】:

我正在运行 Lucee 5.1.3.18/Tomcat/centOS/mySql(3 个物理,6 个虚拟)并且我遇到了不稳定的会话丢失。我已经查看并验证了这样做的代码不错。情况是用户将商品添加到购物车(所有商品都加入了 session_id)。他们在结帐页面上填写付款信息、信用卡等。通常,如果您等待 3 到 5 分钟并提交审核,则会引发错误,看不到这些项目(session_id 已更改)。时间范围各不相同,但通常在 5 分钟左右。

当我将 Lucee 管理员设置为使用我的数据源并将会话信息存储在数据库中时,就会发生这种情况。

application.cfc:

<cfset THIS.Name = "sessionName" />
<cfset THIS.SessionManagement = true />
<cfset THIS.ClientManagement = true />
<cfset THIS.ApplicationTimeout = CreateTimeSpan(0,12,0,0) />
<cfset THIS.SessionTimeout = CreateTimeSpan(0,4,0,0) />
<cfset THIS.SetClientCookies = true />
<cfset THIS.SetDomainCookies = false />
<cfset THIS.ScriptProtect = true />
 <cfset THIS.sessionType = "jee">
<cfset THIS.sessionStorage = "myDatasource">
<cfset THIS.sessionCluster = true>

变化

<cfset THIS.sessionType = "jee">

到 cfml,也有同样的问题(尝试 EHcache 没有成功)。

如果我改用“内存”并消除数据库,我的问题仍然少得多。使用“内存”也会使堆膨胀并最终导致服务器锁定。

日志没有显示任何有用的信息,但我不时看到管道损坏错误和数据库连接丢失。我把这归功于服务器锁定。

我不是想问一个开放式问题,但您对您可能遇到的问题有什么建议吗?是否有我可能忽略的模糊 Lucee 特定设置?任何帮助表示感谢。

谢谢, 亨利

【问题讨论】:

  • 更新:好的,我发现服务器崩溃了。这显然是来自达拉斯的一些阴暗公司的 DDoS 攻击。我做了一些防火墙调整,我的服务器不再崩溃。我现在正在监视会话丢失是否消失。我的想法可能是处于压力下的服务器只是在释放随机内存。
  • 不幸的是会话丢失仍在发生。
  • 可能不会有帮助,但我想我会指出您的 THIS.sessionType 根据cfapplication 文档应该是“j2ee”,所以它可能仍然会使用默认值在 lucee 服务器/网络管理员中
  • 在您的会话 ID 更改后,您之前的会话 ID 是否仍然存在于数据库中?我不熟悉存储在数据库中的内容,但可能会检查会话到期日期是否也在其中(认为您的 this.SessionTimeout 值可能被覆盖/忽略)
  • 这很奇怪,它在文档中说 j2ee 但在 Lucee 管理员中说 jee...我已经放弃尝试使用 db 会话管理来解决这个问题。当我尝试走这条路时,情况要糟糕得多,老实说,这是我第一次尝试实现它。

标签: coldfusion cfml lucee


【解决方案1】:

您可以查看一下是否可以在代码中的某个地方找到以下任何一个调用,因为它们可能会提前结束您的会话。

sessionInvalidate 会终止会话(我不太确定它是立即执行还是在调用它的请求完成之后)并且 setMaxInactiveInterval 调用会覆盖 application.cfc 中使用的会话超时。

<cfscript>          
    getPageContext().getSession().setMaxInactiveInterval(javaCast("int", 60));
    sessionInvalidate();
</cfscript>

【讨论】:

  • 立即生效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多