发现集群中正在使用哪个 Coldfusion 服务器

发现集群中正在使用哪个 Coldfusion 服务器

我们的 Coldfusion 应用程序有一个由 2 台服务器组成的负载平衡集群。我遇到了一些奇怪的行为,想知道用户在运行 Web 应用程序时当前在两台服务器中的哪一台上。有没有办法找出哪台服务器用于特定请求?

cgi.server 变量仅提供类似 cfprod.domain.com 的信息,而我需要的是 cfprod1.domain.com 或 cfprod2.domain.com

答案1

您可以使用以下命令获取 CF 实例名称:#GetMetricData("PERF_MONITOR").InstanceName#

问题在于您可能没有启用指标服务,因为企业版默认禁用该服务。如果有其他方法也可以获取实例名称,我也不会感到惊讶。

答案2

如果您有标准标头包含,也许可以将服务器名称输出为 HTML 注释。这意味着每个服务器上的文件略有不同,但可能有助于您跟踪问题以进行故障排除。如果标头文件必须相同,请添加代码以包含或从其他可能不同的文件读取,如果两个服务器的 webroot 定期同步,则可能在您的 webroot 之外。

答案3

如果您不想在服务器上添加额外的内容来管理,您可以通过编程获取正在运行 ColdFusion 的服务器的主机名。这对于集群的每个节点来说都是唯一的。

<cfset hostName=CreateObject("java", "java.net.InetAddress").localhost.getHostName()/>

StackOverflow 上对此进行了讨论:https://stackoverflow.com/questions/830782/in-coldfusion-is-there-a-way-to-determine-what-server-the-code-is-running-on

答案4

我有一个简单的应用程序,用于测试 ColdFusion 群集中的会话稳定性、故障转移和复制。您可以从我的博客下载 session_test.zip: http://www.talkingtree.com/blog/downloads.cfm

此测试将报告您的请求在哪个实例上,以及服务器实例或会话令牌是否已更改(例如在故障转移期间)。如果会话在故障转移后恢复到原始服务器,那么它也会指示这一点。

相关内容