E / S de disco alta quando o cache é usado?


9

Alguns dias atrás, notei uma espera de E / S no disco e uma queda na atividade do disco (o que foi ótimo). Então também noto que meu cache estava cheio (*) e fragmentado. Então eu limpei o cache. Depois disso, a latência e a atividade do disco saltaram para o nível anterior (o que era ruim).

O IOtop mostra que [jbd2 / sda2-8] e [flush-8: 00] estão sempre em cima do uso do disco. Este é um Dell R210, hardware RAID 1 (H200) com muita memória livre (16 GB no total, dos quais cerca de 8 GB são de buffer / cache).

(*) O cache é o cache do código de operação da APC para PHP, o que reduz o acesso ao disco para execução de scripts PHP. O cache estava cheio e fragmentado porque incluía arquivos da instância de desenvolvimento. Quando notei isso, eu os filtrava.

A questão é: por que a E / S do disco aumenta quando teoricamente deve diminuir? Abaixo estão alguns gráficos de munin. O cache estava cheio de 6 a 8 de fevereiro.

insira a descrição da imagem aqui insira a descrição da imagem aqui O cache da APC está ok no momento.

Alterar depois que eu comentei o apc.mmap_file_mask conforme informado por @ cyberx86

insira a descrição da imagem aqui insira a descrição da imagem aqui

E depois de alguns dias https://serverfault.com/a/362152/88934


2
Esse gráfico não mostra um aumento no IO.
31412 psusi

1
Se você usar o mapeamento de memória suportada por arquivo (por exemplo apc.mmap_file_mask=/tmp/apc.XXXXXX), poderá ver E / S elevada. Tente configurar apc.mmap_file_maskpara usar memória compartilhada (por exemplo /apc.shm.XXXXXX) ou para /dev/zero(memória mmapped anônima).
21412 cyberx86

1
@psusi de 6 a 12 de fevereiro a 8 de fevereiro, foi baixo e aumentou.
jcisio

@ cyberx86 Acabei de mudar (comentei essa linha para usar memória mmapped anônima) e parece que ajuda. Vou monitorar mais alguns minutos para ver. Obrigado.
jcisio

2
@psusi Existem / existem vários problemas que só consigo retomar, sem explicar: 1 / falha no cache da APC (mas o cache do SO é atingido por esses arquivos PHP, muito pouca E / S de disco, menos tempo de espera, mas mais tempo médio de E / S , que principalmente a transação do MySQL InnoDB confirma) 2 / APC atingiu o cache, mas a APC estava usando arquivos (então o cache do sistema operacional falha, não sei por que) 3 / breve, minha pergunta é "quando o cache funcionou mal, quase não há disco I / O "- o que você está dizendo é completamente contrário a isso.
jcisio

Respostas:


10

Se você usar o mapeamento de memória suportada por arquivo (por exemplo apc.mmap_file_mask=/tmp/apc.XXXXXX), poderá ver E / S elevada.

Tente configurar apc.mmap_file_maskpara usar memória compartilhada (por exemplo /apc.shm.XXXXXX) ou para /dev/zero(memória mmapped anônima). Manter a configuração indefinida usa como padrão a memória mmapped anônima.

Normalmente, os arquivos mmapped são ótimos:

  • Comparado a armazenar algo totalmente na memória, os arquivos mmapped geralmente requerem menos memória
  • Comparado a salvar algo em um arquivo, os arquivos mmapped requerem menos E / S de disco (já que as gravações podem ser agregadas).

No entanto, em comparação com o armazenamento de algo puramente na memória, eles incluem E / S adicional - consideravelmente quando o arquivo está sendo alterado continuamente. A desvantagem de não usar arquivos mmappedados é a falta de persistência - seu cache não sobreviverá a uma reinicialização, pois é armazenado apenas na memória.

Pode-se sugerir, portanto, que, enquanto o cache estava sendo preenchido e estabilizado, ele estava sofrendo a maior parte das alterações, que precisavam ser constantemente gravadas no disco; quando o cache estava cheio, o ttl de cada objeto diminuía a taxa de entrega dos dados no cache, diminuindo as alterações e reduzindo as gravações em disco.


4

Depois de alguns dias, agora quero voltar com alguns gráficos. A mudança melhora muito essa situação. Reduz tudo, exceto o tempo de serviço de IO (acho que é porque não há mais leitura de arquivos PHP trivial e barata).

insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui

A carga do servidor (já era bastante baixa, então eu não havia descoberto a alteração).

insira a descrição da imagem aqui


Poderia, por favor, fornecer as alterações que você fez?
Mircea Vutcovici

Leia o comentário da pergunta e a resposta aceita. Eu comenteiapc.mmap_file_mask=/tmp/apc.XXXXXX
jcisio

Ei, desculpe incomodá-lo. Você já viu algum efeito colateral ao comentar a linha mmap_file_mask ?. Estou vendo o mesmo problema ... e isso resolve claramente meus problemas de uso de E / S. Mas eu queria saber ... se nada mais vai quebrar! Obrigado!
Jorge Leandro Perez

Não tive nenhum problema em comentar essa linha.
jcisio
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.