Uso de memória - Ubuntu Server x64

Iniciado por lucascatani, 07 de Agosto de 2012, 15:43

tópico anterior - próximo tópico

lucascatani

Boa tarde. Estou com uma situação em alguns servidores, que está gerando algumas dúvidas.

- O servidor funciona normalmente, começa usando um valor X de memória.
- A partir de certo tempo de funcionamento ele passa a usar quase toda a memória, "sobrando" em torno de 150 MB livres. Não importa a quantia de memória total do sistema.
- Se eu usar o comando echo 3 > /proc/sys/vm/drop_caches ele libera a memória.

As dúvidas:

1 - Pelo simples fato de estar com quase toda a memória usada com arquivos e programas em cache, vai reduzir o desempenho do meu servidor?

2 - É normal acontecer isso?

3 - Ao executar o comando e liberar a cache, eu estou deixando o servidor mais "leve"e mais "rápido"? Caso sim, devo programar um evento para limpar a cache de tempos em tempos? (2 horas por exemplo)

clcampos

Se o server estiver com o preload instalado é normal ficar o tempo todo com memória ocupada, mas isso não é um problema no linux.

No caso em que seu server esta com a memória ocupada você encontra problemas de lentidão?
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

lucascatani

Citação de: clcampos online 07 de Agosto de 2012, 18:53
Se o server estiver com o preload instalado é normal ficar o tempo todo com memória ocupada, mas isso não é um problema no linux.

No caso em que seu server esta com a memória ocupada você encontra problemas de lentidão?

E aí clcampos, tudo beleza?

Sobre o preload, vem instalado por padrão no ubuntu 12.04? Não instalei por outro meio.

Os usuários se queixam de que quando o servidor fica uns 2 dias sem reiniciar, a abertura de arquivos em um compartilhamento SAMBA fica mais lenta. Se é realmente verdade, não sei.

Um abraço!

irtigor

Então teste a transferência, após um reboot e depois de rodar dois dias sem reiniciar. Minha reposta: não, sim e não.

galactus

lucascatani, é preciso ser um pouco mais específico.

Quais serviços o seu servidor está rodando?

Desses, qual serviço você notou que consome quase toda a memória do servidor?

Eu já notei várias vezes que o Ubuntu vai ficando lento a medida que passam os dias com ele ligado sem reiniciar.

Já o consumo exagerado de memória pode ser algum aplicação ou serviço com Bug ou o próprio kernel do Ubuntu que não é lá essas coisas como exemplo de estabilidade!

Você pode procurar uma correlação entre os serviços ou aplicações que estão na memória e fazer uma busca no Tio Google sobre problemas com elas quanto ao consumo de RAM no Ubuntu.

Quanto ao preload, o Ubuntu não vem com ele instalado por padrão, e nas suas configurações padrões ele não pode consumir toda a sua RAM!
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

lucascatani

#5
Galactus.. obrigado pela ajuda, segue ao longo do post as respostas...

Citação de: galactus online 08 de Agosto de 2012, 22:26
lucascatani, é preciso ser um pouco mais específico.

Quais serviços o seu servidor está rodando?
DNS, DHCP, SQUID, SAMBA, NETFILTER, CRON, SSH

Citar
Desses, qual serviço você notou que consome quase toda a memória do servidor?

SAMBA - Ao iniciar uma transferência, o servidor começa a usar toda a memória e não libera mais.
Citar
Eu já notei várias vezes que o Ubuntu vai ficando lento a medida que passam os dias com ele ligado sem reiniciar.

Já o consumo exagerado de memória pode ser algum aplicação ou serviço com Bug ou o próprio kernel do Ubuntu que não é lá essas coisas como exemplo de estabilidade!

Você pode procurar uma correlação entre os serviços ou aplicações que estão na memória e fazer uma busca no Tio Google sobre problemas com elas quanto ao consumo de RAM no Ubuntu.

Quanto ao preload, o Ubuntu não vem com ele instalado por padrão, e nas suas configurações padrões ele não pode consumir toda a sua RAM!

Abaixo free -m

             total       used       free     shared    buffers     cached
Mem:          3880       3303        577          0         50       2974
-/+ buffers/cache:        278       3602
Swap:         3987          0       3987


Segue abaixo  ps aux do ubuntu, após uma transferência em rede (samba)



USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  24344  2348 ?        Ss   13:25   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    13:25   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    13:25   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S    13:25   0:00 [kworker/u:0]
root         6  0.0  0.0      0     0 ?        S    13:25   0:00 [migration/0]
root         7  0.0  0.0      0     0 ?        S    13:25   0:00 [watchdog/0]
root         8  0.0  0.0      0     0 ?        S    13:25   0:00 [migration/1]
root         9  0.0  0.0      0     0 ?        S    13:25   0:00 [kworker/1:0]
root        10  0.0  0.0      0     0 ?        S    13:25   0:00 [ksoftirqd/1]
root        12  0.0  0.0      0     0 ?        S    13:25   0:00 [watchdog/1]
root        13  0.0  0.0      0     0 ?        S    13:25   0:00 [migration/2]
root        14  0.0  0.0      0     0 ?        S    13:25   0:00 [kworker/2:0]
root        15  0.0  0.0      0     0 ?        S    13:25   0:00 [ksoftirqd/2]
root        16  0.0  0.0      0     0 ?        S    13:25   0:00 [watchdog/2]
root        17  0.0  0.0      0     0 ?        S    13:25   0:00 [migration/3]
root        19  0.0  0.0      0     0 ?        S    13:25   0:00 [ksoftirqd/3]
root        20  0.0  0.0      0     0 ?        S    13:25   0:00 [watchdog/3]
root        21  0.0  0.0      0     0 ?        S<   13:25   0:00 [cpuset]
root        22  0.0  0.0      0     0 ?        S<   13:25   0:00 [khelper]
root        23  0.0  0.0      0     0 ?        S    13:25   0:00 [kdevtmpfs]
root        24  0.0  0.0      0     0 ?        S<   13:25   0:00 [netns]
root        26  0.0  0.0      0     0 ?        S    13:25   0:00 [sync_supers]
root        27  0.0  0.0      0     0 ?        S    13:25   0:00 [bdi-default]
root        28  0.0  0.0      0     0 ?        S<   13:25   0:00 [kintegrityd]
root        29  0.0  0.0      0     0 ?        S<   13:25   0:00 [kblockd]
root        30  0.0  0.0      0     0 ?        S<   13:25   0:00 [ata_sff]
root        31  0.0  0.0      0     0 ?        S    13:25   0:00 [khubd]
root        32  0.0  0.0      0     0 ?        S<   13:25   0:00 [md]
root        34  0.0  0.0      0     0 ?        S    13:25   0:00 [khungtaskd]
root        35  0.0  0.0      0     0 ?        S    13:25   0:00 [kswapd0]
root        36  0.0  0.0      0     0 ?        SN   13:25   0:00 [ksmd]
root        37  0.0  0.0      0     0 ?        SN   13:25   0:00 [khugepaged]
root        38  0.0  0.0      0     0 ?        S    13:25   0:00 [fsnotify_mark]
root        39  0.0  0.0      0     0 ?        S    13:25   0:00 [ecryptfs-kthrea]
root        40  0.0  0.0      0     0 ?        S<   13:25   0:00 [crypto]
root        48  0.0  0.0      0     0 ?        S<   13:25   0:00 [kthrotld]
root        49  0.0  0.0      0     0 ?        S    13:25   0:00 [scsi_eh_0]
root        50  0.0  0.0      0     0 ?        S    13:25   0:00 [scsi_eh_1]
root        51  0.0  0.0      0     0 ?        S    13:25   0:00 [scsi_eh_2]
root        52  0.0  0.0      0     0 ?        S    13:25   0:00 [scsi_eh_3]
root        53  0.0  0.0      0     0 ?        S    13:25   0:00 [scsi_eh_4]
root        54  0.0  0.0      0     0 ?        S    13:25   0:00 [scsi_eh_5]
root        59  0.0  0.0      0     0 ?        S    13:25   0:00 [kworker/u:6]
root        80  0.0  0.0      0     0 ?        S<   13:25   0:00 [devfreq_wq]
root       187  0.0  0.0      0     0 ?        S    13:25   0:00 [kworker/2:1]
root       245  0.0  0.0      0     0 ?        S    13:25   0:00 [kworker/3:1]
root       247  0.0  0.0      0     0 ?        S<   13:25   0:00 [kdmflush]
root       259  0.0  0.0      0     0 ?        S<   13:25   0:00 [kdmflush]
root       267  0.0  0.0      0     0 ?        S    13:25   0:00 [jbd2/dm-0-8]
root       268  0.0  0.0      0     0 ?        S<   13:25   0:00 [ext4-dio-unwrit]
root       357  0.0  0.0  17224   636 ?        S    13:25   0:00 upstart-udev-bridge --daemon
root       364  0.0  0.0  21824  1644 ?        Ss   13:25   0:00 /sbin/udevd --daemon
root       431  0.0  0.0      0     0 ?        S    13:25   0:00 [irq/43-mei]
root       479  0.0  0.0      0     0 ?        S<   13:25   0:00 [kpsmoused]
root       487  0.0  0.0      0     0 ?        S    13:25   0:00 [kworker/3:2]
root       690  0.0  0.0  15180   388 ?        S    13:26   0:00 upstart-socket-bridge --daemon
root       902  0.0  0.0      0     0 ?        S    13:26   0:00 [jbd2/sdb-8]
root       903  0.0  0.0      0     0 ?        S<   13:26   0:00 [ext4-dio-unwrit]
root       949  0.0  0.1 122420  5804 ?        Ss   13:26   0:00 smbd -F
root       955  0.0  0.0  49948  2868 ?        Ss   13:26   0:00 /usr/sbin/sshd -D
syslog     968  0.0  0.0 249464  1584 ?        Sl   13:26   0:00 rsyslogd -c5
102        973  0.0  0.0  23808   940 ?        Ss   13:26   0:00 dbus-daemon --system --fork --activation=upstart
root       976  0.0  0.0  91260  2020 ?        Ss   13:26   0:00 nmbd -D
root      1028  0.0  0.0 122524  1644 ?        S    13:26   0:00 smbd -F
root      1032  0.0  0.0  16024   964 tty4     Ss+  13:26   0:00 /sbin/getty -8 38400 tty4
root      1045  0.0  0.0  16024   964 tty5     Ss+  13:26   0:00 /sbin/getty -8 38400 tty5
bind      1056  0.0  0.8 400948 32932 ?        Ssl  13:26   0:02 /usr/sbin/named -u bind
root      1064  0.0  0.0  16024   964 tty2     Ss+  13:26   0:00 /sbin/getty -8 38400 tty2
root      1065  0.0  0.0  16024   960 tty3     Ss+  13:26   0:00 /sbin/getty -8 38400 tty3
root      1067  0.0  0.0  16024   960 tty6     Ss+  13:26   0:00 /sbin/getty -8 38400 tty6
root      1075  0.0  0.0   4320   684 ?        Ss   13:26   0:00 acpid -c /etc/acpi/events -s /var/run/acpid.socket
dhcpd     1084  0.0  0.1  18768  4520 ?        Ss   13:26   0:00 /usr/sbin/dhcpd -f -q -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf eth0
root      1089  0.0  0.0  15972   692 ?        Ss   13:26   0:00 /usr/sbin/irqbalance
whoopsie  1091  0.0  0.1 187568  4264 ?        Ssl  13:26   0:00 whoopsie
proxy     1093  0.0  1.2 111908 47740 ?        Ss   13:26   0:05 /usr/sbin/squid3 -N -YC -f /etc/squid3/squid.conf
root      1095  0.0  0.0  19104   876 ?        Ss   13:26   0:00 cron
daemon    1096  0.0  0.0  16900   380 ?        Ss   13:26   0:00 atd
proxy     1140  0.0  0.0  12412  1064 ?        Ss   13:26   0:00 (unlinkd)
root      1183  0.0  0.0  69980  3044 ?        Ss   13:26   0:00 /usr/sbin/apache2 -k start
www-data  1186  0.0  0.0  69712  2124 ?        S    13:26   0:00 /usr/sbin/apache2 -k start
www-data  1190  0.0  0.0 424488  2560 ?        Sl   13:26   0:00 /usr/sbin/apache2 -k start
www-data  1191  0.0  0.0 424488  2560 ?        Sl   13:26   0:00 /usr/sbin/apache2 -k start
root      1301  0.0  0.0  54444  1604 tty1     Ss   13:26   0:00 /bin/login --     
root      1305  0.0  0.0      0     0 ?        S    13:26   0:00 [flush-252:0]
root      1452  0.0  0.1  23372  4288 tty1     S    13:26   0:00 -bash
root      1586  0.0  0.0      0     0 ?        S    14:22   0:00 [kworker/0:0]
root      2575  0.0  0.0      0     0 ?        S    15:04   0:00 [kworker/0:1]
root      2576  0.0  0.0      0     0 ?        S    15:05   0:00 [kworker/1:2]
root      2594  0.0  0.0  21820  1188 ?        S    15:14   0:00 /sbin/udevd --daemon
nobody    2597 10.9  0.1 124676  4208 ?        S    15:15   0:16 smbd -F
root      2598  0.4  0.0      0     0 ?        S    15:15   0:00 [flush-8:16]
root      2602  0.0  0.0  21820  1064 ?        S    15:16   0:00 /sbin/udevd --daemon
root      2607  0.0  0.0      0     0 ?        S    15:17   0:00 [kworker/1:1]
root      2608  0.0  0.0  18400  1268 tty1     R+   15:17   0:00 ps aux

galactus

Qual a versão do Samba?

Seu servidor samba é Wins server ou não?

Se ele for Wins server para cada requisição de transferência de arquivo ele vai abrir um smbd para atender essa requisição, assim o consumo de RAM vai aumentar e você vai poder ver vários processos do smbd abertos.

O Samba 3.4 tinha um vazamento de memória que fazia ele consumir muita RAM. Dizem que tinha sido consertado.

Qual seu smb.conf?  Ou você usa o Swat para configurar o Samba?
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

lucascatani

#7
Citação de: galactus online 11 de Agosto de 2012, 08:30
Qual a versão do Samba?
3.6.3
Citar
Seu servidor samba é Wins server ou não?
Não
Se ele for Wins server para cada requisição de transferência de arquivo ele vai abrir um smbd para atender essa requisição, assim o consumo de RAM vai aumentar e você vai poder ver vários processos do smbd abertos.

O Samba 3.4 tinha um vazamento de memória que fazia ele consumir muita RAM. Dizem que tinha sido consertado.
[/quote]
Citar
Qual seu smb.conf?  Ou você usa o Swat para configurar o Samba?

Não uso o swat. Uso o smb.conf original alterando apenas:

usershare owner only = false
security = share
workgroup = GRUPO

E crio os compartilhamentos.

Abaixo meu smb.conf


[global]
usershare owner only = false
   workgroup = L9WEB
   server string = %h - L9WEB
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   security = share
   encrypt passwords = true
   passdb backend = tdbsam
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes
[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700
[PROGRAMAS]
path = /dados/programas
browseable = yes
writable = yes
guest ok = yes
create mask = 777
directory mask = 777
[PROGRAMAS2]
path = /dados/programas2
browseable = yes
writable = yes
guest ok = yes
create mask = 777
directory mask = 777
[DRIVERS]
path = /dados/drivers
browseable = yes
writable = yes
guest ok = yes
create mask = 777
directory mask = 777
[BACKUP]
path = /mnt/seagate/backup
browseable = yes
writable = yes
create mask = 777
directory mask = 777
guest ok = yes
[BACKUP_CLIENTES]
path = /mnt/seagate/backup_clientes
browseable = yes
writable = yes
create mask = 777
directory mask = 777
guest ok = yes
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no


zekkerj

Lucas, esse comportamento de consumo de memória é normal no Linux. Ele tem mesmo a tendência a ocupar toda a memória livre, que fica alocada como "buffers". Quando vc usa o "drop_caches" ele libera os buffers, liberando a memória livre. Cosmético.

Observe apenas se há consumo de swap, que é o verdadeiro indício de que há consumo excessivo de memória. Pelo que vc mostrou, o swap está zerado, então eu buscaria outro motivo pra lentidão que não o consumo de memória.

Uma coisa que observo é que vc está usando o modo "security = share". Você tem clientes Windows 98? O "security = share" é só pro Win98 pra trás. Windows XP pra frente usa "security = user".
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

lucascatani

Citação de: zekkerj online 12 de Agosto de 2012, 16:21
Lucas, esse comportamento de consumo de memória é normal no Linux. Ele tem mesmo a tendência a ocupar toda a memória livre, que fica alocada como "buffers". Quando vc usa o "drop_caches" ele libera os buffers, liberando a memória livre. Cosmético.

Observe apenas se há consumo de swap, que é o verdadeiro indício de que há consumo excessivo de memória. Pelo que vc mostrou, o swap está zerado, então eu buscaria outro motivo pra lentidão que não o consumo de memória.

Uma coisa que observo é que vc está usando o modo "security = share". Você tem clientes Windows 98? O "security = share" é só pro Win98 pra trás. Windows XP pra frente usa "security = user".

Sobre o security = share: SE eu colocar security = user, toda vez que eu tentar listar as pastas do servidor, me pede usuário  e senha, caso coloque share, funciona corretamente

zekkerj

Não funciona corretamente, funciona como você quer. É diferente... ;)
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

lucascatani

Citação de: zekkerj online 16 de Agosto de 2012, 11:38
Não funciona corretamente, funciona como você quer. É diferente... ;)

Isso, quando me refiro a corretamente, quero dizer que funciona conforme minha necessidade.

Minha postagem acima está errada. Pode-se usar security = user e ter o mesmo resultado. Meu erro foi deixar uma linha em branco depois de [global]. Removendo a linha, tudo "certo".