2017-01-31 3 views
2
  • Coldfusion 2016
  • Microsoft Сервер 2012
  • Oracle 12
  • подключение ODBC

Я включил профилирование и мониторинг, и теперь я могу см., что есть запросы, которые застревают и не могут быть завершены монитором CF; Некоторые из них более 200 тыс. Секунд."зомби просит" CFQUERY теги застревают и убиваемым

Я знаю, что могу увеличить количество одновременных запросов, но я хочу решить основную проблему. Когда я читаю стеки следов этих «запросов зомби», они застряли, а некоторые из них, но некоторые из них не являются. Я выполнил запрос в своем клиенте oracle, и они мгновенно разрешены.

Есть ли способ прекратить эти запросы или предотвратить это вообще?

РЕДАКТИРОВАТЬ: Монитор сервера не обрабатывает эти запросы как замедленные или зависающие, предупреждения не запускаются ни для одного из них. Честно говоря, они должны были постоянно уходить, учитывая, сколько из них есть.

Кроме того, время выполнения составляет всего 0,003 секунды, и что произошло? Почему ColdFusion не знает об этом?

Пример «зомби» "zombie" Активным запроса, который застрял stuck

+0

Это может помочь. http://stackoverflow.com/questions/9545560/how-to-kill-a-running-select-statement –

+0

Я попрошу администратора базы данных, если есть какие-либо ошибки или нерешенные сеансы. –

+0

Просто проверка: используете ли вы ODBC или JDBC? –

ответ

1

У нас похожая ситуация с другим двигателем базы данных - Redbrick, которая работает на сервере UNIX. Мы решили это следующим образом.

Мы установили задание cron на сервере базы данных для запуска каждые 5 минут. Эта работа использует комбинацию команд unix и awk.

Это задание запускает запрос к системной таблице, которая ищет запросы, которые были запущены более 120 секунд, когда учетная запись базы данных является той, что используется ColdFusion. Записи выводятся в файл. Что-то вроде этого:

print "alter system cancel user command userName process " $1 ";" 

$ 1 исходит из запроса и является идентификатором процесса, который мы хотим остановить.

Затем мы запускаем файл, который выполняет все эти изменения системных команд.

С другим механизмом базы данных и возможной разной ОС для сервера базы данных детали будут разными, но подход должен работать.

Edit начинается здесь

Для предотвращения рецидивов, смотрите на страницах, которые вызывают те, с длительными запросами. Если нетерпеливые пользователи могут многократно щелкнуть что-то, потому что ничего не происходит, сделайте что-нибудь об этом. Вы можете использовать javascript, чтобы убрать ссылку/кнопку. Кроме того, вы можете перейти на промежуточную страницу с дисплеем для пользователя и тем, что переносит их на настоящую страницу.

+0

Да, это тоже возможно, я видел тот же запрос от того же IP - это короткий период времени. –

Смежные вопросы