我们有一个Web应用程序,在两台机器中负载均衡,前面有一个java服务器(tomcat),ColdFusion和Apache。
前段时间我们注意到两个服务器中的cfregistry文件大小不同:一个是89Mb,另一个是44Mb。
这个尺寸是正常的吗?他们的体型如此不同是正常的吗?
提前致谢。
答案 0 :(得分:1)
ColdFusion客户端变量存储默认为Windows上的注册表,对于Unix / Linux平台,它默认为cf.registry文件。原因在于开箱即用的易用性,但在生产中,这是一个无声的杀手,它会像糖蜜一样减慢ColdFusion的速度,并且当cf.registry文件变得很大时,Unix会完全崩溃服务器。
实际上,ColdFusion正在为使用客户端变量的每个请求解析,读取和写入文件(即使在代码中没有使用任何请求,但启用了cfapplication的clientmanagement属性)。这有点像处理像数据库这样的平面文件。它非常密集,在我多年来为Allaire / Macromedia / Adobe提供的ColdFusion技术支持下,我解决了许多因此问题导致服务器崩溃/暂停的情况。
简而言之,停止ColdFusion,重命名现有的cf.registry文件,并在其位置复制来自任何其他ColdFusion服务器的干净/新的cf.registry文件(甚至开发人员/试用版也没问题)。注意:如果您在不停止ColdFusion的情况下复制新文件,则服务器已在内存中拥有原始文件的副本,并在关闭时将其写入新的cf.registry文件,您将再次遇到原始问题。
即使您将客户端存储机制更改为使用数据库或其他方式,您仍应清理现有的cf.registry文件,因为ColdFusion将在过期的过期客户端变量过期时继续定期解析它。
有一个Adobe技术说明来清理客户端变量的注册表。它作为一个链在一个浏览器中启动,它删除100个客户端变量,刷新自己,并删除另外100个。这可能需要几个小时。当Registry / cf.registry中有大型客户端变量数据时,请不要使用它。只需清理现有的cf.registry文件。
最后,在Windows上,由于这个问题,ColdFusion很少会崩溃。它会一直跛行,越来越慢。在Unix / Linux上它只会跛行到目前为止崩溃了。
答案 1 :(得分:0)
我认为该文件适用于* nix下的客户端存储。
您应该将您的应用配置为使用DB作为客户端范围存储。
不同大小是否正常?我想是的。