AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1152795
Accepted
iostrym
iostrym
Asked: 2024-02-02 22:06:40 +0800 CST2024-02-02 22:06:40 +0800 CST 2024-02-02 22:06:40 +0800 CST

Como monitorar o consumo de RAM no Red Hat 7.9

  • 772

Servidor Red Hat 7.9 com 512 GB de RAM.

Muitas vezes recebemos alertas sobre o swap estar cheio. A troca é frequentemente usada em 99%. Nosso administrador de servidor nos disse que é normal que o Linux tenha o swap usado 100%. Não há como verificar o consumo real de RAM.

O nosso está sempre em torno de 99% em nosso servidor usando SAR:

Memory & Swap
=============
                    kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
01/11/2024    9869583 517833049     98.13       977 285023790 319073740     58.60 340613912 162678784    614843
01/12/2024    4181004 523521628     99.21      1349 287757937 323767076     59.46 346046454 162168337   1115633
01/13/2024    2567787 525134845     99.51       844 285755715 327744180     60.19 352144911 157031086    654493
01/14/2024    2827695 524874937     99.46       844 285135562 328070493     60.25 352003644 156742082    742178
01/15/2024    3482087 524220545     99.34      1838 280133083 332837943     61.13 353676271 153986907    998373
01/16/2024    2152990 525549642     99.59       839 273578756 342252974     62.86 362157756 147013751   1136099
01/17/2024    4575639 523126993     99.13      2418 271393967 340334778     62.51 355987093 150884756   1033531
01/18/2024    2205445 525497187     99.58      2413 282078831 328216144     60.28 353148916 156770066    625021
01/19/2024    9451354 518251278     98.21      1542 293648210 305176716     56.05 352495156 150264497    680464

Na web posso ver que não é normal ter alto uso de swap. Também notei que após uma reinicialização, a troca fica muito baixa durante vários dias. Quando um processo consome toda a RAM (erro da nossa parte), o uso de swap aumenta para 100% e nunca diminui, mesmo que o processo correspondente seja eliminado. É por isso que os servidores que ficam ligados há semanas têm 100% de swap usado.

Disseram-me para monitorar o uso de swap usando sar (pswpin/s pswpout/s).

Quando o uso de swap é 100%, não posso ter problemas, mas quando os processos começam a ser eliminados devido a problemas de RAM, posso ver valores altos para pswpin/s pswpout/s (sar -W).

Durante uma semana posso monitorar essa atividade para verificar se tive problemas de RAM ou não.

Meu problema é o seguinte: Como posso evitar que o problema de RAM ocorra? O que posso usar para verificar a% de RAM usada (enquanto é sempre 99% no SAR...)? Como obter o valor real como no sistema operacional Windows? Para ter certeza de encerrar o processo que começa a ocupar toda a RAM.

Gostaria de gerar um aviso quando o uso de RAM for de 80%.

Eu sei que free -h poderia ser usado, mas não sei como interpretar isso. o mesmo para "topo".

Por exemplo, comparo a saída sar com free -h e saída superior e não vejo valores correspondentes ... :-(

[XXXXX@YYYYYY ~]$ sar -r
Linux 3.10.0-1062.4.1.el7.x86_64 (XXXXXX)   02/02/2024  _x86_64_    (64 CPU)
10:30:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty

11:55:01 AM   7916396 519786232     98.50      4688 436720908 164442944     30.20 256757744 249531760      1548
12:00:01 PM   1106680 526595948     99.79      4688 436883120 173459020     31.86 263356476 249699552      4184
12:05:01 PM    742056 526960572     99.86      4688 436447380 173668428     31.90 264216776 249402376      5380
12:10:01 PM  11076780 516625848     97.90      4688 434763392 162944064     29.93 255501116 247835888      3732
12:15:01 PM   7891084 519811544     98.50      4688 434921220 165981024     30.48 258656448 247885164       600
Average:      2201518 525501110     99.58      5447 448667788 154099963     28.30 257069976 255388912      3431
[XXXXX@YYYYYY ~]$ free -h
              total        used        free      shared  buff/cache   available
Mem:           503G         81G        4.3G        1.3G        417G        419G
Swap:           15G         11G        4.4G
[XXXXX@YYYYYY ~]$ top
top - 12:22:09 up 9 days, 18:55, 48 users,  load average: 4.21, 4.69, 5.06
Tasks: 2645 total,   5 running, 2488 sleeping,   0 stopped, 152 zombie
%Cpu(s):  6.8 us,  3.4 sy,  0.0 ni, 89.8 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 52770262+total,  6888876 free, 83310656 used, 43750310+buff/cache
KiB Swap: 16777212 total,  4582892 free, 12194320 used. 44195168+avail Mem 

Não sei quais valores verificar top ou free -h para saber a% real de uso de consumo de RAM.

Muito obrigado por ajudar

linux
  • 4 4 respostas
  • 144 Views

4 respostas

  • Voted
  1. Best Answer
    shodanshok
    2024-02-07T16:15:01+08:002024-02-07T16:15:01+08:00

    Seu sistema não parece ter nenhum problema relacionado à troca. No entanto, ao mencionar o alto uso de swap e processos eliminados, você pode ter problemas ocasionais de pouca memória.

    Por padrão, espera-se que alguma troca seja usada mesmo em sistemas com bastante memória livre, já que o kernel troca proativamente a memória inativa para ter mais espaço para buffer/cache. Você tem mais de 500 GB de RAM e uma partição swap de 16 GB, então é normal preenchê-la com dados inativos.

    Se a troca estiver causando problemas de desempenho, você poderá limitar ou desabilitar seu uso com o seguinte:

    • sysctl vm.swappiness=0significa que o sistema não deve usar nenhuma troca, a menos que a memória livre esteja perigosamente muito baixa. Para persistir durante a reinicialização, você precisa colocar vm.swappiness=0no /etc/sysctl.confarquivo;

    • swapoff -adesabilitar à força qualquer troca. Observe que se você realmente precisar de alguma troca (ou seja: para absorver um pico de consumo de memória), seu sistema poderá encerrar algum processo por meio do OOM-killer. Para persistir durante a reinicialização, você precisa remover a entrada de troca do /etc/fstabarquivo;

    • desabilite a troca de disco e use zrampara criar um dispositivo compactado na RAM. zrampode ser muito útil, mas eu não usaria essa solução a menos que fosse realmente necessária e aplicável à sua carga de trabalho.

    Mais algumas informações:

    Quando um processo consome toda a RAM (erro da nossa parte), o uso de swap aumenta para 100% e nunca diminui, mesmo que o processo correspondente seja eliminado

    Quando existe um processo trocado, a troca deve ser liberada. Se a troca for preenchida constantemente, provavelmente significa que outro processo não trocado foi eliminado, em vez do processo trocado. Você pode usar dmesgpara verificar o kernel OOM.

    Quando o uso de swap é 100%, não posso ter problemas, mas quando os processos começam a ser eliminados devido a problemas de RAM, posso ver valores altos para pswpin/s pswpout/s (sar -W).

    Isso significa que o kernel está tentando (sem sucesso) liberar alguma memória para evitar OOM.

    Gostaria de gerar um aviso quando o uso de RAM for de 80%.

    sarnão tem capacidade de alerta, até onde eu sei. Você precisa analisar freea saída e/ou usar uma ferramenta de monitoramento de rede como zabbix, netdata, etc.

    Eu sei que free -h poderia ser usado, mas não sei como interpretar isso. o mesmo para "topo".

    Bem, você realmente deveria ler as páginas de manual relevantes. Resumindo, você pode verificar as colunas usedou availablerelatadas por free.

    • 2
  2. Turdie
    2024-02-06T16:33:55+08:002024-02-06T16:33:55+08:00

    Eu sugeriria instalar em cima

    https://www.redhat.com/sysadmin/analyzing-linux-server-performance-atop

    Isso cria instantâneos de desempenho em um intervalo predefinido, para que você possa ver o que leva ao consumo de memória.


    Editar em relação à pergunta de acompanhamento para rede

    O kernel Linux não mantém contadores para o número de acessos à rede emitidos por processo ou por thread. Como consequência, não é possível analisar qual processo e/ou thread causa maior carga caso o top apresente uma alta utilização em uma de suas interfaces de rede. O módulo opcional do kernel netatop pode ser carregado para coletar estatísticas sobre os pacotes TCP e UDP que foram transmitidos/recebidos por processo e por thread. Assim que o top descobre que este módulo está ativo, ele mostra as colunas SNET e RNET na tela genérica para a quantidade de pacotes transmitidos e recebidos por processo. Quando a tecla 'n' é pressionada, mostra contadores detalhados sobre o número de pacotes transmitidos/recebidos via TCP e UDP, os tamanhos médios desses pacotes e a largura de banda total consumida para entrada e saída por processo/thread. https://www.atoptool.nl/netatop.php

    • 1
  3. symcbean
    2024-02-07T17:49:22+08:002024-02-07T17:49:22+08:00

    Isso é principalmente um comentário.

    Nosso administrador de servidor nos disse que é normal que o Linux tenha o swap usado 100%

    Hum, não. Espero que esta história tenha perdido parte de seu significado original ao ser recontada. Além de alguns casos extremos muito raros, usar ativamente o swap em um host que atua como servidor é RUIM.

    O que também é muito peculiar é que o espaço de troca é dimensionado em cerca de 3% da RAM. Estou lutando para imaginar por que isso faria sentido.

    Também fico me perguntando qual é o seu papel nesta história, se você não é o administrador do sistema.

    quando os processos começam a ser eliminados devido a problemas de RAM

    Isso NÃO deve acontecer em um host de servidor configurado/gerenciado corretamente.

    Além disso, as ferramentas que você está tentando usar para esta tarefa são úteis para diagnóstico, mas ruins para monitoramento. Existem muitas ferramentas excelentes disponíveis, muitas delas como software livre, para monitoramento; Zabbix, Nagios, Icinga, LibreNMS, Check_MK, para citar apenas alguns. Não tente escrever o seu próprio, a menos que você tenha 1) um bom conhecimento de administração de sistema 2) um bom motivo para não usar uma ferramenta disponível.

    • 1
  4. AlexD
    2024-02-07T21:22:37+08:002024-02-07T21:22:37+08:00

    A utilização da memória do Linux pode ser confusa e a saída de diferentes ferramentas difícil de interpretar. Você pode ler algo como https://www.linuxatemyram.com/ como material introdutório primeiro.

    A saída de tope freemostra que seu sistema subutiliza a RAM - apenas 81 GB são usados ​​após 9 dias de atividade e todo o resto são buffers e cache que podem ser descartados se o sistema precisar de mais memória para programas. Mas se tope freeforem executados logo após um programa grande ter sido eliminado pelo OOM e a memória ter sido liberada, essas métricas serão irrelevantes.

    A primeira sarsaída mostra mais memória comprometida (~60%) e mais memória ativa (360GB) versus a segunda (~30% e 260 GB respectivamente). Esses valores estão longe da situação de falta de memória e processos eliminados. O primeiro sarmostra medições durante vários dias sem qualquer alteração significativa, portanto, não há vazamentos lentos de memória.

    O uso de swap no seu caso é insignificante (16 GB de 512 GB) e tem pouco efeito. Seu sistema pode funcionar muito bem com 100% de uso de swap, desde que você tenha memória suficiente na availablecoluna de entrada topou freesaída. Você pode aumentar o tamanho do swap para manter sua utilização abaixo de 100%, melhorando o desempenho do sistema liberando a RAM real. Fique de olho nas vmstatmétricas de swap-in (si) e swap-out (so) - elas devem estar próximas de zero na maior parte do tempo. Tenha em mente que a porcentagem de uso de swap é um efeito de segunda ordem do consumo de memória causado por um processo descontrolado.

    Considerando todos os detalhes disponíveis e a ausência de vazamentos lentos de memória, eu suspeito que às vezes você tem um processo descontrolado que consome toda a memória rapidamente, forçando o uso de swap para 100% e então esse processo é eliminado pelo OOM. Você precisa verificar se há mensagens OOM em seus logs; eles devem conter informações sobre o processo encerrado e seu consumo de memória. Depois de identificar o processo descontrolado, você pode definir seus limites de memória em sua unidade systemd para que ele seja eliminado antes de consumir todos os recursos do sistema.

    Você também pode inspecionar a utilização da memória pelos processos individuais a qualquer momento, executando top -o RESo que classificaria os processos pelo consumo de memória residente.

    Você pode instalar algo simples como monit para monitorar o consumo de memória/swap do sistema e o consumo de memória por processo para processos selecionados.

    • 1

relate perguntas

  • Como descobrir detalhes sobre hardware na máquina Linux?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve