|
O comando vmstat é a ferramenta de monitoramento Linux/Unix mais comum que exibe os valores de estado de um servidor em um dado intervalo de tempo, incluindo os do servidorUso da CPU, uso de memória, troca de memória virtual, leitura e gravação de IO. Esse comando é meu favorito para verificar Linux/Unix, um é que Linux/Unix é suportado, e o outro é que, comparado ao top, consigo ver o uso de CPU, memória e IO de toda a máquina, em vez de apenas ver o uso da CPU e da memória de cada processo (diferentes cenários de uso). Geralmente, o uso da ferramenta vmstat é feito por meio de dois parâmetros numéricos: o primeiro parâmetro é o número de intervalos de tempo amostrados, a unidade é segundos, e o segundo parâmetro é o número de amostras, tais como:
root@ubuntu:~# vmstat 2 1 procs -----------memory---------- ---swap-- -----io---- -system-- ----CPU---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0 2 significa que o estado do servidor é coletado a cada dois segundos, e 1 significa que o estado do servidor é coletado apenas uma vez. Na verdade, durante o processo de inscrição, monitoramos por um período de tempo e, se não quisermos monitorar, podemos simplesmente encerrar o VMSTAT diretamente, por exemplo:
root@ubuntu:~# vmstat 2 procs -----------memory---------- ---swap-- -----io---- -system-- ----CPU---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0 0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0 1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0
Isso significa que o vmstat coleta dados a cada 2 segundos e continua até eu encerrar o programa, e eu encerro o programa após coletar dados 5 vezes aqui. Ok, o comando é introduzido, agora vamos começar a explicar o significado de cada parâmetro. rSignifica rodar a fila (ou seja, quantos processos realmente são alocados à CPU), o servidor que testei está relativamente ocioso no momento, não há programas rodando, quando esse valor excede o número de CPUs, haverá um gargalo da CPU. Isso também está relacionado à carga do topo, geralmente a carga é maior se ultrapassar 3, é maior se ultrapassar 5, e se ultrapassar 10, não é normal, e o estado do servidor é muito perigoso. A carga do topo é semelhante à de uma fila em execução por segundo. Se a fila em execução for muito grande, significa que sua CPU está ocupada, o que geralmente causa um alto uso da CPU. bSignifica o processo bloqueado, isso não é muito o que dizer, o processo está bloqueado, todo mundo entende. SWWPDSe o tamanho da memória virtual usada for maior que 0, significa que sua máquina tem memória física insuficiente e, se isso não for a causa do vazamento de memória do programa, então é hora de atualizar a memória ou migrar as tarefas que consomem memória para outra máquina. Grátis O tamanho da memória física livre, minha memória de máquina é de 8G no total, e o restante é 3415M. buff Sistema Linux/Unix é usado para armazenar o conteúdo no diretório, permissões, etc., cache, provavelmente ocupo mais de 300M nessa máquina CacheO cache é usado diretamente para lembrar os arquivos que abrimos, armazenar os arquivos, eu ocupo mais de 300M na minha própria máquina (aqui está a ideia do Linux/Unix: usar parte da memória física livre para armazenar arquivos e diretórios em cache, para melhorar o desempenho da execução do programa; quando o programa usa memória, buffer/cache será usado rapidamente). ) si Se esse valor for maior que 0, significa que a memória física não é suficiente ou que a memória foi vazada. Minha máquina tem bastante memória e tudo está bem. Então O tamanho do disco gravado na memória virtual por segundo, se esse valor for maior que 0, é o mesmo do que foi dito acima. bi Equipamento de blocoO número de blocos recebidos por segundo, aqui o dispositivo de bloco refere-se a todos os discos e outros dispositivos de bloco do sistema, o tamanho padrão do bloco é 1024byte, não tenho nenhuma operação de E/S na máquina, então sempre foi 0, mas já vi isso em máquinas que lidam com grandes quantidades de dados (2-3T) e pode chegar a 140000/s, e a velocidade de gravação do disco é quase 140M por segundo boO número de blocos enviados por segundo por um dispositivo de blocos, por exemplo, quando lemos um arquivo, bo é maior que 0. bi e bo geralmente ficam próximos de zero, caso contrário o IO é muito frequente e precisa ser ajustado. emO número de interrupções por segundo da CPU, incluindo interrupções de tempo CSO número de trocas de contexto por segundo, por exemplo, quando chamamos uma função do sistema, precisamos trocar de contexto e troca de threadsContexto do processoPor exemplo, em servidores web como Apache e nginx, geralmente fazemos testes de desempenho com milhares ou até dezenas de milhares de concorrências, e o processo de escolha de um servidor web pode ser reduzido pelo pico do processo ou thread, teste de estresse, até que o cs tenha um valor relativamente pequeno, o número de processos e threads seja um valor mais apropriado. As chamadas de sistema também são as mesmas: toda vez que uma função do sistema é chamada, nosso código entra no espaço do kernel, resultando em troca de contexto, o que consome muito recursos, e devemos tentar evitar chamadas frequentes para funções do sistema. Muitas trocas de contexto fazem com que a maior parte do seu processador seja desperdiçada em troca de contexto, resultando em menos tempo para o processador fazer coisas sérias, e o processador não é totalmente utilizado, o que não é recomendável. NósutilizadorTempo de CPUUma vez vi que os EUA estavam perto de 100 e a fila de execução do R chegava a 80 em um servidor que fazia criptografia e descriptografia com muita frequência (a máquina foi testada por estresse e o desempenho não era bom). sySe o tempo de CPU do sistema for muito alto, isso significa que as chamadas do sistema são longas, como operações frequentes de E/S. id Tempo de CPU ocioso, de modo geral, id + us + sy = 100, geralmente acho que id é uso de CPU ocioso, us é uso de CPU do usuário, sy é uso de CPU do sistema. wtEspere o tempo da CPU de entrada.
|