Назад | Перейти на главную страницу

Максимальное увеличение количества подключений SQL + потоки Apache

У меня есть выделенный сервер, на котором я запускаю MySQL + Apache. Я запускаю скрипт чата, который опрашивает каждые 3 секунды. Прошлой ночью мой сервер MySQL умер из-за нагрузки. Мне интересно, как максимизировать мои потоки MySQL, а также потоки Apache.

Может ли кто-нибудь указать мне URL-адреса, которые помогут мне добиться того же?

Спасибо за уделенное время.

Каноническое место для информации о производительности MySQL - Блог о производительности MySQL. Также есть Высокая производительность MySQL книга Джереми Заводны.

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

Еще одна вещь, которую вы можете сделать, чтобы значительно снизить нагрузку на вашу базу данных, - это интегрировать memcached. Memcached - это распределенное хранилище значений ключей в памяти; как привязанная к сети хеш-карта. Вы бы изменили свое приложение, чтобы опросить memcached и, если нет данных, проверить базу данных. Когда вы меняете данные, вы записываете их в базу данных и аннулируете данные в memcached. Это означает, что вы будете опрашивать значительно более быстрый memcached, чем MySQL.

После того, как вы внедрили эти функции, и только когда они у вас есть, вы можете приступить к настройке параметров MySQL. Если вы не знаете, что делаете, есть огромный потенциал, чтобы все испортить по-королевски и получить базу данных, которая будет работать медленнее, чем была раньше. Я бы хотя бы прочитал книгу о производительности MySQL, прежде чем вы попробуете это.

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