
Hace unos 4 meses migramos deServidor MS SQLaMySQL 5.5. Desde entonces, hemos estado experimentando un problema aproximadamente cada 25 días desde que CentOS se queda sin memoria y, como resultado, mata MySQL. MySQL Safe reinicia mysql por lo que la base de datos solo está completamente inactiva durante uno o dos minutos, pero podemos sufrir pérdidas de rendimiento y conectividad durante horas antes de que CentOS elimine el subproceso mysqld.
Normalmente vemos problemas entre la 1 a.m. y las 5 a.m., pero nunca durante el día cuando el tráfico es más alto, que es lo realmente desconcertante de esta situación. A pesar de que normalmente se producen problemas de conectividad y rendimiento entre la 1 a. m. y las 5 a. m., el servidor mysql generalmente se cierra alrededor de las 4 a. m. o las 5 a. m., aproximadamente al mismo tiempo que se ejecuta mysqldump.
Pensamos mysqldump
que podría haber sido el culpable. Sin embargo, comienza a las 4 a. m. todos los días, pero vemos problemas incluso a la 1 a. m. algunas noches. También mysqldump
se está ejecutando con el --opt
conmutador, por lo que no debería almacenar en el búfer muchos datos durante el proceso de volcado.
También consideramos la aplicación de respaldo que estamos usando, que obtiene los archivos de volcado y los respalda en cinta. Cambiamos la hora a la que funciona a las 6 a.m. y el problema no cambió.
Tenemos varios trabajos que se ejecutan periódicamente durante la noche, pero ninguno consume muchos recursos y no lleva mucho tiempo ejecutarlo.
Aquí hay algunas estadísticas de con qué estamos trabajando y las entradas actuales en el my.cnf
archivo. Cualquier ayuda o sugerencia sobre cosas que podamos probar será muy apreciada.
ESTADÍSTICAS DEL SERVIDOR:
- CPU Intel(R) Xeon(R) E5530 a 2,40 GHz
- núcleos de CPU: 4
- Memoria: 12293480 (12 gigas)
SO:
- CentOS 5.5
- Linux 2.6.18-274.12.1.el5 #1 SMP martes 29 de noviembre 13:37:46 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
MI.CNF:
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-name-resolve
ssl-ca=<file location>
ssl-cert=<file location>
ssl-key=<file location>
back_log = 50
max_connections = 500
table_open_cache = 2048
table_definition_cache = 9000
max_allowed_packet = 16M
binlog_cache_size = 1M
max_heap_table_size = 64M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 130
thread_concurrency = 16
query_cache_size = 64M
query_cache_limit = 1M
ft_min_word_len = 4
default-storage-engine=INNODB
thread_stack = 192K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
log-bin=/log/mysql/mysql-bin
expire_logs_days=7
binlog_format=mixed
key_buffer_size = 32M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 7G
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 70
innodb_lock_wait_timeout = 120
[mysql]
no-auto-rehash
[mysqld_safe]
open-files-limit = 8192
Respuesta1
Deberías comprobar el registro de errores de MySQL.
Compruebe que este valor sea el mismo que el
ulimit -a
de los archivos abiertos:int my.cnf [mysqld_safe] open-files-limit = 8192
Respuesta2
Tu configuración tiene errores.
Aquí usa estoherramienta. ¿Le indica cuánta memoria RAM necesita para su configuración personalizada?
Su RAM actual, como mencionó, es 12GB
pero necesita 31.6GB
500 conexiones MySQL activas.
Session variables
max_allowed_packet 16.0 MB
sort_buffer_size 8.0 MB
net_buffer_length 16.0 KB
thread_stack 192.0 KB
read_rnd_buffer_size 16.0 MB
read_buffer_size 2.0 MBSession variables
max_allowed_packet 16.0 MB
sort_buffer_size 8.0 MB
net_buffer_length 16.0 KB
thread_stack 192.0 KB
read_rnd_buffer_size 16.0 MB
read_buffer_size 2.0 MB
join_buffer_size 8.0 MB
Total (per session)50.2 MB
Global variables
innodb_log_buffer_size 1.0 MB
query_cache_size 64.0 MB
innodb_buffer_pool_size 7.0 GB
innodb_additional_mem_pool_size 16.0 MB
key_buffer_size 32.0 MB
Total 7.1 GB
Total memory needed (for 500 connections): 31.6 GB