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

MySQL слишком много подключений

На моем сервере 7 баз данных. Наш сервер имеет 512 МБ оперативной памяти, которую я обновляю сегодня вечером до 2 ГБ, и имеет процессор 2.4.

Я получил ошибку о превышении лимита подключений. Можно ли увеличивать количество подключений с увеличением объема оперативной памяти? В настоящее время установлено значение 200, но одна страница может подключаться к 3-4 базам данных с учетом JOINs и прочего.

Мы создали так много баз данных для простой организации. Всего у нас около 250-300 таблиц во всех базах данных.

Любой совет будет принят во внимание :)

Обновить

Оказывается, у меня гораздо больше связей, чем я думал ...

С 2 ГБ ОЗУ и одноядерным 2.4, 50 пользовательских подключений точны, или мне следует увеличить?

[mysqld]
safe-show-database

skip-locking
safe-show-database

interactive_timeout=30
wait_timeout=30
connect_timeout=10
max_user_connections=50
max_connections=1000

key_buffer=64M
join_buffer=2M
record_buffer=2M
sort_buffer=4M
max_allowed_packet=24M

query_cache_limit = 2M
query_cache_size = 64M
query_cache_type = 1

tmp_table_size=128M
table_cache=2048
thread_cache=256
thread_concurrency=1

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

Пример того, что происходит при неправильной настройке:

MySQL продолжает перезапускаться из-за нехватки памяти

Некоторые предыдущие рекомендации по настройке, которые я дал:

Как мне установить my.cnf в Mysql, чтобы не было ограничений на соединения?

Ссылка на Использование памяти InnoDB включает формулу для расчета использования памяти InnoDB, которую вы можете вставить в электронную таблицу для расчета использования памяти для каждого потока.

Вот еще немного информации о Использование памяти сервера MySQL.

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

На машинах 1 ГБ мы обычно без проблем устанавливаем max_connections равным 750.

Если вы используете PHP, отредактируйте файл конфигурации php, обычно это /etc/php.ini, и измените постоянство на OFF.

[MySQL]; Разрешите или предотвратите персистентные каналы. mysql.allow_persistent = Выкл.

Вот и все. Перезагрузите Apache.