Одна из наиболее интересных «функций» в Coldfusion - это то, как она обрабатывает внешние запросы. Основная его суть заключается в том, что когда запрос выполняется во внешний источник через <cfquery>
или любой другой внешний запрос, подобный этому, он передает внешний запрос конкретному драйверу и в тот момент сам CF не может его приостановить. Даже если тайм-аут указан в запросе или в cfsetting, он полностью игнорируется для всех внешних запросов.Что вызывает таинственные висячие потоки в Colfusion -> mysql communication
http://www.coldfusionmuse.com/index.cfm/2009/6/9/killing.threads
Так что с учетом этого вопроса мы столкнулись с что-то связь между нашим сервером и CF нашего сервера MYSQL иногда идет наперекосяк, и оставляет за повесила темы. Они имеют следующие характеристики.
- Витая нить появляется в CF и не может быть убита из FusionReactor.
- no виден поток, видимый в mySQL, и активный активный запрос (просто обычный сон).
- База данных отвечает на другие вызовы и, по-видимому, работает правильно.
- Максимальные соединения не были достигнуты для БД или пользователя.
Мне кажется единственным вероятным кандидатом является то, что каким-то образом CF делает запрос, MySql реагирует на эту просьбу, но с ответом, который CF игнорирует и продолжает держать нить открытое ожидание ответа от MySql. Это объясняет, почему в базе данных нет никаких признаков проблем, но CF держит поток открытым, ожидая таинственного ответа.
Обычно эти зависающие нити отображаются случайным образом в других рабочих сценариях (например, размещая комментарий к новостной статье). Даже если для этого скрипта висит один поток, будут выполняться другие запросы для этого скрипта, что подразумевает, что сценарий не обязательно виноват, а скорее условие, с которым столкнулось при выполнении сценария.
Мы проверили некоторый тест, чтобы определить, что это не ошибка, вызванная mysql max_connections ... мы создали пользователя, дали ему 1 max соединений, связали это соединение с запросом sleep (1000) и выполнили другой запрос. К сожалению, он правильно ошибочно, без генерации зависающей нити.
Итак, я остался в этом месте, абсолютно не понимая, что происходит не так. Есть ли еще какой-либо другой лимит подключения или тайм-аут, который может привести к сбою связи между серверами?
Что именно не так? У вас заканчивается какой-то ресурс (возможно, потоки)? Вы максимизируете свои текущие запросы? –