Intellect Board Pro
Система управления форумами
Объявление

30 ноября 2015 года выпущена окончательная версия Intellect Board 3.00! Перейти к скачиванию
Также доступен конвертор данных для IntB 2.22

Для получения новостей о новых версиях подписывайтесь на наши страницы ВКонтакте и в Twitter.

Привет, гость!

Persistent Connections для MySQL

Или как избежать ошибки too many connections

Настройки отображения темы Показывать по сообщений с сортировкой .
Выводить , отправленные .
Одна страница
Распечатать
4X_Pro
Основатель проекта
Всего сообщений: 205
Зарегистрирован: 22 сен 2014, 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 4

0 +
30 сентября 2014, 17:07. Редактировалось 1 раз, последний — 28 октября 2014, 16:14#1
Intellect Board позволяет использовать Persistent Connections для MySQL. Для этого нужно в файле etc/ib_config.php прописать параметр DB_persist, равный единице.
Однако следует учитывать, что persistent connections далеко не всегда могут давать прирост производительности, в ряде случаев возможен обратный эффект: ее снижение или даже появление ошибок too many connections. Связано это с тем, что у каждого рабочего потока Apache свой пул постоянных соединений. Таким образом, если у нас есть 20 рабочих процессов Apache, и во время разового всплеска нагрузки (скажем, про проходе поискового робота) установит по 10 соединений с MySQL, то в итоге образуется целых 200 соединений, из которых после того как всплеск нагрузки завершится, реально будет использоваться всего несколько.
Чтобы этого избежать, рекомендую придерживаться следующих правил:
использовать persistent connections только если MySQL вынесен на отдельный сервер и ограничить максимальное количество постоянных соединений достаточно небольшим количеством с помощью опции mysqli.max_persistent в php.ini (в частности, на сервере, где стоит этот сайт, разрешено всего 2 постоянных соединения).
выставить максимальное количество подключений MySQL (max_connections в my.cnf) как минимум в два раза больше, чем максимально возможное количество постоянных соединений (т.е. max_persist * число_рабочих_процессов).

В ситуациях, когда и MySQL и форум размещены на одном сервере более эффективным с точки зрения производительности оказывается использование обычного соединения с подключением через Unix-сокеты, а не через TCP/IP.

Критикуя — предлагай, предлагая — обосновывай!
Для тех, кто живет в Интернете — мой блог о Web-разработке.

Одна страница
Распечатать

У вас нет прав для отправки сообщений в эту тему.

0: Контрольная точка "Конец инициализации". Время выполнения: 0.001. Запросов: 8, время запроса: 0.000 (37.80)%. Памяти использовано: 514416 байтов

0: Контрольная точка "Фиксация действия пользователя выполнена". Время выполнения: 0.001. Запросов: 10, время запроса: 0.001 (50.12)%. Памяти использовано: 514744 байтов

0: Контрольная точка "Основное действие выполнено". Время выполнения: 0.003. Запросов: 17, время запроса: 0.002 (54.79)%. Памяти использовано: 626824 байтов

0: Контрольная точка "Вспомогательные действия выполнены". Время выполнения: 0.003. Запросов: 19, время запроса: 0.002 (54.72)%. Памяти использовано: 634512 байтов

0: Контрольная точка "После срабатывания шаблонизатора.". Время выполнения: 0.005. Памяти использовано: 911368 байтов