У нас есть два сервера Coldfusion, которые имеют огромную разницу в производительности, выполняя один и тот же код с одними и теми же входными данными. Код в вопросах создает экземпляры большого количества CFC (компонентов Coldfusion, которые похожи на объекты в языках ООП).
Я сравнил два сервера, запустив Process Monitor и вызвав проблемный код на обеих машинах. Я узнал две вещи. Во-первых, Coldfusion открывает файлы CFC каждый раз, когда создает экземпляр объекта. Оба сервера делают это, поэтому это не может быть причиной разницы в производительности. Во-вторых, быстрый сервер открывает файлы CFC напрямую, в то время как сервер с проблемой производительности, кажется, перемещается по пути, пока не достигнет желаемого файла CFC. Он делает это для каждого файла, даже для тех, которые он ранее загружал, и, поскольку код создает экземпляры такого количества CFC, он становится очень медленным. См. Ниже частичные трассировки Promon, демонстрирующие такое поведение. Медленному серверу может потребоваться более 60 секунд, чтобы сделать то, что быстрый делает за 2 секунды.
Может ли кто-нибудь сказать мне, что вызывает такое поведение? Это настройка Coldfusion? Поскольку Coldfusion работает поверх Java, это настройка Java? Это вариант ОС? Быстрый сервер работает под управлением Windows XP, а я думаю, что медленный сервер - это Windows Server 2003.
Дополнительный вопрос: Coldfusion, похоже, не выполняет никаких операций READ FILE ни с одним из файлов CFC или CFM. Как это может быть?
Пример быстрого открытия файлов 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
Эквивалентный образец медленного сервера, открывающего файлы CFC:
11:15:08.1249230 jrun.exe CreateFile D:\
11:15:08.1250100 jrun.exe QueryDirectory D:\org
11:15:08.1252852 jrun.exe CloseFile D:\
11:15:08.1259670 jrun.exe CreateFile D:\org
11:15:08.1260319 jrun.exe QueryDirectory D:\org\cli
11:15:08.1260769 jrun.exe CloseFile D:\org
11:15:08.1269451 jrun.exe CreateFile D:\org\cli
11:15:08.1270613 jrun.exe QueryDirectory D:\org\cli\cpn
11:15:08.1271140 jrun.exe CloseFile D:\org\cli
11:15:08.1279312 jrun.exe CreateFile D:\org\cli\cpn
11:15:08.1280086 jrun.exe QueryDirectory D:\org\cli\cpn\APP
11:15:08.1280789 jrun.exe CloseFile D:\org\cli\cpn
11:15:08.1291034 jrun.exe CreateFile D:\org\cli\cpn\APP
11:15:08.1291709 jrun.exe QueryDirectory D:\org\cli\cpn\APP\com
11:15:08.1292224 jrun.exe CloseFile D:\org\cli\cpn\APP
11:15:08.1300568 jrun.exe CreateFile D:\org\cli\cpn\APP\com
11:15:08.1301321 jrun.exe QueryDirectory D:\org\cli\cpn\APP\com\HtmlUtils.cfc
11:15:08.1301843 jrun.exe CloseFile D:\org\cli\cpn\APP\com
11:15:08.1312049 jrun.exe CreateFile D:\org\cli\cpn\APP\com\HtmlUtils.cfc
11:15:08.1314409 jrun.exe QueryBasicInformationFile D:\org\cli\cpn\APP\com\HtmlUtils.cfc
11:15:08.1314633 jrun.exe CloseFile D:\org\cli\cpn\APP\com\HtmlUtils.cfc
11:15:08.1315881 jrun.exe CreateFile D:\
11:15:08.1316379 jrun.exe QueryDirectory D:\org
11:15:08.1316926 jrun.exe CloseFile D:\
11:15:08.1330951 jrun.exe CreateFile D:\org
11:15:08.1338656 jrun.exe QueryDirectory D:\org\cli
11:15:08.1339118 jrun.exe CloseFile D:\org
11:15:08.1526468 jrun.exe CreateFile D:\org\cli
11:15:08.1527295 jrun.exe QueryDirectory D:\org\cli\cpn
11:15:08.1527989 jrun.exe CloseFile D:\org\cli
11:15:08.1531977 jrun.exe CreateFile D:\org\cli\cpn
11:15:08.1532589 jrun.exe QueryDirectory D:\org\cli\cpn\APP
11:15:08.1533575 jrun.exe CloseFile D:\org\cli\cpn
11:15:08.1538457 jrun.exe CreateFile D:\org\cli\cpn\APP
11:15:08.1539083 jrun.exe QueryDirectory D:\org\cli\cpn\APP\com
11:15:08.1539553 jrun.exe CloseFile D:\org\cli\cpn\APP
11:15:08.1544126 jrun.exe CreateFile D:\org\cli\cpn\APP\com
11:15:08.1544980 jrun.exe QueryDirectory D:\org\cli\cpn\APP\com\HtmlUtils.cfc
11:15:08.1545482 jrun.exe CloseFile D:\org\cli\cpn\APP\com
11:15:08.1551034 jrun.exe CreateFile D:\org\cli\cpn\APP\com\HtmlUtils.cfc
11:15:08.1552878 jrun.exe QueryBasicInformationFile D:\org\cli\cpn\APP\com\HtmlUtils.cfc
11:15:08.1553044 jrun.exe CloseFile D:\org\cli\cpn\APP\com\HtmlUtils.cfc
Спасибо
Мне кажется, что у вас нет "Кеша компонентов", отмеченного в CFAdmin (Настройки сервера> Кэширование) на медленном сервере.
Другая возможность состоит в том, что у вас есть разные сопоставления CF (Настройки сервера> Сопоставления) и / или пути пользовательских тегов (Расширения> Пути настраиваемых тегов), установленные между двумя серверами.
Хотя, скорее всего, первое.
Вы также можете установить «Cache Template In Request» (Server Settings> Caching), чтобы предотвратить поиск файла для того же CFC после первого для данного запроса, и если это производственный сервер, отметьте «Trusted cache» (Server Настройки> Кеширование), что предотвратит поиск файловой системы, если файл уже был загружен один раз.
ColdFusion также будет поддерживать только определенное количество скомпилированных файлов в памяти за раз, установленное параметром «Максимальное количество кэшированных шаблонов» (Настройки сервера> Кэширование), и вам следует попытаться установить это так, чтобы охватить общее количество файлов CFML (и Методы CFC, каждый из которых компилируется в собственный класс) в вашем приложении. Очевидно, это основано на наличии достаточного количества оперативной памяти для JVM, чтобы справиться с этим. Это может быть своего рода балансирующим действием.
Попробуйте проверить:
cfdump
используется.В соответствии с ответом Адама Кэмерона я бы предложил сравнить C: \ ColdFusion8 \ lib \ neo * .xml на обеих машинах и проработать различия, особенно neo-runtime.xml и neo-debug.xml - именно здесь config для ColdFusion. Публикуйте здесь любые интересные отличия.
Если у вас нет инструмента сравнения, используйте пробную версию Вне всякого сравнения поскольку он работает с целыми каталогами и хорошо поддерживает XML.