Периодические проблемы с cfthread
Я нашел этот отчет об ошибке. Вопрос в том, "это то, что со мной происходит?".
У меня есть несколько ситуаций, когда я делаю такие вещи.
<cfthread name="thread1" action="run">
code for thread1
</cfthread>
<cfthread name="thread2" action="run">
code for thread2
</cfthread>
Следующий будет иметь фактическое имя.
<cfthread name="CIMSThread" action="run">
code for CIMSThread
</cfthread>
<cfthread name="thread1,thread2,CIMSThread" action="join"></cfthread>
Время от времени я получаю подобные исключения.
"Error","cfthread-638","04/10/13","15:14:14",,"CIMSTHREAD: null"
"Error","jrpp-1215","04/10/13","15:14:22","DWQueries","Error Executing Database
Query.<br><b>Query Of Queries runtime error.</b><br>
Table named CIMSThread.CIMSData was not found in memory. etc"
Когда это произошло впервые, я снова запустил соответствующий отчет и получил ошибку того же типа в другой группе, а затем успешно запустил ее без изменения какого-либо кода или данных.
Когда это произошло впервые, я также подумал, что в потоке может произойти что-то плохое, что приведет к его аварийному завершению, поэтому я сделал что-то, чтобы это произошло. Однако, когда я проверил журнал исключений, обнаружилась ошибка в этом потоке. В этих случаях журнал исключений показывает, что находится в этом посте.
Мы работаем с версией 9,0,1,274733 и включили мониторинг.
На меня влияет сообщенная ошибка, или это может быть что-то еще?
Ответить на комментарии
Я не могу воспроизвести проблему по желанию. После консультации с моим администратором мы отключили мониторинг, но страницы запускаются не очень часто. Если ошибки не появляются какое-то время, это не обязательно что-то доказывает.
Проблемные темы содержат долго выполняющиеся запросы. Что-то, о чем я только что подумал, это то, что есть очень часто используемая страница, которая никогда не вызывала проблем. Есть две отличия между хорошей страницей и проблемными страницами. Хорошая страница состоит из двух потоков и присоединяется к ним. Проблемных страниц больше двух. Кроме того, запросы на хорошей странице не занимают так много времени.
Для тех, кто предлагает тайм-аут, это не
Вот код Выполнение запроса занимает около 4 секунд.
<cfthread name="ThreadWithTimeOut" action="run">
<cfquery name="thread.x" datasource="dw" timeout="1">
sql deleted
</cfquery>
</cfthread>
<cfthread action="join" name="ThreadWithTimeOut"></cfthread>
<cfdump var="#ThreadWithTimeOut.x#" metainfo="no">
Журнал исключений показывает это:
"Error","cfthread-6","04/16/13","14:19:15",,"THREADWITHTIMEOUT:
Error Executing Database Query. **
Error ** (11319) [Red Brick Warehouse JDBC Driver] :
Query timeout (1 seconds) has expired."
coldfusion.tagext.sql.QueryTag$DatabaseQueryException: Error Executing Database Query.
и это:
"Error","jrpp-238","04/16/13","14:19:15","Dan",
"Element X is undefined in THREADWITHTIMEOUT.
Это другой набор исключений. Предыдущие сказали, что нить была нулевой.
1 ответ
Посмотрите на ошибку, которую вы получаете более внимательно:
"Error","cfthread-638","04/10/13","15:14:14",,"CIMSTHREAD: null"
"Error","jrpp-1215","04/10/13","15:14:22","DWQueries","Error Executing Database
Query.<br><b>Query Of Queries runtime error.</b><br>
Table named CIMSThread.CIMSData was not found in memory. etc"
Из этой ошибки я могу только предположить (поскольку вы не предоставили никакого реального кода в своем вопросе), что код в CIMSTHREAD вызывает ошибку, вызывающую сбой потока и не возвращающий никаких данных.
Также из ошибки (и вашего вопроса) я могу сделать вывод, что ваш поток запрашивает базу данных и передает ее обратно.
Теперь лично я не знаю, почему в мире вы используете поток для запроса вашей базы данных. Если вам нужно прибегнуть к этому, потому что запросы выполняются некоторое время, то у вас большие проблемы, мой друг. Я бы поставил запросы, выполняемые к базе данных, в то же самое время, что и сама база данных. Посмотрите, нужно ли вам добавить индекс или поэкспериментировать с запросом, чтобы он быстрее возвращался.
Итог... Я думаю, что ваша проблема не проблема cfthread, это проблема времени ожидания вашего запроса.