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 / 1008523
Accepted
Amos
Amos
Asked: 2020-03-27 06:02:16 +0800 CST2020-03-27 06:02:16 +0800 CST 2020-03-27 06:02:16 +0800 CST

Ubuntu 18.04: clamav rodando, tomcat morrendo

  • 772

Ubuntu 18.04. 2 GB de RAM + 512 MB de troca.

Ao executar o clamav, ele consome 800+mb de memória porque carrega todas as assinaturas na memória. Por causa disso, configurei para rodar todos os dias às 3 da manhã, em vez de continuar.

Até agora, tomcat e clamav se deram muito bem. Ontem à noite, às 3 da manhã, o serviço tomcat foi desligado quando o clamav começou a funcionar.

[4643256.375812] OOM killed process 8145 (clamscan) total-vm:1149268kB, anon-rss:969476kB, file-rss:4kB
[7667218.452649] OOM killed process 8865 (java) total-vm:4568248kB, anon-rss:1067312kB, file-rss:0kB

Mar 26 03:00:31 user systemd[1]: tomcat.service: Main process exited, code=killed, status=9/KILL
Mar 26 03:00:31 user systemd[1]: tomcat.service: Failed with result 'signal'.
Mar 26 03:17:08 user systemd[1]: Reloading The Apache HTTP Server.
Mar 26 03:17:08 user systemd[1]: Reloaded The Apache HTTP Server.

Eu sei que a atualização é uma resposta imediata, mas até lá, minhas perguntas são:

  1. Existe uma maneira de executar o clamav sem consumir 800+mb?

  2. Existe uma maneira de reiniciar automaticamente o tomcat se algo assim acontecer novamente?

  3. O Java realmente levou 4.568.248kB = 4,5gb ou está faltando alguma coisa?

Edite dentro do arquivo tomcat.service, tenho o seguinte:

Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"
service clamav ubuntu-18.04 tomcat9
  • 1 1 respostas
  • 342 Views

1 respostas

  • Voted
  1. Best Answer
    Piotr P. Karwasz
    2020-03-27T12:59:18+08:002020-03-27T12:59:18+08:00

    Java não usou 4,5 GiB de memória física, esse número se refere à memória virtual. Você tem cerca de 128 TiB de espaço de endereço de memória virtual (cf. esta resposta ) e é usado para acessar a memória física, mas também os arquivos como se estivessem na memória. A maior parte do espaço virtual alocado não usa nenhuma memória física e contém apenas 0s ou pontos para dados presentes em discos rígidos.

    O que você está interessado é o número anon-rss : é a memória física usada pelo processo, principalmente para uso privado, e não é apenas um cache/cópia de um arquivo (diferente de file-rss ). O kernel não pode simplesmente deletar esta memória e você obtém um OOM.

    A resposta de Janne à sua pergunta anterior aponta para uma solução para o seu problema:

    1. Você deve ajustar as configurações de memória do Tomcat, o que pode ser feito adicionando opções à variável JAVA_OPTSem /etc/default/tomcat9. Os mais comumente usados ​​são -Xms(tamanho mínimo de heap) e -Xmx(tamanho máximo de heap). Por exemplo, você pode usar:

      JAVA_OPTS="-Djava.awt.headless=true -Xms256m -Xmx1024m"
      

      A JVM usará entre 256 MiB e 1024 MiB de espaço de heap (além de outros tipos de memória Java) e poderá devolver parte dele, quando não for usada.

    2. Sua quantidade de swap é bem pequena, especialmente se você não tiver muita memória RAM. Estenda-o para cerca de 4 GiB (cf. este artigo ) para que o kernel possa trocar alguma memória em vez de matar o Tomcat.

    3. Para configurar uma reinicialização automática do Tomcat após uma falha, edite o tomcat.servicearquivo:

      systemctl edit --full tomcat.service
      

      e adicione à [Service]seção, por exemplo:

      RestartSec=5s
      Restart=on-failure
      

      Você pode encontrar os valores possíveis Restartna documentação do SystemD .

    • 1

relate perguntas

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