2010-08-25 2 views
0

Я выполняю тестирование производительности на сервере Apache и получаю страшное сообщение «пул контекстов исчерпан! Dun Dun Dun». (драматический акцент добавлен)В чем опасность простого увеличения пула соединений?

Текущее предложение, плавающее разработчиками, - это просто увеличить размер пула соединений. Хотя это может быть справедливо, в моей голове появляются маленькие колокольчики, говорящие «хорошо, это слишком просто - конечно, есть минусы этого», и я спрашиваю сообщество, что некоторые из них могут быть.

Я хотел бы сохранить это как можно более общим, чтобы оно было наиболее полезным для большинства людей.

ответ

0

Предупреждение: сообщение о ностальгии.

Много лет назад я работал в среде мэйнфреймов. Моя задача заключалась в том, чтобы запускать специальные SQL-отчеты для оценки эффективности рождественских рекламных кампаний. «Как работает линия X, против линии Y, за последние Z недель, против тех же недель прошлого года» ... и тому подобное.

Это было захватывающе: специальные запросы, непосредственно связанные с живой базой данных, маркетинговые решения принимаются во второй половине дня, исходя из утренних вопросов от отдела покупок. Никаких ошибок SQL не было, нет тестирования, нет среды разработки, это было правильно в первый раз или ничего.

Я отправился на обед, безумный дурак, который я был, создав многостоечное соединение, которое дало бы желаемые результаты, хотя после 30-минутного запроса было бы безопасно знать, что никаких блокировок не предпринималось, чтобы предотвратить транзакционное система заказов, сохраняющая новые заказы. Это было в середине декабря, в разгар рождественского сезона.

Я вернулся, компания в хаосе. Вся система заказов была опущена, все было тайм-аут, и никто не задумывался почему.

За исключением того, что CICS не удалось установить соединения. Бассейн был исчерпан, поэтому новые транзакции просто не удались.

Это был мой доклад. Это потребовало тонны процессора. Это длилось долго. Все остальное бежало только немного дольше. Таким образом, у пула соединений закончились соединения, и все остальное умерло на некоторое время.

Мой запрос завершен. Это дало правильные результаты. Отдел покупок был счастлив, так как они могли принять правильные решения на следующий день. Заказы снова начали сберегаться, и угадайте, что ...

Я был в ужасе и смущен, но, как ни удивительно, я был временным героем, чтобы как можно скорее предоставить критический отчет. Получасовый кризис был катастрофой в то время, но через день, просто память.

Если есть нравственная здесь, то это:

Там нет ни одного правильного ответа на такого рода вопрос.

Если вы можете, узнайте, почему у вас заканчиваются соединения, так как это может быть признаком чего-то серьезного.

Но это может быть не так, и завтра может возникнуть другая проблема.