O sistema consome toda a memória mesmo após o upgrade de hardware

0

Anteriormente, eu tinha um servidor de 4GB de RAM com o Linode. Várias vezes, eu fiz o comando "free -m" para verificar a memória disponível. Na maioria das vezes, ele mostrava menos de 200 Mb livres. Os processos principais que estou executando continuamente no servidor são:

1) Servidor Apache atendendo cerca de 1.000 acessos por dia. 2) Servidor Tomcat, menos de 100 acessos 3) Solr 4) Três programas Java que não devem consumir mais de 2 GB de RAM.

(Nos processos Java, não estou usando nenhum parâmetro -Xmx)

Então, mudei para outro host dedicado. Mas aqui estou recebendo o mesmo tipo de problema. Meu solto sendo morto se eu tentar executar qualquer programa Java adicional (que não precisa de mais 512 Mb). Mesmo, às vezes, ele é automaticamente "morto", talvez quando outros processos Java estão trabalhando muito.

Aqui está a saída que recebi em /var/log/kern.log quando tentei saber o motivo pelo qual o solr é "morto" sem nenhum motivo.

Dec 14 20:25:03 xyzserver kernel: [4680101.245182] Out of memory: Kill process 7481 (java) score 184 or sacrifice child
Dec 14 20:25:03 xyzserver kernel: [4680101.246851] Killed process 7481 (java) total-vm:22841896kB, anon-rss:987160kB, file-rss:0kB

Não sei por que sempre recebo menos de 200 MB como memória livre.

Saída gratuita -m:     root @ xyzserver: / home # livre -m

             total       used       free     shared    buffers     cached
Mem:          7963       7805        157         24          1         57
-/+ buffers/cache:       7746        216
Swap:         3813       2420       1393

python ps_mem.py output

root@xyzserver:/home# python ps_mem.py
 Private  +   Shared  =  RAM used   Program

  4.0 KiB +   9.5 KiB =  13.5 KiB   acpid
  4.0 KiB +  20.5 KiB =  24.5 KiB   upstart-socket-bridge
  4.0 KiB +  21.0 KiB =  25.0 KiB   upstart-file-bridge
  4.0 KiB +  24.5 KiB =  28.5 KiB   atd
  4.0 KiB +  25.0 KiB =  29.0 KiB   upstart-udev-bridge
  4.0 KiB +  27.5 KiB =  31.5 KiB   vsftpd
  4.0 KiB +  37.5 KiB =  41.5 KiB   init
  4.0 KiB +  44.5 KiB =  48.5 KiB   dbus-daemon
  4.0 KiB +  47.5 KiB =  51.5 KiB   systemd-logind
  4.0 KiB +  51.5 KiB =  55.5 KiB   systemd-udevd
 24.0 KiB + 117.0 KiB = 141.0 KiB   getty (6)
104.0 KiB +  48.5 KiB = 152.5 KiB   flock (5)
120.0 KiB +  49.5 KiB = 169.5 KiB   sh (5)
156.0 KiB +  41.0 KiB = 197.0 KiB   irqbalance
264.0 KiB + 183.5 KiB = 447.5 KiB   sshd (2)
480.0 KiB +  46.5 KiB = 526.5 KiB   rsyslogd
524.0 KiB + 123.0 KiB = 647.0 KiB   screen (4)
384.0 KiB + 369.0 KiB = 753.0 KiB   cron (6)
840.0 KiB + 123.0 KiB = 963.0 KiB   bash (5)
 73.0 MiB + 138.0 KiB =  73.2 MiB   mysqld
 58.1 MiB +  27.4 MiB =  85.5 MiB   apache2 (31)
  3.2 GiB +   3.0 MiB =   3.2 GiB   java (7)
---------------------------------
                          3.4 GiB
=================================

cat / proc / meminfo

root@xyzserver:/home# cat /proc/meminfo
MemTotal:        8154636 kB
MemFree:          180992 kB
Buffers:             692 kB
Cached:            36560 kB
SwapCached:       142536 kB
Active:          2775768 kB
Inactive:        1070008 kB
Active(anon):    2765376 kB
Inactive(anon):  1059320 kB
Active(file):      10392 kB
Inactive(file):    10688 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       3905532 kB
SwapFree:         613012 kB
Dirty:                 0 kB
Writeback:          1916 kB
AnonPages:       3667288 kB
Mapped:            28880 kB
Shmem:             15796 kB
Slab:              59552 kB
SReclaimable:      22052 kB
SUnreclaim:        37500 kB
KernelStack:        3592 kB
PageTables:        42956 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     7982848 kB
Committed_AS:    8087572 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      281716 kB
VmallocChunk:   34359421140 kB
HardwareCorrupted:     0 kB
AnonHugePages:     14336 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       55572 kB
DirectMap2M:     8310784 kB

Como eu posso ver, o ps_mem.py está mostrando menos que 4Gb. Por que é free -m mostrando toda a memória consumida. Como eu controlo este comportamento? Aparentemente, não estou utilizando toda a memória. Como eu posso fazer isso ? Preciso trocar a memória swap?

    
por akshayb 15.12.2014 / 18:43

2 respostas

0

Não faça nada : o kernel do Linux está usando o máximo de memória possível, em vez de deixá-lo inativo, sem fazer nada, alocando memória livre no cache.

Você pode controlar o cache, mas isso faria o seu sistema piorar como todo acesso ao disco seria acesso ao disco em vez de Acesso ao disco em cache.

(na verdade você deveria ter se mudado para um servidor contendo ainda mais memória enquanto você está rodando em swap)

Aqui está o meu sistema:

free -m
             total       used       free     shared    buffers     cached
Mem:          3886       3777        109        256         24       2572
-/+ buffers/cache:       1180       2705
Swap:         9755          0       9755

Também é muito baixo, mas usando uma tonelada de memória para cache e quando os aplicativos precisam de memória, ele será liberado do cache.

    
por Fabby 16.12.2014 / 10:49
0
% bl0ck_qu0te%

Você sempre usa cânones para atirar em pássaros? Mil visitas por dia? A sério? Por que você não usa uma solução mais leve então o monstro apache?

Pelo menos ajuste sua configuração do Apache, caso contrário não é de se admirar que você fique sem memória. Meu palpite é que o apache é capaz de levar vários hits de 100K, da maneira como é configurado. Mas, para fornecer tantas conexões, basta que você use a maior parte do RAM.

Se eu fosse você, eu descartaria o apache completamente e pegaria Lighttpd para melhor distribuição da memória.

    
por s1mmel 31.03.2016 / 16:16