2011-10-27 9 views
5

Me estoy moviendo de una empresa de alojamiento web compartida a un VPS. Y estoy tratando de encontrar la configuración óptima para mi sistema.MySQL NO usando la memoria disponible

Para 1 tabla específica con medio millón de registros, 1 consulta que estaba tardando unos segundos en el servidor anterior ahora está demorando unos minutos.

Estoy tratando de mejorar el tiempo de respuesta de mi servidor, así que compré más memoria (tengo 2GB de RAM, y aún puedo comprar más recursos si es necesario y 2 núcleos). También he "engañado" copiando my.cnf de la antigua empresa a mis VPS:

[mysqld] 
read_buffer_size=8M 
read_rnd_buffer_size=8M 
sort_buffer_size=32M 
innodb_additional_mem_pool_size=503M 
innodb_flush_log_at_trx_commit=1 
innodb_log_buffer_size=16M 
innodb_buffer_pool_size=1007M 
innodb_log_file_size=256M 
innodb_thread_concurrency=8 
innodb_autoextend_increment=128 
max_connections=8059 
max_user_connections=50 
thread_cache_size=128 
thread_stack=196608 
binlog_cache_size=2M 
net_read_timeout=30 
net_retry_count=10 
net_write_timeout=30 
thread_concurrency=10 
open_files_limit=9940 
max_heap_table_size=32M 
tmp_table_size=64M 
key_buffer_size=512M 
key_buffer=128M 
myisam_sort_buffer_size=64M 
join_buffer=16M 
record_buffer=8M 
wait_timeout=300 
connect_timeout=10 
max_allowed_packet=16M 
max_connect_errors=100 
table_cache=1024 
query_cache_size=32M 
query_cache_type=1 
ft_min_word_len=4 
datadir=/var/lib/mysql 
tmpdir=/tmp 
socket=/var/lib/mysql/mysql.sock 
old-passwords=0 
[mysqldump] 
quick 
max_allowed_packet=16M 
[myisamchk] 
key_buffer=64M 
sort_buffer=64M 
read_buffer=16M 
write_buffer=16M 

El problema es que la consulta sigue siendo lento, y el servidor hace no utilizar la memoria disponible!

   total  used  free  shared buffers  cached 
Mem:   2002  1986   15   0   6  1079 
-/+ buffers/cache:  901  1101 
Swap:   1747   2  1745 

¿Alguna sugerencia?

Saludos

Respuesta

4

Puede echar un vistazo a utilizar https://github.com/rackerhacker/MySQLTuner-perl

que se puede utilizar para analizar MySQL y se dará salida a la configuración recomendada.

Su configuración parece demasiado alta para la memoria de 2 gb. IE max_connections = 8059 Eso en sí mismo requeriría mucho más memoria que la que tiene.

[mysqld] 
max_connections=100 
innodb_buffer_pool_size=256M 
query_cache_size=256M 
key_buffer_size=256M 
innodb_flush_log_at_trx_commit=0 
innodb_flush_method=O_DIRECT 
query_cache_type=1 
query_cache_limit=2M 
table_cache=1024 
join_buffer_size=4M 
thread_cache_size=128 
tmp_table_size=256M 
max_heap_table_size=256MB 

para la memoria RAM de 2 GB se podría tratar de usar estos valores en MySQL Estos son los ajustes recomendados para uno de los servidores de 2gb actualmente estoy usando

+0

Hola oOo - ESTRELLA - OOO mi problema es * no * que los ajustes requieren más memoria que la que tengo, sino todo lo contrario: la memoria disponible no se usa aunque la configuración sea muy alta. – mossaab

+0

Esto puede que tenga que ver con el poder de procesamiento, ¿cuánto tiempo lleva obtener la información? ¿Ha monitoreado la CPU usando top en ssh? –

+0

Tengo aproximadamente el 110% de uso de CPU (con 2 núcleos). Esta consulta no afecta a la CPU. Así que no creo que esta sea la causa tampoco. – mossaab

Cuestiones relacionadas