Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vinicius Rangel

[Resolvido] Memória que gasta um server!

Recommended Posts

Fala galera beleza? eu tenho um site de compras coletivas e nosso acesso sempre foi pequeno ao dia, nós temos um bom acesso mensal normalmente acontece picos que aumentam e bastante as visitas.

 

agora o que acontece? eu tenho muitas consultas mais quando eu digo muitas são muitas mesmo e não da para trabalhar com cache a maioria das vezes pois há uma inserção a cada minuto ou até menos.

 

já estudei trabalhar com Espelhos do Mysql não sei bem o termo técnico, essa técnica é a que eu vou criar uma tabela só com dados que vou puxar, exemplo eu tenho uma tabela com 300 ofertas porém eu puxo 40 no máximo.

 

agora estou passando a estudar o node para remodelar o site inteiro.

 

voltando ao problema, o quanto isso pode influenciar na memória do meu server? eu não sou muito bom disso.

 

utilizamos o um Cloud na TeHospedo com Linux.

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

são quantos servers ?

apenas 1 não é ?

 

se o site está chegando a esse ponto, está chegando na hora de pensar num loadbalance

Compartilhar este post


Link para o post
Compartilhar em outros sites

são 2, só que 1 é reservado apenas para disparo de emails, porém agora agente contratou um serviço para disparar os emails e o outro server estamos pensando em um modo de aproveitar.

 

loadBalance seria o que exatamente?

 

o site é bem estruturado COM PDO, POO trabalhamos muito o ajax porém muito bem.

 

o site carrega em até 3 segundos sendo que contém muita imagem (obs: não vou colocar o link pois vão falar que estou fazendo publicidade então quem quiser ver é só mandar mp que mando o link).

 

alguns plugins jquery começaram a dar problema e o combo dinamico para cidade estado no cadastrar as vezes demora de mais para carregar, estou com medo pois a empresa cresceu de uma hora pra outra e isso não estava nos planos, claro erro nosso mais meus chefes queriam algo muito rápido então o site foi maquiado no começo e agora esta recebendo ajustes.

 

o node seria uma boa opção pois eu não iria gastar a ram assim deixando ela inteira para processar os dados server-side que o propio node iria precisar? deu pra pegar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

PDO, POO, ajax não são fatores que tornam o sistma mais rapido.

 

iclusive, a programaçã estrutural consome menos...

 

o tempo de carregamento de 3 segundos é lento. Um site deve carregar em 1 segundo. ou menos.

 

vcs estão com 3 servers, certo ?

 

1. principal (php, mysql, apache)

2. vago

3. para o mailing

 

nesse caso pode montar um loadbalancer entre o server 1 e 2

 

Mas primeiramente verifique one está o maior consummo.

 

Se for largura de banda e, seguindo o que comnetou sobre o site ter muitas imagens pesadas, seria bom analisar possibilida de deixar as imagens no outro server.

 

Uma dica é instalar o ngnx no outro server, sem nenhum módulo. Ele servirá apenas o conteúdo estático:

images, js, css, html. Deixando o server 1 somente para o PHP + MySQL

 

Mas acho que isso não mudará muito.. Pois o ganho com performance deve ser pouco.

 

Se o consumo maior estiver no PHP ou MySQL, recomendo montar um loadbalance.

http://www.youtube.com/watch?v=-WuW27hpHWc]

 

É basicamente espelhamento de servidores.

Haverá um gateway (pnte) por nde todos passam. Nessa ponte é determinado onde o usuário acessará.

O gateway verifica onde está menos carregado, criando um balanço (balance)

Compartilhar este post


Link para o post
Compartilhar em outros sites
PDO, POO, ajax não são fatores que tornam o sistma mais rapido.

primeiro discordo disso, se eu e você fizermos o mesmo site o mesmo projeto haverá diferenças no carregamento do site, talvez o meu ou talvez o seu seja mais rápido. um exemplo básico é não utilizar o POO não reciclar o seu código você terá um site com 600 mil linhas enquanto eu tenho apenas 300.

 

2 serves que são nossos o de mailing agora contratamos uma empresa.

 

vou passar aqui alguns dados técnicos desse mês a partir do dia 1.

 

já tivemos mais de 50 GB de transferência, de escrita e leitura já foram 0,22 milhões de transação (obs: isso aqui não sei o que siginfica).

 

Uso de mais de 1% da CPU:

006.20 % de um nucleo nobody

001.60 % de um nucleo mysql

Uso de mais de 50 MB de RAM

Quantidade de processos em PHP em FastCGI: 0 / 121 (tbm não sei o que é).

 

e a empresa responsável nos aconselho otimizar o banco de dados.

 

ultimo dado é que eu tirando uma média do começo do mês que foi um mês ruim tivemos em torno de 900 visitas diárias .

 

a otimização ao banco já esta sendo processada mais eu ainda penso no node para deixar a ram livre o que vai ajudar no carregamento, o site trabalha com mais de 20 imagens por página com isso quero dizer que são fotos mesmo fora imagem de layout mais essa tem cache.

 

eu poderia trabalhar apenas com os servidores externos para as imagens, seria uma boa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já analisou seus SQL,s se não tem JOIN,s em excesso?

já criou índices para as consultas?

não esta exagerando em logs de acesso de segurança para ver o que os usuários estão fazendo?

criou cache em seu sql?

 

e se não tomar cuidado só o google pode dar milhares de boots em seu sistema consumindo grande parte dos recursos de seu servidor.

 

Porque 900 visitas diárias isso é pouco para uso de mais de 50 MB de RAM

Compartilhar este post


Link para o post
Compartilhar em outros sites

#7 dedicado ou compartilhado..

 

cloud não significa ser dedicado.. a conexão de banda, por exemplo, pode ser estar sendo compartilhada com outros clientes

 

verifique qual a largura de banda real. e quais recursos de hardware são realmente dedicados o u compartilhados.

 

conforme post #8, 900 ~ 2000 acessos diários únicos, é pouca coisa, mesmo apra a sua configuração.

 

mas aí entra a pergunta..

 

é dedicado ou compartilhado ?

 

opa desculpa hinom é dedicado os 2 serves.

 

e WDuarte na verdade existem muitas consultas porém não da pra guardar cache pois são mais de 20 tabelas trabalhando simultaneamente e sempre modificado eu estava pensando no "espelho" que é uma técnica que li mais não me aprofundei.

 

pois não é só o site em sí tenho mais 3 subdominios uma só para vendedores outro para os parceiros e outra a administração geral.

 

 

não é desculpa mais o cliente deu um prazo muito pequeno para apoiar o projeto o cara falo meu se vira é 1 mês ai e faz então o que aconteceu foi tudo maquiado e estamos arrumando de fato agora tudo e como "cresceu" o site esse esta sendo o principal ponto de falha pois há uns 3 meses atrás fiz uma otimização para carregar mais rápido, só voltando nesse assunto até 3 segundos é aceitável principalmente para um site com minhas características e levando em conta que 3 segundos bate em IE no chorme não demora nem 1 eee é só a primeira vez depois vem o cache então o carregamento não passa de 1 segundos.

 

vlw pelo apoio

 

certo.

 

vamos a parte técnica

 

1. capacidade da rede (1mb/s, 10mb/s, 100mb/s, 1gb/s)

2. ambiente

- sistema operacional (nome e versão)

- php, apche/iis/nginx, mysql... (qual versão)

- modulos do webserver (apache, iis, nginx,etc..)

- serviços em execução

- agendamentos (cron, schtask)

 

3. Espaço em disco

4. Harddisk

raid ? sata ? ssd ?

 

5. limite de banda

taxa de transferência

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais 2 pergunta para juntar a essas do hinom...

 

Qual o tamanho completo do seu site e quanto disso (%) representa imagens?

Você menciona que são mais de 20 tabelas, mas qual a página mais acessada, o que consome mais recurso (busca, cadastro, venda)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos lá, como não sou expert em servidor alguns dados eu não vou ter para passar até por que não saber do que se trata.

 

1 - não tenho essa info agora posso pegar e passar mais tarde.

trabalhamos como LINUX não sei a versão.

EasyPHP 5.3.3

e não temos nenhum script shell ou agendamento cron ou schtask

 

80 GB de espaço em disco trabalhando apenas com 1 núcleo.

10 Mbps de banda extrema.

1000 GB de transferência.

 

e respondendo ao PROG.

o site em si eu tenho que ver mais as imagens representam 90% porém desse valor 50% são imagens que representam o layout o restante são imagens para amostra do produto que não tem limite.

 

mais de 20 tabelas contando com o chat online eu vou tirar essa parte, então podemos contar 12 sendo 3 delas fundamentais que estão em todo site, a tabela ofertas que todo o site faz consulta a essa tabela inclusive as areas administrativas a de parceiros e de vendedores, a tabela de usuarios para gerar relatório e a página de compras para controlar tudo, e essas 3 tabelas são todas ligadas a tabela OFERTA tem o ID_PARCEIRO que vincula e na tabela COMPRAS temos ID_OFERTA e ID_USUARIO para saber quem comprou o que, então como é necessário gerar relatório tudo mais tem tabela com financeiro e um sistema de "Email" para os vendedores se comunicar entre eles.

 

o que acontece temos 300 ofertas e essa tabela é muito grande tem mais de 20 campos e atualmente só existe 54 ofertas ativas, ai eu já tenho problema ele vai procurando em 300 itens para retornar 54.

vlw pelo apoio ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok.

 

estou desconfiando que seja algo no mysql

 

 

faltou responder

 

versao do mysql

 

 

Quanto ao sistema operacional, você não possui acesso administrativo ?

Uma alternativa rápida para ver o ambiente é executar o phpinfo()

Execute-o e mostre aqui os dados relevantes.

 

Quanto a agendamentos (cronjob), prcisa ter acesso administrativo para entrar via ssh e verificar se há outros proessos no server, mesmo que não sejam relacionados ao ambiente web.. O propósito é analisar o que é necessário ou não, caso existam.

 

 

Quantida de tabelas não interfere na performance, a não ser esteja fazendo consultas relacionais em mais de 10 tabelas. aí depende muito de como está fazendo a consulta e como está a modelagem do banco

 

 

 

o que acontece temos 300 ofertas e essa tabela é muito grande tem mais de 20 campos e atualmente só existe 54 ofertas ativas, ai eu já tenho problema ele vai procurando em 300 itens para retornar 54.

300, 1000, 50000 registros, seria ainda muito pouco.

não compremete a performance se não estiver fazendo consultas errôneas..

 

uma dica para otimizar é criar uma tabela somente para os items ativos.

seria um mirror da tabela principal, com a diferença que teria somente os ativos.

Quando desativa, exclui da tabela e, quando ativa, inclui..

 

------------

 

Li este post inteiro e ainda não entendi direito qual é o problema, mas vou dar pitaco mesmo correndo o risco de falar bobagem.

 

Até onde eu sei o consumo de memória é diferente de problemas como baixar performance ou páginas lentas. Uma das práticas mais usadas para melhorar o tempo de carregamento das páginas, compilar e comprimir arquivos (especialmente CSS e Javascript), faz aumentar o consumo de memória pelo servidor. Há, portanto, uma troca onde se gasta mais memória para se poupar banda e aumentar a satisfação do usuário. Em servidores compartilhados ou nuvens, não é preciso se preocupar tanto com o consumo de memória, a não ser que ele esteja perigosamente se aproximando do limite estabelecido pelos termos de serviço ou contrato.

 

Mas entendo que você esteja preocupado de que seu script esteja usando os recursos de servidor de forma ineficiente, pois isso impacta no tempo de carregamento das páginas e consequentemente na satisfação do usuário.

 

Então, uma pergunta:

Quanto é a latência da página?

 

Para saber isso é só observar no painel Network (do Chrome) ou Net (do Firebug). Sabendo a latência você saber quanto tempo o servidor está demorando para processar determinada página. Em uma página com muitas informações, como a listagem de todas as ofertas ativas no momento, é comum que a latência fique em torno de 700ms ou até mesmo 1.2 s (dependendo do número de consultas).

 

Depois disso, caso for verificada uma latência muito alta, então deve-se verificar consulta por consulta para saber qual está demorando mais para retornar o resultado.

 

Outras dicas:

  • Optimize as tabelas.
  • Verique se não há nada rodando no cron
  • Entre em contato com o seu provedor de hospedagem e pergunte se esse nível de consumo de memória é normal, se é observado também em sites de outros clientes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinícius,

 

Seu index tem 3.5 megabytes, sendo que 3.3 são apenas imagens, é isso mesmo?

Suas imagens não me parecem otimizadas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos lá, primeiramente responder o hinom.

 

versão do mysql 5.1.56

 

eu não tenho acesso ao servidor, os agendamentos eu consigo dar uma olhada e posto mais tarde.

Quantida de tabelas não interfere na performance, a não ser esteja fazendo consultas relacionais em mais de 10 tabelas. aí depende muito de como está fazendo a consulta e como está a modelagem do banco

 

concordo com você, e sem dúvida vou utilizar o mirror mesmo que os dados sejam poucos já ajuda.

 

mangakah

inicialmente posso ter me expressado de forma errada, o que espero obter são resposta de como meus arquivos e consultas influenciam direto no servidor, pois cada usuário fica alocado numa parte da memória então vamos pensar assim

 

eu tenho 1 GB de ram e cada usuário ocupa 2 MB(apenas exemplo), quando eu tiver 100 usuários online eu não terei mias 1 GB disponível e na medida que for entrando usuário o sistema fica mais pesado.

Utilizo o Chorme para ter os dados de tempo que carrega cada Script e o site em geral e outras coisas também.

estou procurando melhorar a otimização das tabelas.

já retornei e me informaram que há algo errado, eu tive problema com simples combo dinamico de estado cidade, ele no IE chegava demorar 10 segundos pra carregar.

 

Prog.

Não entendi a parte em que você diz otimizada, mais o seu dado deve estar correto.

 

Muito obrigado a todos sei que é um problema muito chato e estou estudando pouco a parte de servidor pois creio que estou mais errado ai, afinal eu não sei muito principalmente em plataforma LINUX.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imagem otimizada seriam imagens com melhor "consumo x beneficio" (menor uso de disco com menor perda de qualidade).

 

Qual seria o efeito colateral causado por páginas que consomem muita banda?

- primeiramente o seu trafego de rede do plano que pode ser consumido rapidamente;

- suas threads e sessões do servidor vão trabalhar mais tempo, por causa do tempo necessário para transferência, logo, haverá mais concorrência;

 

Isto já pode te trazer alguns benefícios.

 

Pelo que vi do site (numa analise superficial), não deveria haver muito consumo de recursos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com relação às imagens, o Yahoo! Smush It é simplesmente fantástico, comprimindo e muito as imagens sem quaisquer perdas visíveis de qualidade.

 

Outras coisas que você pode melhorar seria utilizar as bibliotecas JavaScript, se houverem, vindas do Google API's. Assim, se outro site que a pessoa visitar utilizar tal biblioteca, esta será invocada do cache do navegador, ao invés de vir do seu site.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se não tem acesso administrativo ao server fica difícil fazer algo, pois necessita de autonomia ou colaboração do administrador.

 

o mysql 5.1... peça ao administrador que atualize para a versão mais recente, 5.5 o o que estiver disponível em repositórios confiáveis

 

Na versão 5.5.8 houve uma grande modificação na engenharia do mysql, a qual melhorou em mais de 1000% a performance em ambientes linux .. isso mesmo.. 1000% (um mil porcento)

 

Mesmo que atualize o server e otimize as imagens pesadas, creio que não mudará muita coisa.

 

Ainda acho que seja o modo como monta as suas querys e faz a conexão com o server pelo php

 

Evite consultas desnecessárias por exemplo, sempre vejo no forum usuarios postando seus códigos. Umn exemplo que acho errado é montar o menu do site por meio de consulta no banco de dados.

Qual o problema ?

O prblema é, se o menu é praticamente estático ou não modifica constantemente, não faz sentido buscar no banco de dados.

O ideal é criar um arquivo json ou xml como um cache.

O processo para abrir um simples arquivo texto é menor do que conectar num banco de dados.

 

 

Algo básico que todo developer deve saber é que imagens para web devem possuir resolução de 72 dpi

 

Se usar o photoshop, por exemplo, deixe a compressão jpg entre 65 e 70%, pois manterá uma boa qualidade e reduzirá significamente o peso.

 

Obviamente, no html, se a imagem a ser exibida tem um espaço de 300 x 300, por exemplo, coloque uma imagem de 300x300..

 

mesmo que dê mais trabalho para editar e comprimir as imagens, vale a pena..

se for muito trabalhoso mesmo, crie alguma automação para comprimir as imagens.

 

------------

 

cara vlw pessoal, simplesmente fantástico o apoio de vocês..

 

Prog eu estava analisando algumas coisas e isso influencia sim pois como pode perceber não sabia dessas técnicas para trabalhar com muitas imagens no site, então eu vou traçar um projeto aqui para conseguir fazer isso sem prejudicar o meu site e cara muito bom, obrigado de novo.

 

Bruno, realmente é algo a ser melhorado também utilizo algumas API do google principalmente a do maps, não sei se você chegou a ler tudo mais expliquei que na verdade o cara acha que programar é fácil então queria tudo e pouco tempo e eu para não perder expliquei olha demora mais eu vou fazer assim agente maquia tudo para o usuário e vamos arrumando e por isso vim pedir ajuda de vocês e onde quero chegar com isso é tem alguns codes principalmente JS que estão mal estruturados e nenhum comprimido, mais obrigadão pela dica.

 

Hynom, já entrei em contato para atualizar talvez isso seja o que eu precise até o momento e já estou começando implementar o mirror nas tabelas.

Em relação a consulta desnecessárias também sou chato o problema de tudo foi como falei não existe só o site, eu tenho mais 3 subdominios que compartilham dessas mesmas informações só que de forma diferentes, utilizo POO para pode reutilizar todo código mais de qualquer forma chega no HTML eu tenho que montar um outro bloco pois ele é diferente.

em relação as imagens no Photoshop eu tenho essa preocupação sim mais é totalmente válido avisar.

 

fiquei intrigado com esse trecho

Obviamente, no html, se a imagem a ser exibida tem um espaço de 300 x 300, por exemplo, coloque uma imagem de 300x300..

acontece que agente não trabalha exatamente desse jeito, temos a oferta principal que tem um espaço maior para foto 369 × 260 e os outros espaços que são referente a MAIS OFERTAS que estão 79x 100 algo assim.

mais achamos que seria perder criar uma THUMB pois eu já tenho minha imagem lá então o que acontece a foto é sempre 369x 260 e quando é necessário ela menor nós apenas diminuimos na maioria das vezes proporcionalmente.

 

obrigadão mesmo galera já estou com o novo projeto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Experimente utilizar a extensão YSlow do Firefox (a do Chrome é uma porcaria) que ela analisa seu site de acordo com as regras de otimização do pesquisadas pelo/no Yahoo! Developers e você pode melhorar ainda mais.

 

Mas é como o hinom falou, esses melhorias que eu citei são apenas para aclerar o frontend. Se o seu backend estiver ruim, a resposta vai demorar a chegar, mesmo que quando ela finalmente chegue, seja rapidamente exibida.

 

São quase incontáveis variáveis a serem consideradas para uma boa performance. Não é mexer aqui ou ali...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.