使用memcached客户端的coldfusion在大约270次调用后返回错误

使用memcached客户端的coldfusion在大约270次调用后返回错误,coldfusion,memcached,Coldfusion,Memcached,我的问题似乎与此有关: 然而,我一直无法解决它 如果我将此代码放入application.cfm: <cfif not IsDefined("application.memcached")> <cfset application.memcachedFactory = createObject("component","memcachedFactory").init("192.168.2.91:11211")> <cfset application.m

我的问题似乎与此有关:

然而,我一直无法解决它

如果我将此代码放入application.cfm:

<cfif not IsDefined("application.memcached")>   
  <cfset application.memcachedFactory = createObject("component","memcachedFactory").init("192.168.2.91:11211")>
  <cfset application.memcached = application.memcachedFactory.getmemcached()>
</cfif>


该页面可以处理270个电话。然后它将开始失败,并出现一个错误“objectinstantiationexception”——代码正在正确地与memcached通信。我可以发送和接收数据。java似乎正在耗尽一些东西。。线程、套接字、某种句柄。我对java知之甚少,我被卡住了

这在我看来是不对的,唐。为什么这段代码在第一次调用后会再次运行?它应该运行1次,然后才有对对象的引用。application.cfm的其余部分是什么样子的?您是否添加了带有“名称”的cfapplication标记

如果未能设置应用程序“名称”(通过cfapplication标记或application.cfc中的“this.name”),则“application.x”变量将被视为常规变量。页面请求结束后,它将“离开”,并要求下一个请求重新实例化对象


在本例中,“isDefined()”的目的是确保它只运行一次—为您提供一个单实例(单引用),您可以反复使用它,而无需重新实例化它。听起来你好像不是“在”一个应用程序中。

我确实验证了它多次运行-isDefined没有做任何事情。我将进一步检查application.cfm。结果表明,cfapplication标记位于该代码之后。我把它放在代码之前,现在它的工作非常好。。。我有一种感觉:)非常感谢你的回答。一个“附加”问题。。。您知道将来对application.memcached.get和set的调用是否需要使用cflock进行保护吗?不确定调用的线程安全性如何…不,您不想锁定应用程序范围-这将有效地“单线程”所有对memcached的调用-有点违背目的:)