Fórum Ubuntu Linux - PT
Suporte Técnico => Servidores => Tópico iniciado por: bigbangd2 em 15 de Junho de 2016, 23:45
-
Boa noite a todos.
Sou novo no mundo linux e a algum tempo atrás, tive que montar um servidor ubuntu 14.04 + postgresql 9.0.23 para rodar um sistema da empresa, porem de algum tempo pra cá o sistema ficou um pocou lento e fui verificar o consumo do processador, memória. E alguns processos estão consumindo muita memória.
O servidor tem 12GB de RAM.
Segue imagem do comando Free -m
https://uploaddeimagens.com.br/imagens/c61hir_8-png
Segue imagem gerado pelo htop.
https://uploaddeimagens.com.br/imagens/czdulo_l-png
Eu percebi que existem vários processos consumindo 1.6% da memória para cada processo.
Alguem pede me ajudar a resolver o problema de consumo de memoria do ubuntu?
-
bigbangd2, você quis dizer "alto" consumo de memória e não "auto", correto?
Vamos lá!
Seu htop já ajuda muito aí. O que me faz perguntar, qual o motivo do seu servidor ter o Ubuntu completo (eu digo com a parte gráfica e tudo) instalado aí?
Existe realmente a necessidade de ter a parte gráfica instalada?
A dupla dinâmica Compiz/Unity são grandes devoradoras de recursos da máquina, então...
E olha que seu consumo de RAM está baixo aí na foto. Pelo menos só com dois dias ligados.
O quão alto chega esse consumo de RAM?
É só o compiz mesmo que consome muito? E o banco de dados?
Eu recomendaria o smem para verificar o consumo de RAM do seu servidor: http://xmodulo.com/visualize-memory-usage-linux.html
Se fosse meu servidor eu não instalaria a parte gráfica, só modo texto. Se for o caso de ter que deixar a parte gráfica, tem que começar a desligar todas as "frescuras" do Compiz/Unity, temas alegóricos e qualquer outro adereço carnavalesco que não vão ajudar em nada o seu banco de dados!
-
Bom dia.
Sim, é "Alto" mesmo.
Completo, pois sai de um Windows Server as pressas para montar um Linux, então ainda estou estudando sobre o linux e seu modo texto...
Pelo que ví nas imagens o consumo esta alto, pois na imagem com o free -m informa que a memória esta da seguinte forma:
Informações da memória:
Total: 12000
Usado:11832
Livre: 167
Então com estas informações já da pra ver que a memória esta totalmente consumida e este print foi tirado depois do expediente, não tinha ninguém acessando o Servidor neste momento.
Vou remover o unity e deixar apenas modo texto.
-
Você pode instalar uma interface mais leve como o XFCE ou LXDE.
-
Bom dia.
Sim, é "Alto" mesmo.
Completo, pois sai de um Windows Server as pressas para montar um Linux, então ainda estou estudando sobre o linux e seu modo texto...
Pelo que ví nas imagens o consumo esta alto, pois na imagem com o free -m informa que a memória esta da seguinte forma:
Informações da memória:
Total: 12000
Usado:11832
Livre: 167
Então com estas informações já da pra ver que a memória esta totalmente consumida e este print foi tirado depois do expediente, não tinha ninguém acessando o Servidor neste momento.
Vou remover o unity e deixar apenas modo texto.
Eu não considero que esse consumo esteja tão alto assim, OK, vc tem 12GB, e está fazendo um pouco de swap (pouco mesmo, por volta de 200MB). Meus servidores aqui, todos, fazem um pouco de swap, mesmo as máquinas com 64GB de ram.
É normal que o Linux reporte sempre toda a memória como ocupada. Isso não é indicação de excesso de consumo. Você observa excesso de consumo pela ocupação de swap (memória virtual em disco), que quando é excessiva, faz despencar o desempenho do sistema.
O que me chama mais atenção é a quantidade desses processos "compiz --replace". Verifique se eles são mesmo necessários. O nome "compiz" me remete a alguns benchmarks de vídeo, então talvez seja um comportamento que pare quando você desativar a interface gráfica (*). Não sei dizer se eles seriam do Postgre (aliás, não me lembro de já ter usado Postgre alguma vez).
(*) Agora, relendo a resposta do galactus, vejo que "compiz" é um processo do Unity. Provavelmente dá pra desativá-lo, talvez até sem desativar o Unity, o que vai te manter a interface gráfica funcionando.
-
Bom, se não quiser trocar de ambiente gráfico como sugeriu o agente100gelo, você pode usar a sessão Ubuntu Classic ou Gnome Flashback com metacity. Aí vai desligar o Unity.
È que o Unity é um plugin do Compiz. Então sem Compiz não tem o Unity! Tem que usar outro gerencidor de janelas.
No terminal:
sudo apt-get update; sudo apt-get install gnome-session-fallback
Saia de sua sessão e na tela de login veja as opções de sessões diferentes.
Da uma olhada aqui: http://www.howtogeek.com/189912/how-to-install-the-gnome-classic-desktop-in-ubuntu-14.04/
-
Tem como simplesmente desativar o ambiente gráfico?
-
Tem como simplesmente desativar o ambiente gráfico?
Tem sim!
Ele altera o grub para o sistema dar o boot em modo texto com a parte gráfica desligada. Depois se quiser ele liga a parte gráfica!
Só seguir essas dicas: http://ubuntuhandbook.org/index.php/2014/01/boot-into-text-console-ubuntu-linux-14-04/
Se precisar voltar para parte gráfica: service lightdm start
-
Não dá pra subir com o "startx", depois de logar no console de texto?
-
Não com essa versão do Ubuntu. Tem que ser com o service lightdm start .
-
Obrigado, galera.
Vou retirar o Unity, pois ví que o mesmo é bem pesado e existem outras interfaces mais leves, ou vou deixar no modo texto mesmo.
Tenho que aprender a utiliza-la.
Grande abraço!
-
Vou retirar o Unity, pois ví que o mesmo é bem pesado e existem outras interfaces mais leves, ou vou deixar no modo texto mesmo.
A questão mais relevante de fato é aquela já levantada pelo /galactus/, a razão pela qual um servidor de banco de dados estaria usando uma interface gráfica de desktop (e pior ainda, com Unity), o que em regra não faz o menor sentido, a menos que se tenha uma muito sólida razão para isso, que sequer posso imaginar qual seja.
Um servidor geralmente é uma unidade que deve ser deixada isolada e fisicamente segura, preferencialmente sem monitor e sem teclado, vez que deveria ser raro o acesso físico direto ao equipamento com essa função, sendo comum para administração do servidor e, assim, acesso às funcionalidades e configurações o uso do SSH (Secure Shell).
Há entretanto uma outra questão que é a interpretação do resultado do comando free.
Inicialmente use o formato free -tm o qual empresta maior clareza ao raciocínio.
Note que usando de verdade, no sentido de memória alocada diretamente à programas executando, sua máquina estava usando apenas 1432, tendo livres 10568 de um total de 12000, o que havia é um uso da memória para buffers/cache, ou seja, havia uma enorme folga no sistema, o que geralmente não deveria estar implicando em nenhuma consequência de maior monta, exceto se de fato há uma necessidade de altíssima performance do servidor, mas aí a solução possivelmente já seria mais abrangente, envolvendo o conjunto do hardware e não apenas essa questão tópica e pontual de memória ram.
Esse link eventualmente pode ajudar a interpretar adequadamente o comando free:
Explicando o “free”, do Linux.
https://bitismyth.wordpress.com/2012/05/15/explicando-o-free-do-linux/
Remontar buffers/cache evidentemente tem algum impacto na performance, pois se algo está em buufers/cache chegará em alguma medida mais rápido ao processador, mas isso está longe de poder ser comparado ao acesso swap à disco rígido e seu enorme tempo de latência.
A questão objetiva é: o seu banco de dados está lento?
Note que a solução muito frequentemente passa pelo gerenciamento de buffer no próprio SGBD (Sistema Gerenciador de Banco de Dados ou DBMS - Data Base Management System), que é distinto do gerenciamento efetuado pelo S.O.
Aqui um artigo antigo, mas muito didático e instrutivo sobre buffer cache em SGBD.
Banco de dados
Uma pequena introdução sobre Buffer Cache!
https://joaocosme.wordpress.com/2008/06/24/uma-pequena-introducao-sobre-buffer-cache/
-
A questão objetiva é: o seu bando de dados está lento?
Note que a solução muito frequentemente passa pelo gerenciamento de buffer no próprio SGBD (Sistema Gerenciador de Banco de Dados ou DBMS - Data Base Management System), que é distinto do gerenciamento efetuado pelo S.O.
Às vezes o problema não é nem de gerenciamento de buffer, mas da escolha de um banco de dados adequado pra forma como a aplicação trabalha. O tipo de tabela usada também pode influir muito (p.ex. escolher entre InnoDB e MyISAM no MySQL).
E por fim, mas não menos importante, fazer um projeto eficiente do próprio banco de dados, eliminando redundâncias desnecessárias, criando índices eficientes, e mantendo o próprio banco de dados organizado, com o mínimo de fragmentação interna.