2012-02-11 2 views
1

У меня есть сайт, который работает очень хорошо в течение последних 2 лет, но теперь на сайте больше посетителей и больше контента. Я использую wordpress, и благодаря этому контенту и посетителям, я получаю несколько соединений с базой данных в один конкретный момент. Как это решить?Как управлять несколькими подключениями к MySQL?

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

Возможное решение этой проблемы может быть:

СООБЩЕНИЕ ДЛЯ ПОСЕТИТЕЛЕЙ СКАЗАТЬ: Сайт не доступен в данный момент.

Как узнать, когда превышено максимальное количество соединений?

+2

Обратите внимание на экземпляр слова в этом контексте, экземпляр ссылается на сервер mysql, я думаю, вы имеете в виду 97 соединений? –

+0

есть 97 соединений .. – user975718

ответ

1

Найдите плагин для кеширования для Wordpress и установите его. Кэширование снижает нагрузку на базу данных.

1

Существует простое решение для этого кэширования.

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

Для получения списка и сравнения кэш плагинов для WordPress, смотрите по этой ссылке: List of cache plugins

2

Есть несколько вариантов здесь:

  1. Вы можете реализовать уровень кэширования с помощью внушения seanbreeden, я я уверен, что есть много доступных. Скорее всего, многие из ваших страниц блога статичны, поэтому плагин кэша, который кэширует всю страницу, определенно поможет. Взгляните на varnish.

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

  3. Вы можете реализовать database singleton, который поможет перерабатывать соединения с базой данных, это решение немного более активно, но также поможет уменьшить количество выполненных соединений.

- Edit -

Похоже, вы можете получить текущие 'активные' соединения выдачи запроса, как это:

mysql> SHOW GLOBAL STATUS LIKE 'Threads_connected'; 
+-------------------+-------+ 
| Variable_name  | Value | 
+-------------------+-------+ 
| Threads_connected | 1  | 
+-------------------+-------+ 
1 row in set (0.00 sec)  

Я не могу вспомнить точный код, но мы реализовал механизм «повторения», когда был поднят PDOException, и код соответствовал «слишком большому количеству подключений», мы бы скомпилировали запрос и повторили $ x количество раз.

Смежные вопросы