Потоки ColdFusion остаются в очереди потоков NOT_STARTED
Я использую CFTHREAD на ColdFusion 8.
Иногда я обнаруживаю, что все потоки перестают выполняться и остаются с STATUS=NOT_STARTED
Монитор сервера сообщает мне, что нет ни запущенных запросов, ни запущенных потоков, ни увеличивающегося количества потоков в очереди.
Единственный способ восстановления - перезапустить экземпляр ColdFusion.
Я использую темы только в нескольких местах. Некоторые вызовы CFTHREAD ПРИСОЕДИНЕНЫ - в этом случае я прекращаю любые потоки, которые не были завершены в течение тайм-аута. Некоторые звонки на CFTHREAD - это огонь и забыл.
Кто-нибудь знает, почему это может происходить?
Спасибо,
Уильям Бибби
1 ответ
В одном из моих приложений я уже сталкивался с проблемой зависания темы. Это потому, что мой поток выполнял какой-то HTTP-вызов или процедуру загрузки огромного файла, он столкнулся с проблемой тайм-аута соединения.
Из-за зависания этого потока наш сервер также становится очень занятым, потому что ресурсы, полученные запущенным потоком, не могут быть освобождены.
Мое решение: просто проверьте, сколько времени работает поток. Если это больше, чем определенный интервал, тогда я убивал поток по коду.
Вы можете использовать API администрирования ColdFusion, чтобы убить поток. Если вы хотите, как убить поток с помощью API администратора, смотрите здесь