Google Groups Home
Help | Sign in
Техника экстремального клоузконнекшинга
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  1 message - Collapse all
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
A4  
View profile
 More options Sep 18 2007, 6:38 am
From: A4 <I1t...@gmail.com>
Date: Tue, 18 Sep 2007 10:38:13 -0000
Local: Tues, Sep 18 2007 6:38 am
Subject: Техника экстремального клоузконнекшинга
Наверное сама распостраненная профессиональная болезнь PHP-
программистов - это незакрытое подключение к MySQL. Правда болезнь эта
быстро самовылечивается у тех, кто, как говорится, "наступал на эти
грабли".

В принципе MySQL и сам провоцирует это, позволяя плодить соединения
сотнями, а также по умолчанию небольшим временем таймаута.

Так вот представьте себе картину: пятница, 18:30, сотрудники делятся
планами на выходные и ведут вялую внутреннюю переписку на тему "Так на
сколько же людей заказывать столик в близжайшем пабе?".
Пятничную идилию нарушет SMS-сообщение "MySQL: Too many connections on
XXX server", подкрепленное несколькими десятками писем от
мониторинговых систем. И понеслось...

В результате достаточно оперативных поисков обнаруживается, что какая-
то [censored] забывает закрыть соединение с MySQL-базой, и в момент
увеличения количества посетителей портала свободных подключений
попросту не осталось.
Т.к. времени разбираться в логике чужого достаточно немаленького
скрипта времени небыло я прибегнул к такому трюку:

Сразу после выполнения подключения к БД:

      $db_link = mysql_connect('server.com', 'login', 'password')

Дописываю строку:

      register_shutdown_function('mysql_close',$db_link);

Вуаля! По завершении работы скрипта (даже аварийного) произойдет
закрытие подключения к базе данных MySQL.

Осталось только добавить что, даже если незакрытые соединения не
создают проблем, ОЧЕНЬ рекомендую все-таки их закрывать. А для тех кто
использует InnoDB-таблицы, это делать обязательно во избежании полной
потери данных. Но это уже другая история, о какой я напишу как-нибудь
позже.

http://voituk.kiev.ua/2007/04/21/mysql-too-many-connections/


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »

Create a group - Google Groups - Google Home - Terms of Service - Privacy Policy
©2008 Google