segunda-feira, 23 de abril de 2012

Swap MySQL



Enfrentamos um problema complicado demais na ultima semana, o servidor novo de replicação que havíamos colocado no ar estava com um estranho problema de swap em disco, mesmo tendo memória o suficiente para execução no servidor.


A configuração da máquina era:
  •  26GB Memória
  • 128GB SSD
  • CentOS release 6.2 (Final)
Depois de verificar a alocação de memória do InnoDB, percebeu-se que estavam corretamente configuradas:

show global variables like '%cache%';

VARIABLE_NAMEVARIABLE_VALUE
binlog_cache_size32768
have_query_cacheYES
key_cache_age_threshold300
key_cache_block_size1024
key_cache_division_limit100
max_binlog_cache_size18446744073709547520
query_cache_limit1048576
query_cache_min_res_unit4096
query_cache_size1073741824
query_cache_typeON
query_cache_wlock_invalidateOFF
table_definition_cache256
table_open_cache457
thread_cache_size32

e o show innodb status (convertidos para melhor entendimento):

=======
Total memory allocated 15G; in additional pool allocated 1,5G

Dictionary memory allocated 512M
Buffer pool size    11G
Free buffers        0
Database pages      989137
Modified db pages   305
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0



Pages read 1674521, created 2505362, written 10421938

1.18 reads/s, 0.14 creates/s, 6.05 writes/s
Buffer pool hit rate 1000 / 1000
========


O que sobrou de opção foi verificar algo no sistema operacional, visto que não encontrava nada que pudesse responder esse swap que estava ocorrendo.


O Linux tem como padrão uma configuração de swappiness.


Mudando essa opção no Linux, setando a variável para gerenciar somente 15% do que vai - com o perdão da palavra - ‘swappar’

vim /etc/sysctl.conf

vm.swappiness=15


Assim, o slave parou de fazer swap. Pode ser que essa solução não se aplique ao seu problema, porém, essa é uma solução muito adotada por administradores de infra, o que deu um bom resultado no nosso ambiente.


Espero ter ajudado.

Nenhum comentário:

Postar um comentário