2009-08-24 20 views
1

我们有一个Web应用程序,在两台机器中使用java服务器(tomcat),ColdFusion和Apache进行负载平衡。cf.registry不同大小的文件

前段时间我们注意到cfregistry文件在两台服务器上都有不同的大小:一个是89Mb,另一个是44Mb。

这是正常的吗?他们的身材如此不同,这很正常吗?

在此先感谢。

回答

1

ColdFusion客户端变量存储默认为Windows上的注册表,而对于Unix/Linux平台,它默认为cf.registry文件。原因是开箱即用的易用性,但在生产过程中,这是一个无声的杀手,会像糖蜜一样降低ColdFusion的性能,而在Unix上,当cf.registry文件变大时,会完全崩溃服务器。

实际上,ColdFusion为每个使用客户端变量的请求(即使没有在代码中使用但启用了cfapplication的clientmanagement属性)解析,读取和写入文件。这有点像处理像数据库这样的平面文件。它非常密集,在我为ColdFusion技术支持Allaire/Macromedia/Adob​​e多年的过程中,我解决了许多由于此问题导致服务器崩溃/中止的案例。

简而言之,停止ColdFusion,重命名退出的cf.registry文件,并从任何其他ColdFusion服务器(甚至开发人员/试用版都可以)中复制干净/新的cf.registry文件。注意:如果您在不停止ColdFusion的情况下复制新文件,则服务器已经在内存中拥有原始文件的副本,并且在关机时将其写入新的cf.registry文件,并且您将再次遇到原始问题。

即使您将客户端存储机制更改为使用数据库或其他方式,也应该清理现有的cf.registry文件,因为在经历过期的客户端变量过期时,ColdFusion将继续定期解析它。

有一个Adobe技术,用于清理客户端变量的注册表。它作为一个在浏览器中启动的链条运行,它删除100个客户端变量,刷新本身,并删除另外100个。这可能需要几个小时。当Registry/cf.registry中有大型客户端变量数据时,请勿使用它。只需清理现有的cf.registry文件。

最后,在Windows上,由于这个问题,ColdFusion很少会崩溃。它会一直跟着,慢一点。在Unix/Linux上,它只会瘫痪,然后崩溃进程。

+0

谢谢史蒂文。你的回答很完美! – foxtrot 2009-08-26 19:19:44

0

我相信该文件是用于* nix下的客户端存储。

您应该配置您的应用程序以使用数据库作为客户端范围存储。

有不同的大小是否正常?我想是这样。