В случае сбоя вторичной базы данных произойдет сбой основного сервера Coldfusion? - PullRequest
1 голос
/ 17 июня 2010

Прямо сейчас мы имеем дело с небольшой загадкой в ​​моей корпоративной среде, где нас обвиняют в сбое сервера, но я не уверен на 100%, что мы виновны.Вот серверная среда: у нас есть основная Coldfusion и его база данных MSSQL.Затем у нас также есть вторичная база данных (MySQL), размещенная в другом облаке, которая используется для разных задач.Основная причина, по которой система структурирована таким образом, заключается в том, что основной сервер управляется нашей Системой управления контентом, поэтому нам не разрешено изменять ее, добавлять таблицы или любые подобные операции, поэтому мы используем для этого альтернативную базу данных.По своему дизайну на нем нет критически важных элементов, а страницы построены таким образом, что если альтернативная БД не возвращает строк, страницы будут продолжать правильно отображаться.

По сути, мне говорят, что когдаальтернативный сервер MySQL отключается или прекращает принимать подключения, поскольку он забирает с собой все основное облако, включая 5 других сайтов, размещенных на нем.У меня нет доступа к основным журналам Coldfusion или базы данных, потому что поставщик CMS не даст их мне.Таким образом, я могу судить только по обоснованности объяснения, которое они мне дают.

Объяснение этого поведения, исходящего от нашего поставщика CMS, заключается в том, что когда Coldfusion запрашивает базу данных, он создает поток, и что если БДне отвечает потоки продолжают стек.В конечном счете процессор ограничен, и сервер выходит из строя.Это точное объяснение того, как работает Coldfusion?Если да, есть ли способ предотвратить это, возможно, с более короткими тайм-аутами БД и т. П.?Или все объяснение, представленное нашей CMS, представляет собой красную сельдь, и что-то еще действительно вызывает сбои.

Будем весьма благодарны за любые указания.

Ответ на вопрос - найдены документы http://kb2.adobe.com/cps/180/tn_18061.html http://www.adobe.com/devnet/server_archive/articles/cf_timeouts_and_unresponsive_requests.html

Глобальная настройка запросов времени ожидания не приводит к превышению времени ожидания внутренних процессов, ожидающих на внешних ресурсах (cfquery / cfhttp и т. Д.).Единственный способ отсчитать время ожидания - вручную установить атрибут timeout.Отключение этого параметра может привести к перегрузке потока и поломке сервера, как это происходило у нас.

1 Ответ

5 голосов
/ 17 июня 2010

http://kb2.adobe.com/cps/180/tn_18061.html

Начиная с пункта 3 и в зависимости от вашего трафика, ваш парень CMS может быть прав.

Также по ссылке выше:

Если база данных не работает и не отвечает, сколько раз ColdFusion Server будет пытаться повторно подключиться к базе данных? Будет ли он в конечном итоге перезапустить сервер ColdFusion?

Если база данных не работает или сетевая связь с базой данных перестает работать при запросе на запрос, для соединения истечет время ожидания (вы можете настроить время ожидания с помощью атрибута времени ожидания в теге cfquery) и вернуть ошибку пользователю , Обратите внимание, что возможность установить время ожидания для подключения зависит от того, какой драйвер вы используете. Вы можете перехватить эту ошибку и обработать ее программно с помощью тегов cftry / cfcatch.

Смысл в том, что переменная тайм-аута в тегах cfquery не совместима с драйвером ODBC MySQL. Не удалось найти время ожидания по умолчанию. Скажем 5 минут. Если за эти 5 минут вы получите более одного запроса, похоже, что соединения начнут «накапливаться».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...