Слишком много соединений
Причины Это ошибка вызвано
- много одновременных соединений, или
- старых связей не выпускаются достаточно скоро
Вы уже сделали SHOW VARIABLES LIKE "max_connections";
и увеличить значение.
Постоянные соединения
Если вы используете постоянный или persistent database connections, вы всегда должны принять директиву MySQL wait_timeout
во внимание. Закрытие не будет работать, но вы можете снизить таймаут. Таким образом, используемые ресурсы будут быстрее доступны снова. Используйте netstat
, чтобы узнать, что происходит, как описано здесь https://serverfault.com/questions/355750/mysql-lowering-wait-timeout-value-to-lower-number-of-open-connections.
Не забудьте освободить свои результирующие наборы, чтобы уменьшить потери ресурсов сервера db.
Рекомендуется использовать временные короткоживущие соединения вместо постоянных соединений. Представление о сохранении в значительной степени относится ко всему потоку запросов-ответов в Интернете, потому что он без гражданства. Вы знаете: 1 запрос pconnect, вызывает 8-часовое устойчивое соединение, свисающее на сервере db, ожидая следующего запроса, который никогда не приходит. Умножьте количество пользователей и посмотрите на свои ресурсы.
Временные соединения
Если вы используете mysql_connect() - не забудьте mysql_close(). Установить new_link
установить на false и передать флаг CLIENT_INTERACTIVE
. Вы можете настроить interactive_timeout
, что помогает остановить старые соединения, блокирующие работу.
Если проблема не устранена, масштаб
Если проблема остается, то решить, масштабировать. Либо добавив еще один сервер БД и поставив перед собой прокси, (MySQL хорошо работает с HAProxy), либо переключившись на облачную службу с автоматическим масштабированием.
Я действительно сомневаюсь, что ваш материал настроен правильно. Как это может быть проблемой, когда вы уже используете несколько серверов MySQL, а также несколько веб-серверов? Опишите настройку балансировки нагрузки.
Звучит как Apache 2.2 + mod_php + MySQL + неизвестный балансир, не так ли?
Может попробовать
Мы закрываем соединения! Я говорю о проблеме, когда у нас слишком много одновременных пользователей. – iamlegend
Вам нужны все эти соединения? Можете ли вы уменьшить нагрузку на сервер, например? с помощью кэширования HTML или фрагментов? – halfer
Возможно, вам нужно настроить серверы MySQL и/или запросы? Кроме того, 10K соединений/день не много - это примерно один раз в 8 секунд. Каковы пиковые запросы/сек на веб-сервере (если они сгруппированы вместе)? – halfer