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 / 1109552
Accepted
Leon
Leon
Asked: 2022-09-01 01:04:07 +0800 CST2022-09-01 01:04:07 +0800 CST 2022-09-01 01:04:07 +0800 CST

Como monitorar o uso de memória continuamente com o Linux?

  • 772

Eu tenho um aplicativo de serviço daemon executando um servidor Ubuntu (20.04.1). A memória física total é de 2G e o espaço de troca é de 4G.

Às vezes, meu serviço foi morto pelo sistema operacional silenciosamente, embora eu adicionei OOMScoreAdjust=-1000ao meu arquivo de descrição do serviço systemd em /etc/systemd/system/, mas é um aplicativo crítico que NÃO deve ser morto. Eu acho que a razão pela qual ele foi morto talvez seja por usar muito mais memória.

Eu preciso obter logs detalhados sobre o uso de memória do meu serviço, por exemplo, uma entrada de log a cada minuto, para que eu possa descobrir o valor máximo disso e ajustar os requisitos de outros serviços, como o postgresql.

É um aplicativo daemon e executando um VPS na nuvem, portanto, NÃO posso iniciar um topcomando e assisti-lo continuamente.

Existe uma maneira, em que eu possa gerar tal log?

Obrigado!

linux
  • 3 3 respostas
  • 120 Views

3 respostas

  • Voted
  1. Halfgaar
    2022-09-01T01:26:14+08:002022-09-01T01:26:14+08:00

    Você pode fazer isso de maneira profissional ou hack. Você pode usar várias soluções de monitoramento e/ou contabilidade de processos, ou pode simplesmente executar a systemctl status | grep somethingcada minuto e gravar o uso de memória conforme relatado pelo Systemd (que usa grupos de controle do kernel).

    • 2
  2. Best Answer
    LittleFox
    2022-09-01T02:27:48+08:002022-09-01T02:27:48+08:00

    Com base na resposta de Halfgaar, fazendo de maneira simples, mas semsystemd status | grep something

    Primeiro, eu recomendaria fortemente o uso de uma solução de monitoramento de algum tipo - instalar o Prometheus systemd-exporter deve ser bastante fácil e executar o Prometheus em qualquer outra máquina para recuperar as estatísticas deve ser - pode até estar em um dispositivo em casa/corp por apenas contanto que você depure esse problema. Nesta configuração, as métricas systemd_process_resident_memory_bytes, systemd_process_virtual_memory_bytese systemd_process_virtual_memory_max_bytesprovavelmente seriam as mais interessantes.

    cgroups (tudo isso dependendo da v2) tem um sistema de arquivos em /sys/fs/cgroup no qual você pode consultar muitas informações. O mais interessante para você é memory.stat, do qual a primeira linha anon $someNumberé provavelmente o valor mais interessante (fornecendo bytes de memória em uso que não são suportados por arquivos e, portanto, não podem ser removidos da memória em nenhum outro lugar que não seja swap).

    Se você quiser isso por serviço systemd, você pode usar, por exemplo /sys/fs/cgroup/system.slice/systemd-journald.service/memory.stat, , fornecendo a memória para tudo em systemd-journald.service (o processo para este serviço e tudo iniciado por isso). Você também pode diferenciar entre systeme user(minha sessão gráfica atual no meu laptop, onde escrevo isso, estaria em user) usando /sys/fs/cgroup/system.slice/memory.stat/ .../user.slice/memory.statem vez disso.

    Sua versão mais antiga do Ubuntu pode ter cgroups v1, nesse caso os caminhos são diferentes - dê uma olhada nos documentos para isso: https://manpages.ubuntu.com/manpages/focal/man7/cgroups.7.html para cgroups em geral , https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt#cat-sysfscgroupmemory0memoryusage_in_bytes para controlador de memória cgroup v1.

    • 2
  3. Leon
    2022-09-02T10:26:20+08:002022-09-02T10:26:20+08:00

    Depois de alguns experimentos, sinto que é uma solução boa e simples o suficiente:

    Adicione um trabalho crontab para executar o seguinte comando a cada minuto:

    */1 * * * * top -bn1|grep my_app_name >> /some/where/memory-usage.log

    Com este arquivo de log, posso facilmente descobrir o uso máximo.

    • 0

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