我们有两个 Coldfusion 服务器,它们在完全相同的输入数据上运行完全相同的代码,它们具有巨大的性能差异。有问题的代码实例化了大量 CFC(Coldfusion Components,类似于 OOP 语言中的对象)。
我通过运行 Process Monitor 比较了两台服务器,然后在两台机器上调用有问题的代码。我学到了两件事。首先,Coldfusion 每次实例化一个对象时都会打开 CFC 文件。两台服务器都这样做,因此它不会成为性能差异的原因。其次,快速服务器直接打开 CFC 文件,而有性能问题的服务器似乎在路径中导航,直到到达所需的 CFC 文件。它对每个文件执行此操作,甚至是它之前加载的文件,并且由于代码实例化了如此多的 CFC,因此它变得非常慢。请参阅下面显示此行为的部分 Promon 跟踪。慢速服务器可能需要 60 多秒才能完成快速服务器在 2 秒内完成的操作。
谁能告诉我是什么导致了这种行为?它是 Coldfusion 设置吗?由于 Coldfusion 在 Java 之上运行,它是 Java 设置吗?它是操作系统选项吗?快速服务器运行的是 Windows XP,我认为慢速服务器是 Windows Server 2003。
额外问题:Coldfusion 似乎不会对任何 CFC 或 CFM 文件执行任何 READ FILE 操作。怎么会这样?
快速服务器打开 CFC 文件的示例:
11:25:14.5588975 jrun.exe QueryOpen C:\CF\wwwroot\APP\com\HtmlUtils.cfc
11:25:14.5592758 jrun.exe CreateFile C:\CF\wwwroot\APP\com\HtmlUtils.cfc
11:25:14.5595024 jrun.exe QueryBasicInformationFile C:\CF\wwwroot\APP\com\HtmlUtils.cfc
11:25:14.5595940 jrun.exe CloseFile C:\CF\wwwroot\APP\com\HtmlUtils.cfc
11:25:14.5599628 jrun.exe CreateFile C:\CF\wwwroot\APP\com\HtmlUtils.cfc
11:25:14.5601600 jrun.exe QueryBasicInformationFile C:\CF\wwwroot\APP\com\HtmlUtils.cfc
11:25:14.5602463 jrun.exe CloseFile C:\CF\wwwroot\APP\com\HtmlUtils.cfc
Run Code Online (Sandbox Code Playgroud)
慢速服务器打开 …