2010-04-17 6 views
1

Мы запустили новое приложение CF8, и оно работает медленно. Тест, в котором мы проходим ColdFusion (запросы в утилите базы данных), показывает нормальную скорость (80 мс). CF8 возвращает тот же запрос примерно через 60 - 80 секунд!ColdFusion 8 Slow Performance

Я искал онлайн и видел много сообщений о проблемах с CF8 и проблемами производительности, но не получил никакого общего смысла решения; просто много людей пробовали вещи и говорили, что у них не было проблемы с CF7. Мы также наблюдаем нестабильность на сервере и некоторые ошибки, связанные с сборкой мусора и кучей памяти.

У нас есть еще несколько приложений, работающих на CF8, и они работают адекватно ... наш программист не является экспертом или гуру, он просто отключается. Мы разделили это на один запрос, который навсегда вернется, поэтому это не сложный тест.

Существуют ли какие-либо известные проблемы с CF8 или очевидные настройки, которые мы должны рассмотреть? Если нам нужно начать все заново и изучить новую среду, я никогда не буду делать крайний срок.

JoeBob

+0

Таким образом, запрос работать с клиентом базы данных занимает 80 мс, но точно такой же запрос через CFQUERY ColdFusion занимает 60-80 секунд? Другие запросы в том же приложении занимают обычное количество времени? Coldfusion 8 имеет неплохой монитор сервера - вы исследовали это? Если вы включите все 3 параметра мониторинга, вы можете точно увидеть, где находится код, и вы также можете увидеть запрос БД. Сообщает ли сервер базы данных, что этот запрос занимает 60-80 секунд? Или, к серверу БД, запрос выполняется быстро? –

+0

Мой опыт и большинство блогов, которые я отслеживаю на CF-шоу 8, - это большое улучшение по сравнению с 7. Были ли вы применены все исправления и исправления? – kevink

+2

Почему бы не поделиться запросом? – Yisroel

ответ

2

Хорошо, вот что я сделаю:

  1. Я положил в LIMIT запроса 1 или TOP 1 (которые DB у вас есть), чтобы увидеть, что происходит потом.

  2. Попробуйте запустить запрос, который взял вас на 60-е, как только на странице. Не выводите ничего, просто запустите запрос.

  3. Если вы обнаружите некоторые проблемы с памятью и GC, отключите отладку, снимите все опции отладки в администраторе.

  4. Убедитесь, что инструмент монитора, поставляемый вместе с CF8, отключен.

Если это не поможет, мы можем пойти дальше.

EDIT: Первое, что может быть проблемой, - это количество возвращенных записей. Во-вторых, вы выполняете большую обработку данных, все события, происходящие во время выполнения страницы, регистрируются, если включена отладка. Я видел, что сервер заполняет почти 10 ГБ ОЗУ с отладкой, и тот же процесс занимает 40 МБ без него. Третьим вариантом было бы то, что на сервере или настройке действительно что-то не так.

+0

Мы опробовали Top 100, запрос все равно занял то же время или дольше, чтобы вернуться. Теперь это единственное на странице, мы не выводим, просто запускаем запрос, как вы предлагаете. Запрос занимает больше времени, чем больше записей, которые он возвращает. Если он возвращает только несколько записей, для возврата требуется несколько разумных нескольких секунд, но слишком медленный. Но если он возвращает тысячи записей, то это займет минуту или около того. Но опять же, мы ничего не выводим в тесте, мы просто делаем выбор. Я буду проверять параметры отладки – JoeBob

0

Основываясь на вашем последнем объяснении, проблема связана с вашим запросом, а не с CF. В какой базе данных вы работаете? У вас есть индексы на таблицах?

+1

В дополнение к какой базе данных, какой протокол и драйвер вы используете для подключения к ней? ODBC или JDBC? Я недавно столкнулся с проблемой SQL Server 2005, используя драйвер SSL JDBC, который вечно запускает запрос, который использует CFQUERYPARAM cfsqltype = "CF_SQL_VARCHAR". Использование хранимой процедуры вместо запроса решает проблему с задержкой. –

0

Вам нужны все столбцы, которые вы возвращаете? Вы используете SELECT *? Вы должны вернуть только нужные столбцы. Даже если вы не выводите данные, большое количество данных все еще передается из базы данных на веб-сервер.

0

Спасибо всем за помощь ... Я думаю, что, как было предложено, проблема была вовсе не проблемой CF ... мы все еще проводим тесты на время идентичного запроса на PHP с сопоставимыми условиями, но все мой опыт работы с не-веб-приложениями, и я просто не понимал, что «выбрать» действительно означает «выбирать и передавать все данные на веб-сервер», даже без вывода на экран. Передача на 20000 плюс записи (включая много нежелательных полей) занимала огромное количество времени. Мне сказали ранее, что сервер базы данных не был активен во время этой задержки, и оказалось, что это была неправильная информация.Мне пришлось обойти программиста и получить администратора и посмотреть на мониторы производительности, чтобы увидеть, что это было явно неправильно; передача данных требовала времени и полосы пропускания.

JoeBob