【发布时间】: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