Sei o que faz ... Acho que estou curioso para saber por que está corrigindo um problema em um aplicativo que herdei. Eu assumi um aplicativo tomcat bastante grande, que atua como servidor Red5 para vários clientes flex, e lida com muitos dados de interação em tempo real, que acabam sendo liberados para uma API Rails. O problema estava sob muita carga ao longo do tempo, e as transferências para esses clientes aumentaram para 3-400 ms, onde normalmente é <100 ms. O cliente suspeitou que fosse um problema de memória que realmente nunca pudemos confirmar. Um dia, em um servidor intermediário, eu estava executando um teste de carga em que basicamente parou de receber solicitações ou era extremamente lento. Por capricho eu enviei
sync && echo 3 > /proc/sys/vm/drop_caches
e magicamente o servidor voltou à vida e começou a funcionar a toda velocidade, atendendo a essas conexões. Isso foi uma coincidência ou esse comportamento faz sentido e por quê?
sync
ou apenas oecho
. Em seguida, tentar descobrir por que o servidor é lento nos casos corrige este (? É maxed A CPU é IO maxed É a paginação do sistema?)Respostas:
Qualquer disco rígido tem uma ordem de magnitude mais lenta que a sua RAM, portanto, o linux usa qualquer RAM sobressalente que você possa ter flutuando para armazenar em cache os dados do sistema de arquivos. No entanto, isso realmente nunca deve causar problemas de desempenho, a menos que haja algo errado com seu disco rígido ou os serviços no servidor estejam tentando gravar dados a uma taxa tão alta por tanto tempo que o servidor não possa armazenar em cache ou recuperar os dados. Também pode ser um sinal de que seu disco rígido está chegando ao fim de sua vida útil.
De qualquer forma:
man sync
informará o que a sincronização faz [libera os buffers FS]command1 && command2
decompõe-se em 'se command1 terminar com êxito e execute command2'command1 || command2
conhecido como 'se command1 falhar, execute command2'O comando que você recebeu é uma correção temporária, na melhor das hipóteses, e é sintomático de algo mais errado com seu sistema. Seus discos estão no fim da vida útil ou o sistema está com pouca potência para o que você está fazendo com ele, ou ambos .
fonte
A AWS não é para os fracos de coração, e você acabou de encontrar um dos motivos. A má situação de E / S de disco na AWS é bem conhecida e um dos principais fatores a serem considerados para quem cria um aplicativo sobre ele. Existem instâncias otimizadas para disco e alguns outros truques (como criar um RAID 0 a partir de volumes EBS) que você pode tentar melhorar. Certifique-se de usar instâncias maiores (pelo menos m1.large) para garantir que o kernel possa armazenar em buffer a E / S do disco.
fonte