Ir para o conteúdo

 Voltar a OpenACS: Des...
Tela cheia

Configuração de servidor

8 de Agosto de 2012, 10:30 , por Desconhecido - | 1 Pessoa seguindo este artigo.
Visualizado 29 vezes

Bom dia a todos. 

Trabalho no MDA e o servidor do portal, que está em OpenACS, apresenta alguns problemas, provavelmente por falta de configuração.
O servidor tem alguns milhares de acessos por dia e estes acessos estão todos sendo salvos em memória. Logicamente chega um momento crítico em que a swap está praticamente toda ocupada e o servidor começa a ficar imensamente lento, o que é normal por conta desse uso excessivo de memória. Pergunta: existe alguma coisa que possa ser feita para que isso não aconteça com tanta frequência?

 

Deste já agradeço a atenção.

Autor: Cinthia Haeser


1Um comentário

  • 12cf2da8b1a1753868c7e20816b7dab5?only path=false&size=50&d=404Eduardo Santos(usuário não autenticado)
    8 de Agosto de 2012, 11:48

     

    Olá Cinthia,

    Primeiro precisamos entender a forma com a qual as requisições são tratadas. O tuning ou ajuste fino do servidor nunca é uma operação que depende somente de um fator, assim como envolve o conhecimento do ambiente operacional e dos softwares envolvidos.

    Digo isso para me ater a uma parte de seu comentário:

    O servidor tem alguns milhares de acessos por dia e estes acessos estão todos sendo salvos em memória.

    Dizer que os acessos são "salvos" em memória talvez não seja o mais correto. Quando uma requisição chega ao AOLServer, por trabalhar com a arquitetura multithread, ele naturalmente despacha uma thread para lidar com a conexão. Quando subimos o servidor, todo o espaço de memória necessário para lidar com as threads é alocado em um único processo chamado nsd. Esse processo "dispara" threads para lidar com as conexões à medida que elas chegam.

    Aí estão as configurações importantes de conexão. A quantidade de memória utilizada pelo servidor será sempre número de threads vezes o tamanho de cada uma. As configurações são feitas através do arquivo config.tcl do servidor, onde vale observar os seguintes parâmetros:

    ns_param   stacksize          [expr 1 * 8192 * 256] 

    ns_param   maxthreads         10       ;# Tune this to scale your server

    ns_param   minthreads         0        ;# Tune this to scale your server 

     

    O parâmetro stacksize diz qual é o tamanho de cada thread. Os outros (maxthreads e minthreads) dizem qual os valores máximos e mínimos que pode-se ter.

    Vamos entender como isso funciona através de um exemplo: chegaram 1000 conexões ao mesmo tempo em um servidor com os parâmetros acima. O servidor vai despachar uma thread para cada conexão até atingir o máximo que ele pode servir ao mesmo tempo (no caso 10). Após atingir o limite, as conexões entram em fila, que também é configurada através de um parâmetro.

    ns_param   maxconnections     100       ;# Max connections to put on queue

    No caso, quando o limite da fila também for atingido, o servidor passa a rejeitar as conexões e os usuários não conseguem acessar o sistema. O que ele precisa fazer então é liberar a thread da conexão o mais rápido possível, para que ela esteja disponível para o próximo usuário. No caso, quando a fila fica grande demais, o servidor começa a apresentar problemas de I/O, identificado mais facilmente por um baixo consumo de memória e processador, mas um load average alto no servidor.

    No caso de utilização do swap, significa que as threads estão solicitando mais memória que o servidor pode disponibilizar. É preciso então reduzir a quantidade de threads que o servidor utiliza, mas tentando não reduzir muito para que usuários não enfrentem problemas de conexão.

    Enfim, é um processo de administração trabalhoso e contínuo, e encontrar a melhor relação entre número de threads e performance é sempre uma tarefa árdua. O fato de milhares de usuários acessarem o sistema ao mesmo tempo não deve ser um problema em qualquer instalação básica do OpenACS, pois o processo de liberar a thread para o próximo é, normalmente, muito rápido. Milhões de conexões simultâneas poderiam ser um problema, mas também configurável.

    É o máximo que posso dizer sem conhecer bem a sua estrutura de produção.

    Espero ter ajudado.

    Abraços 

Oportunidade de Trabalho com OpenACS

9 de Dezembro de 2011, 16:07, por Desconhecido

Domí­nio do ambiente Linux em modo Shell;



Fundamentos de desenvolvimento e criação de comunidades virtuais com o framework OpenACS

28 de Outubro de 2010, 16:51, por Desconhecido

Durante o Latinoware, que será realizado em Foz do Iguaçu entre os dias 10 e 12 de Novembro, será realizada uma oficina sobre desenvolvimento em OpenACS. A oficina é parte da iniciativa de compartilhamento do Projeto Software Público Internacional, e conta com apoio da organização.



Oficina sobre OpenACS em Belo Horizonte

19 de Novembro de 2008, 9:43, por Desconhecido

No dia 27 de novembro de 2008, será realizado durante o Encontro Mineiro de Software Livre, uma oficina para formação de desenvolvedores OpenACS. A oficina tem por objetivo introduzir a ferramenta na cidade e atender a uma demanda crescente por especialistas na área.



Treinamento em OpenACS em Brasília tem sua aula inaugural

10 de Novembro de 2008, 9:43, por Desconhecido

Fruto de uma paceria entre a Lupa Treinamento e a Secretaria de Logística e Tecnologia da Informação do Ministério do Planejamento, começou no último Sábado o terceiro treinamento em OpenACS realizado em Brasília.



Instalacao do OACS 5.3 em Debian e Ubuntu

29 de Janeiro de 2008, 16:52, por Desconhecido

Acaba http://cognovis.de/developer/ou de sair do forno...