Производительность ColdFusion Влияние запроса запросов
Это очень длинный пример, но время от времени здесь появляется инженер, который знает, что происходит под капотом.
Во-первых, я знаю, что вы почти всегда можете переписать некоторый код, чтобы избежать QoQ для гораздо лучшей производительности. Однако то, что я пытаюсь отладить, является потенциальной причиной того, что код, использующий QoQ, будет работать так плохо при определенных условиях, чтобы разработать рекомендации для будущих проектов.
1) Есть ли что-то в реализации Java ColdFusion QoQ, которое может привести к тому, что доступ к системе QoQ будет однопоточным? ( Я видел пост на Рейло об этом)
2) Согласно FusionReactor, у трассировки стека запрос всегда находится в фазе оценки (вероятность 90%) или фазы выполнения (вероятность 10%) QoQ - никогда никакой другой части логики, окружающей его. Это происходит с помощью цикла с параметром запроса.
У нас есть несколько различных функций, которые используют QoQ в цикле на протяжении десятков тысяч итераций для генерации отчета, независимо от того, является ли это наилучшей практикой или нет. Единственные процессы, которые замедляются, это те, которые используют QoQ. Они становятся в 10 раз длиннее, если они не запускаются почти сразу после перезагрузки сервера. FusionReactor всегда имеет состояние потока при оценке QoQ или обработке QoQ. Примечательно: куча и процессор просто отлично держатся на уровне менее 20% в течение всей продолжительности. Все области памяти выглядят хорошо - кеш кода, пермь и т. Д.
Я знаю, что запуск QoQ в цикле не способ сделать это и должен быть изменен, но я просто ищу ответы. Код заблокирован? Это доступная тема? Есть ли что-то в оценке заявления? Почему все будет хорошо сразу после перезагрузки, но быстро ухудшится в течение нескольких часов? Это то, что меня беспокоит - я бы с этим справился навсегда, это странный паттерн, из-за которого я переполняю стек.
ColdFusion 10, если это поможет.