Помогите оптимизировать работу MySQL (Зависает база из-за большого кол-ва коннектов)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

GHostlyFOX
Сообщения: 7

Помогите оптимизировать работу MySQL

Сообщение GHostlyFOX »

ОС: SLES 11
База: MySQL Ver 14.12 Distrib 5.0.67, for suse-linux-gnu (x86_64) using readline 5.2
Описание проблемы: На сервере крутится WEB сервер, в день сайт получает от 15 000 до 25 000 хитов, в момент пиковой нагрузки база встает и бьет ошибку о превышении лимита подключений. Помогите оптимизировать настройки базы чтобы либо она быстрее отдавала результаты, либо выдерживала большее кол-во подключений?

Листинг my.cnf

Код: Выделить всё

[client]
port            = 3306
socket          = /var/lib/mysql/mysql.sock

[mysqld]
port            = 3306
socket          = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 512M
max_allowed_packet = 5M
table_cache = 512
sort_buffer_size = 20M
read_buffer_size = 20M
read_rnd_buffer_size = 36M
myisam_sort_buffer_size = 128M
thread_cache_size = 36
query_cache_size = 128M
thread_concurrency = 8
skip-federated
log-bin=mysql-bin
server-id       = 1

# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /var/lib/mysql/
#innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_log_arch_dir = /var/lib/mysql/
#innodb_buffer_pool_size = 384M
#innodb_additional_mem_pool_size = 20M
#innodb_log_file_size = 100M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

[safe_mysqld]
log-error=/var/lib/mysql/mysqld.log

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
Спасибо сказали:
alfss
Сообщения: 262

Re: Помогите оптимизировать работу MySQL

Сообщение alfss »

проанализируйте:
Сколько длится самый долгий запрос
Что делает самый долгий запрос
Каков объем бд
Тип таблиц
Если нужно - добавьте оперативы.

Остальное за деньги
Если нужно пишите jid: alf_ss@jabber.ru
Спасибо сказали:
Kodhi
Сообщения: 30
ОС: Ubuntu 8.04

Re: Помогите оптимизировать работу MySQL

Сообщение Kodhi »

Попробуй в [mysqld] поставить max_connections = 200

Спасибо сказали:
Аватара пользователя
strah
Сообщения: 283
ОС: Freebsd, linux, Solaris.

Re: Помогите оптимизировать работу MySQL

Сообщение strah »

Я думаю, что, если запросов действительно очень много, а клиентам нужна высокая производительность, то тут, наверное, стоит подумать об организации кластера.
/earth: file system full
Спасибо сказали:
Kam
Сообщения: 67
ОС: Fedora, CentOS

Re: Помогите оптимизировать работу MySQL

Сообщение Kam »

Многое зависит от структуры самой базы, индексированы поля по которым идет поиск или нет итд.

Включите в конфиг лог медленных запросов:
[mysqld]
log-slow-queries=/var/log/slow.log

Можно попробовать оптимизировать mysqlcheck-ом. (При этом таблицы блокируются на запись, хотя не уверен в этом на все 100)

Какое количество конектов стоит ?
show global variables;
Если мало - поставьте больше.
[mysqld]
max_connections=800
Если при этом станет загибаться сам сервер - возможно стоит вынести базу на другой сервер и соединить все это гигабитом.

Вижу реплицируете. Если на слейвах информация постоянно актуальная, подумайте о балансировке нагрузки между базами на выборку данных.
Спасибо сказали: