我们有一个在两台机器上进行负载平衡的 Web 应用程序,前面有一个 Java 服务器(tomcat)、ColdFusion 和 Apache。
前段时间,我们注意到两个服务器中的 cfregistry 文件大小不同:一个服务器中为 89Mb,另一个服务器中为 44Mb。
这个尺寸正常吗?尺寸相差这么大正常吗?
提前致谢。
答案1
ColdFusion 在哪里配置来存储客户端变量?如果配置为使用“注册表”(我个人建议将其设置为使用 cookie),那么如果流量较大,或者回访者最终在一台服务器上比在另一台服务器上更频繁地返回,并且他们的客户端变量保留的时间更长,那么一个变量就完全有可能比另一个变量大,那么随着时间的推移,一个变量就可能变得更大。
答案2
默认情况下,ColdFusion 管理员配置为将客户端变量存储在注册表中。对于非 Windows 系统,ColdFusion 通过使用文件 {CF_ROOT}/registry/cf.registry 模拟注册表。此文件的格式与 Windows 注册表的设置方式类似
当应用程序使用客户端变量时,如果默认存储设置为 Registry,ColdFusion 服务器会将客户端变量数据存储在此 cf.registry 文件中。实际上,平面文件 cf.registry 被视为数据库。该应用程序的每个页面请求都将导致 ColdFusion 解析 cf.registry 文件。
通常,如果不使用客户端变量,cf.registry 文件通常只有几 KB。
客户端变量最好存储在数据库中或作为 cookie。这两者都是 ColdFusion 管理器中客户端存储的替代选项。客户端变量本质上是临时的,并且会定期过期。我建议采取 2 项措施:1) 将默认客户端存储更改为 Cookie(如果应用程序经常大量使用客户端变量,则可以使用数据库),2) 用默认、全新安装的 CF 中的新“干净”cf.registry 文件替换大型 cf.registry 文件(在 Unix/Linux 服务器上安装开发人员版本并从中获取 cf.registry 文件)。由于 ColdFusion 将文件内容保存在内存中,因此最好在 ColdFusion 停止时进行 cf.registry 文件交换,以避免 ColdFusion 将内存中文件的内容写回到磁盘上的文件中。
如果您继续将客户端变量记录到“注册表”,这将会降低服务器性能。