por favor, dê uma olhada no uso de RAM do meu servidor

1

eu sou um noob com servidores. Eu tenho um centos5.5 vps com 512mb de RAM. Meu objetivo é que ele hospede apenas uma loja magento. Eu instalei o Magento no servidor sem qualquer painel de controle, apenas instalando a lâmpada eu mesmo e quaisquer extensões php necessárias para instalar o Magento.

Assim que eu visito minha loja de magento, de repente o carneiro no vps é quase completamente usado, com apenas cerca de 100 mb sobrando. Por favor, veja esta imagem do htop tirada depois que eu visitei o site.

link

Como você pode ver, há apenas cerca de 100mb à esquerda. Isso é normal? Eu estou querendo saber se eu poderia ter feito algo estúpido com o servidor que torna muito recurso com fome. Eu instalei o apache do repositório base centos, a versão 5.3 do php do repositório ius e o mysql 5.1 também do ius repo. Eu não mudei nenhum dos arquivos de configuração padrão para nenhum destes exceto para fazer memory_minimum 256 em php.ini. Existe alguma coisa que eu possa fazer para libertar mais ram?

Não tenho a menor ideia, mas vejo que cada daemon do Apache está usando 8% do RAM disponível e, para o AFAIK, cada visitante precisa de um daemon do Apache. Então eu ficaria sem ram com apenas um punhado de visitantes. Obrigado pelo seu conselho.

    
por user66779 13.01.2011 / 19:54

4 respostas

5

Meu palpite é que você está bem: A memória é usada pelo cache de disco do kernel Linux (veja link para mais detalhes ).

Sobre o Apache: Embora todo usuário precise de uma instância do Apache, se você usar uma versão não encadeada do Apache (como é o padrão), ele usa isso por um curto período de tempo, enquanto uma única página é transmitida para o Apache. do utilizador. Depois disso, o processo do apache lidará com a próxima solicitação, provavelmente por um usuário diferente. Dessa forma, você pode manipular muitas conexões com apenas relativamente poucos processos do apache.

Edit: Um exemplo para a saída do free:

             total       used       free     shared    buffers     cached
Mem:           498        434         64          0        194         77
-/+ buffers/cache:        162        336
Swap:         4102          0       4102

Os 64MB listados como gratuitos são a quantidade de memória que não é usada de forma alguma. Mas (quase) todos os buffers / memória cache podem ser usados pelo sistema operacional imediatamente, se necessário, de modo que a memória disponível em potencial é de fato quase 350 MB em vez de 64 MB.

    
por 13.01.2011 / 20:05
1

O Centos usará qualquer RAM disponível como cache de disco e buffers para acelerar as coisas. Conforme você acessa os arquivos, eles serão armazenados em cache na memória. O cache ainda faz parte da memória livre e será abandonado se for requerido em outro lugar pelo sistema. Dê uma olhada aqui para mais informações.

    
por 13.01.2011 / 20:03
0

Ao visitar a loja Magneto, o mysql recupera dados do disco e, em seguida, mantém em cache (RAM) para uma recuperação mais rápida. Isso é normal.

    
por 13.01.2011 / 19:59
0

512MB não é muito. PHP em combinação com o MPM prefork do Apache significa que você consome isso muito rapidamente .

De fato, você precisa dividir o seu total de RAM (512 MB) pelo memory_limit em /etc/php.ini para obter um número razoável para o Apache MaxClients . O wiki do Magneto diz que 64MB é recomendado, mas pode não ser suficiente . Supondo que você vá com 64MB, isso dá a você 8 clientes. Realmente, um pouco menos, como você também está executando mysql e algumas outras coisas no mesmo sistema. Você pode se safar com um número maior do que isso, mas em algum momento, seu sistema irá morrer.

Lembre-se de que cada solicitação precisa ser respondida por um servidor prefork, não por cada visitante. Se cada solicitação for atendida com rapidez suficiente, talvez você não precise de tantos servidores quanto você pensa.

Holdddd onnnn um segundo aqui. A documentação de requisitos do sistema para a versão atual diz que memory_limit deve ser pelo menos 256MB , e eles na verdade, pedir 512MB. Isso dá a você 2 ou 1 trabalhadores Apache, o que não é realmente sustentável.

Então. Você precisará repensar. Você pode jogar mais RAM no problema (altamente recomendado), ou usar um Apache MPM diferente (pode ser problemático com seu aplicativo PHP; não sei), ou use lighttpd + fastcgi .

Na verdade, você provavelmente terá que obter mais RAM em qualquer caso - ou usar um aplicativo totalmente diferente.

(BTW: desative yum-updatesd , e substitua por yum-cron . Você deve ter atualizações automáticas, mas você não precisa do daemon parado na RAM o dia todo.)

    
por 13.01.2011 / 21:21