sexta-feira, 15 de janeiro de 2021

Administração do Linux para DBA's do SQL Server: Verificando Network I/O

 


Quando se trata de rede, o Linux tinha uma vantagem histórica sobre o Windows até o lançamento do Windows XP. Por este motivo, o Windows possui mais ferramentas e recursos mais avançados para monitorar o uso da rede, portanto, nesta dica, mostraremos os comandos que você pode usar no Linux.

netstat

Este comando é bem conhecido por todos os usuários do Windows. Seu nome é uma abreviação de estatísticas de rede e é isso que este comando faz. O uso é quase idêntico ao do Windows, mas no Linux este comando fornece mais informações. Agora vou mostrar algumas invocações de netstat que você provavelmente pode usar mais.

netstat –i
   

O argumento –i lista as interfaces de rede. Com este comando você pode ver o nome da interface e os pacotes enviados e recebidos corretamente (TX-OK, RX-OK), o número de pacotes rejeitados por erro de checksum (TX-ERR, RX-ERR), os pacotes descartados devido a um buffer cheio (TX-DRP, RX-DRP) e os pacotes caíram porque o sistema estava muito ocupado (TX-OVR, RX-OVR).

netstat -ltu
   

Os parâmetros –ltu exibem as portas de escuta (l), TCP (t) e UDP (u). Se você usar apenas o argumento –l, ele também mostrará a lista de soquetes de domínio UNIX ativos, que é a maneira que o Linux usa para se comunicar entre os processos.


Além disso, se você adicionar o argumento –p (netstat -ltup), ele mostrará qual programa está ouvindo.

slurm

Slurm é uma ferramenta de monitoramento de rede baseada em terminal. Este utilitário não vem com a distribuição padrão, então você terá que instalá-lo a partir dos repositórios com o seguinte comando. Lembre-se de usar o sudo se não estiver executando como root.

apt-get install slurm
   

O uso desta ferramenta é muito fácil; você só precisa passar como argumento o nome da interface que deseja monitorar. Por exemplo, se você deseja monitorar a interface eth0, você deve executar o seguinte.

slurm –i eth0
   

Como você pode ver na imagem acima, este utilitário consiste em um painel superior com um gráfico exibindo a atividade da rede e um painel inferior com as informações como texto.

speedometer

Esta é uma ferramenta gráfica de monitoramento de rede cujos gráficos são muito mais fáceis de entender do que os de slurm. Para instalar esta ferramenta, você deve executar a seguinte frase.

apt-get install speedometer
   

Ao usar o velocímetro, você deve passar como argumentos a interface de rede que deseja monitorar como de costume com qualquer ferramenta de monitoramento de rede, mas este utilitário permite monitorar várias interfaces ao mesmo tempo. Funciona assim: por exemplo, se você deseja monitorar a velocidade de transmissão e recepção na interface eth0, você deve executar o seguinte comando.

speedometer –tx eth0 –rx eth0
   

Além disso, se você deseja monitorar a velocidade de transmissão e recepção nas interfaces eth0 e eth1, o comando a ser executado é o seguinte.

speedometer –tx eth0 –rx eth0 –tx eth1 –rx eth1
   

Na captura de tela a seguir, você pode observar que o utilitário desenha um histograma para cada argumento –tx ou –rx ajustando sua escala independentemente um do outro.


ifstat

Trata-se de uma ferramenta de monitoramento de rede com uma interface bastante básica, o que a torna uma boa opção caso seja necessário processar ou formatar os dados brutos em outro aplicativo. Para instalar esta ferramenta, basta executar o seguinte código em seu shell como root ou adicionar sudo no início do comando.

apt-get install ifstat
   

Na próxima captura de tela você pode ver a execução de ifstat.


nethogs

Sempre que você precisar ver o uso da rede por aplicativo, o utilitário nethogs fará o trabalho. Este programa se assemelha ao utilitário principal do Linux, mas em vez de mostrar o uso da CPU por aplicativo, ele mostra o uso da rede.

Como você pode ver na imagem anterior, este utilitário mostra uma grade classificada por uso de rede. Ele mostra o identificador do processo, o usuário que está executando o programa que está usando a rede, o caminho do programa, a interface de rede usada por esse programa e a velocidade de envio e recebimento expressa em kilobytes por segundo.

Algo a se notar é que este utilitário precisa ser executado como root. Para instalar este programa, basta executar o seguinte código em um shell.

apt-get install nethogs

Fique ligado para mais dicas do SQL Server no Linux .

Administração do Linux para DBA's do SQL Server: Verificando I/O De Disco


      Com o lançamento do SQL Server, a Microsoft decidiu expandir o suporte do sistema operacional para servidores Linux. Nós, como administradores de banco de dados, precisamos saber o desempenho dos subsistemas de discos subjacentes. Como a maioria dos administradores do SQL Server não está acostumada a trabalhar com Linux, você pode não saber como fazer esta tarefa. Nessa dica vou mostrar algumas ferramentas que vão te ajudar.

Uma das funções de um administrador de banco de dados é garantir que o subsistema de armazenamento que suporta nossos bancos de dados esteja funcionando corretamente. Obviamente, temos as visualizações e funções de gerenciamento dinâmico de I/O, como sys.dm_io_pending_io_requests e sys.dm_io_virtual_file_stats , mas às vezes isso não é suficiente. Na verdade, estamos acostumados a olhar para contadores de desempenho relacionados ao disco em servidores em execução no Windows e até mesmo usar outras ferramentas.

Ferramentas Linux Disponíveis

Agora que o SQL Server também funciona no Linux, devemos nos familiarizar com as ferramentas existentes que nos permitirão fazer nosso trabalho exatamente como fazemos no Windows.

iostat

Este é o comando mais básico para verificar a I / O do disco e geralmente você o instalará por padrão, mas se não, poderá instalar o pacote sysstat que inclui a ferramenta iostat.

apt-get install sysstat
   

Basicamente, este comando mostra estatísticas de CPU e I / O para dispositivos e partições como dois relatórios separados, mas com os argumentos –c e –d você pode forçá-lo a exibir apenas o relatório de CPU ou de dispositivos, respectivamente. Para os fins desta dica, vou concentrar a atenção no relatório de I / O.

Como você pode ver na imagem anterior o comando mostra uma tabela com uma linha para cada dispositivo instalado e quatro colunas que nos informa sobre a Transferência por Segundo (tps), leituras e gravações por segundo expressas em kilobytes e a quantidade de kilobytes lidos e escrito.

Até agora, vimos uma imagem estática de nosso desempenho de I / O, mas este comando também nos permite mantê-lo em execução em um intervalo de tempo especificado (em segundos). Quando executamos iostat com um intervalo, ele muda seu comportamento e, para cada execução, mostra o delta de leituras e gravações da execução anterior. O comando a seguir mostra a cada quatro segundos o relatório de uso do dispositivo até que Control + C seja pressionado.

iostat –d 4
   

Na captura de tela a seguir é o resultado da execução do comando anterior.

Mas essa ferramenta já possui mais recursos. Quando iostat é executado com o parâmetro –x, ele retorna estatísticas estendidas. As estatísticas mais úteis estão nas colunas avgqu-sz, que é o comprimento médio da fila; e uma espera que se refere ao tempo gasto na fila e no atendimento a uma solicitação. Abaixo estão duas capturas de tela com a saída deste comando.


Na próxima tabela, copiei a descrição da página de manual de cada coluna das imagens.


Descrição

rrqm / s

O número de solicitações de leitura mescladas por segundo que foram enfileiradas no dispositivo.

wrqm / s

O número de solicitações de gravação mescladas por segundo que foram enfileiradas no dispositivo.

r / s

O número de solicitações de leitura emitidas para o dispositivo por segundo.

w / s

O número de solicitações de gravação emitidas para o dispositivo por segundo.

rkB / s

O número de kilobytes lidos do dispositivo por segundo.

wkB / s

O número de kilobytes gravados no dispositivo por segundo.

avgrq-sz

O tamanho médio (em setores) das solicitações que foram emitidas para o dispositivo.

avgqu-sz

O comprimento médio da fila de solicitações emitidas para o dispositivo.

await

O tempo médio (em milissegundos) para solicitações de E / S emitidas para o dispositivo a ser atendido. Isso inclui o tempo gasto pelas solicitações na fila e o tempo gasto atendendo-as.

r_await

O tempo médio (em milissegundos) para que as solicitações de leitura emitidas para o dispositivo sejam atendidas. Isso inclui o tempo gasto pelas solicitações na fila e o tempo gasto atendendo-as.

w_await

O tempo médio (em milissegundos) para que as solicitações de gravação emitidas para o dispositivo sejam atendidas. Isso inclui o tempo gasto pelas solicitações na fila e o tempo gasto atendendo-as.

svctm

O tempo médio de serviço (em milissegundos) para solicitações de E / S que foram emitidas para o dispositivo. Atenção! Não confie mais neste campo. Este campo será removido em uma versão futura do sysstat.

%util

Porcentagem de tempo de CPU durante o qual as solicitações de E / S foram emitidas para o dispositivo (utilização da largura de banda do dispositivo). A saturação do dispositivo ocorre quando este valor está próximo a 100%.

iotop

Este utilitário exibe o uso de I/O por processo ou threads em uma grade interativa que se assemelha ao utilitário htop.


Como você pode ver na imagem anterior, este utilitário mostra os threads ou processos (mostrarei como alternar entre os dois quando descrever seus argumentos). A maioria das colunas é autoexplicativa, apenas para mencionar que a coluna IO lista a I / O total para cada processo, incluindo uso de disco e troca; e SwapIn lista a atividade de troca para cada processo.

A seguir está uma tabela com os parâmetros mais usados.


Descrição

-o

Mostra apenas processos ou threads que estão realmente fazendo I / O, em vez de mostrar todos os processos ou threads. Isso pode ser alternado dinamicamente pressionando o.

-b

Ative o modo não interativo (modo em lote). Útil para registrar o uso de I / O ao longo do tempo.

-P

Mostrar apenas processos. Normalmente o iotop mostra todos os tópicos.

-a

Mostra I / O acumulada em vez de largura de banda. Nesse modo, o iotop mostra a quantidade de processos de I / O realizados desde que o iotop foi iniciado.

Mas sendo iotop um utilitário interativo, existem alguns atalhos de teclado que são úteis.



Descrição

setas esquerda e direita

Altera a coluna de classificação.

r

Inverte a ordem de classificação.

o

Mostra apenas processos ou threads que estão realmente fazendo I / O.

p

Mostre processos em vez de threads.

a

Exibir I / O acumulada em vez de largura de banda.

Eu

Altera a prioridade de um thread ou processo.

Fique ligado para mais dicas do SQL Server no Linux .

quinta-feira, 14 de janeiro de 2021

Administração do Linux para DBA's SQL Server: Verificando o uso da CPU


SQL Server on Linux - Administration


       Com o lançamento de 2016 do SQL Server, a Microsoft decidiu expandir o SQL Server para rodar em servidores Linux. Como a maioria dos DBAs do SQL Server não está acostumada a trabalhar com Linux, há tarefas comuns, como verificar o espaço livre em disco ou o consumo de CPU, que podem ser difíceis. Nesta dica, farei uma pequena lista do que precisamos saber sobre a administração do Linux para começar a usar o SQL Server no Linux.

Comando TOP

O comando de console mais básico para verificar o consumo de CPU é o TOPA saída deste comando consiste em um cabeçalho que mostra informações gerais e uma grade com as informações por processo. Dê uma olhada na próxima captura de tela.



Para aqueles de nós acostumados com o Windows, é importante entender o que cada linha significa, então irei linha por linha descrevendo seu significado.

Linha 1

  • Hora atual do sistema
  • Tempo desde que o sistema foi ligado
  • Número de usuários conectados
  • Média de carga medida em intervalos de 5, 10 e 15 minutos

Em sistemas Linux, a média de carga mede a porcentagem de tarefas enfileiradas (CPU ou E / S) em um período de tempo específico. Este valor também depende do número de núcleos da CPU. Por exemplo, um sistema com um núcleo com uma carga média de 1 tem uma carga total, mas se o sistema tiver dois núcleos, ele tem uma meia carga. Como regra geral, se a média de carga for um número maior que o número de núcleos de seu sistema, isso significa que seu sistema está sob estresse. Lembre-se de que a média de carga pode ser um número muito maior do que o número de núcleos em seu sistema devido a tarefas em espera.

Linha 2

  • Número total de tarefas
  • Número de tarefas realmente em execução
  • Número de processos à espera de um evento para continuar a execução
  • Número de tarefas paradas
  • Número de processos em estado zumbi

Aqui precisamos explicar o que é um processo zumbi. Em um sistema Linux, quando um processo filho termina, ele mantém o id do processo na tabela de processos, para que o processo pai possa ler o status de saída do processo filho. Esse processo filho concluído é chamado de zumbi. Depois que o processo pai lê o status de saída filho, o zumbi é removido. O problema com zumbis é que o Linux tem um número limitado de ids de processo (que você pode encontrar lendo o arquivo / proc / sys / kernel / pid_max) e em circunstâncias muito raras isso pode levar à falta de recursos.

Linha 3

Esta linha mostra informações sobre o uso do tempo de CPU.

  • Porcentagem de tempo de CPU no modo de usuário
  • Porcentagem de tempo de CPU no modo de sistema
  • Porcentagem de tempo de CPU no modo de usuário de baixa prioridade (o Linux chama de Nice Priority)
  • Porcentagem de tempo ocioso da CPU
  • Porcentagem de tempo de CPU aguardando E / S
  • Porcentagem de interrupções de hardware de manutenção de tempo de CPU
  • Porcentagem de interrupções de software de manutenção de tempo de CPU
  • Porcentagem de tempo de CPU A CPU virtual espera por uma CPU real enquanto o hipervisor está atendendo a outro processador virtual (isso é chamado de tempo roubado)

Linha 4

Esta linha nos fornece informações sobre a memória física do nosso sistema.

  • Memória total
  • Memoria livre
  • Memoria usada
  • Memória usada pelo Buffer Cache

Linha 5

Esta linha mostra informações sobre as partições de troca, o equivalente ao arquivo de paginação do Windows.

  • Espaço de partição de troca total.
  • Espaço de partição de troca livre.
  • Espaço de troca usado.
  • Memória física disponível.

Grade de Processo

O painel inferior do comando superior exibe uma grade com informações sobre os processos em execução.

.


Descrição

PID

O Identificador do Processo

USER

Usuário que possui o processo

PR

Prioridade do processo. Se você vir RT nesta coluna, significa que o processo está sendo executado em tempo real.

NI

Boa prioridade. Se for um valor negativo, significa que o processo está sendo executado em alta prioridade. Um valor positivo significa que o processo está sendo executado em baixa prioridade.

VIRT

Quantidade de memória virtual usada pelo processo, expressa em kilobytes.

RES

Quantidade de memória física usada pelo processo expressa em kilobytes.

SHR

Quantidade de memória compartilhada expressa em kilobytes.

S

Status do processo
D = ininterrupto hibernação
R = executando
S = hibernando
T = interrompido pelo sinal de controle de trabalho
t = interrompido pelo depurador durante o rastreamento
Z = zumbi

%CPU

A porcentagem de uso da CPU por determinada tarefa. Se você vir um número maior que 100%, não entre em pânico, é porque o comando top não está sendo executado no modo thread.

% MEM

A porcentagem de memória física usada pelo processo.

TIME +

Quantidade de tempo de CPU usado pelo processo.

COMMAND

O comando que iniciou o processo.

HTOP como alternativa

Existe uma alternativa ao top, que é uma ferramenta de monitoramento do Linux chamada htop ( http://hisham.hm/htop/ ). A vantagem dessa ferramenta é que ela usa cores e mostra informações sobre CPU, Memória e Troca como barras gráficas.


Normalmente esta ferramenta não está disponível nas instalações básicas do Linux, então você terá que instalá-la de seus repositórios de distribuição ou baixar os pacotes do site htop .

Se você estiver usando o Ubuntu, o seguinte comando instalará o htop.

sudo apt-get  install htop


Fique ligado para mais dicas do SQL Server no Linux .