Ubuntu 12.04 Server - MySQL fica travando - Possíveis problemas do InnoDB

1

Eu tenho procurado por uma solução, mas nada parece funcionar. Eu tenho um único site Drupal 6 neste servidor.

Servidor: Ubuntu 12.04 Apache / 2.2.22 (Ubuntu) 5.3.10-1ubuntu3.8 MySQL 5.5.32 Drupal 6

Aqui está um link para meus arquivos de erro do Apache2 e MySQL e meu arquivo de configuração para o MySQL. Por favor, dê uma olhada. link Esses arquivos são enormes, é por isso que eu os vinculei em vez de colá-los aqui. Se eu precisar, posso colar aqui. Apenas me avise. Obrigado.

Eu fiz muita pesquisa. Eu principalmente tento Google os erros em si, mas não consigo encontrar a solução certa. Eu acho que eu reduzi isso a um problema com innodb, mas é isso. Eu verifico as tabelas no log de erros e o phpMyAdmin diz que eles estão ok e eu os conserto de qualquer maneira e ainda recebo o erro.

Quando meu site falha, eu tenho que reiniciar o Apache e então reiniciar o MySQL e então o site volta a funcionar. Ele caiu 2 a 6 vezes por dia.

Qualquer ajuda seria muito apreciada. Obrigado.

    
por rayjamesfun 11.12.2013 / 00:43

1 resposta

3

Eu me sinto razoavelmente confiante de que não há nada errado com a sua instalação do MySQL, e é por isso que reparar as tabelas não mostra nenhum problema. Esses são artefatos do problema real:

Você simplesmente não tem memória suficiente em sua máquina para fazer tudo o que está tentando fazer.

Da sua configuração:

key_buffer              = 384M

Entre isso e o padrão para innodb_buffer_pool_size de 128M, isso é 512M que tem que estar disponível o tempo todo e se ele não puder ser alocado na inicialização ou reinicialização do MySQL, ele não irá iniciar.

131210 13:06:25 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
131210 13:06:25 InnoDB: Completed initialization of buffer pool
131210 13:06:25 InnoDB: Fatal error: cannot allocate memory for the buffer pool
131210 13:06:25 [ERROR] Plugin 'InnoDB' init function returned error.

Este não é um travamento do MySQL - o MySQL está falhando ao iniciar - ou reiniciar - porque não há 128 MB de memória livre disponível para alocar.

Erro 12 é "Memória insuficiente" - memória do sistema.

As outras mensagens no seu registro de erros são essencialmente efeitos colaterais.

Eu suspeito que também no seu log você verá isso:

YYMMDD HH:MM:SS mysqld_safe Number of processes running now: 0

Se essa mensagem de erro não for imediatamente precedida por um despejo de memória ("MySQL detectou sinal xx" seguido por um rastreio de pilha e muitas informações de depuração) então não é provável que ocorra uma falha no MySQL - é o MySQL ser morto pelo kernel para tentar evitar que o sistema inteiro falhe devido a uma situação de crise relacionada à memória disponível. O modelo de bifurcação do Apache é notório por isso - quando seu site se torna ocupado, o Apache gera mais filhos, cada um com um apetite por memória.

Você provavelmente encontrará evidências disso em seus syslogs.

Xxx xx xx:xx:xx [machine name] kernel: Out of memory: Killed process xxxx, UID xx, (mysqld).

As opções são adicionar mais memória, ou reduzir o consumo de memória do MySQL via configuração, ou reduzir o número de filhos que o Apache pode gerar, ou eliminar outros processos do sistema, ou separar o banco de dados e servidor web em máquinas diferentes ou adicionar mais troca - mas uma máquina do MySQL que está trocando não terá um desempenho ideal.

Para cenários semelhantes, consulte também:

por 11.12.2013 / 01:53