Hardware para Servidor de Aplicação

Boa tarde pessoal.

Estamos reestruturando nossa infra-estrutura tecnológica e gostaria de uma ajuda de vcs.

O projeto conta com uma equipe inicial de 5 integrantes, podendo aumentar com a evolução (provável) da ferramenta.

Estamos montando uma aplicação acadêmica, com portal Institucional e algumas ferramentas, como consulta a notas, solicitações à papéis da secretaria, vários níveis de perfis de acesso, enfim, ferramentas para docentes e discentes.

Chegamos a um ponto de levantamento de requisitos de hardware. Preciso da ajuda de vcs para fazer uma solicitação de um servidor de aplicação.

Atualmente temos o seguinte:

  • Aplicação desenvolvida em Java
    • Java 6
    • JSP, JSF, Facelets e Myfaces
    • Framework de persistência Hibernate
  • Servidor HTTP
    • Apache 2.2
    • Tomcat 5.5.20
  • SGBD
    • MSSQL Server 2005
  • Acessos diários
    • Em torno de 5.000
  • Acessos concorrentes
    • Horário de pico: 200 acessos

Começamos uma negociação com a DELL na seguinte máquina:

  • Processador Intel Xeon 5160 Dual-Core(L2 de 4MB, 3.00GHz, 1333MHz)
  • Memória de 4GB 533MHz (4X1GB), Dual Ranked
  • 2 x Disco Rígido SATA de 250GB, 3.5 polegadas, 7.2K RPM
  • Placa Controladora integrada SAS5/IR
  • Duas placas de rede Intel 1000PT Dual Port Copper Gigabit, PCI-E

O que vcs acham, poderia melhorar ? É muita coisa ?
Que tipo de máquina vcs indicariam ?

Obrigado.

Você precisa usar Windows e MS SQL 2005? Se não precisar, pode economizar na licença e comprar mais hardware ainda.

Temos uma parceria com a Microsoft: “MSDN Academic Alliance”, então não considerando as licenças, o que seria de hardware?

Vai rodar a aplicação no mesmo servidor do banco de dados?

O sistema é utilizado por quantos minutos durante o dia? Pq não faz o menor sentido falar em 5mil acessos dia e um pico de 200. Fora que 5mil acessos diários é uma piada, é muito pouco, para isso qualquer tipo de servidor resolve, um p3 com 512mb de ram já resolve.

Vocês precisam dimensionar melhor o volume esperado de acessos para poder ter um sizing decente.
Levantem total de usuários do sistema, máximo concorrente. Volume de requisições por cliente (com alguma unidade de tempo). Depois disso, avaliem o custo das operações sendo feitas, para só então, depois disso, fazer o sizing.

[quote=louds]Vai rodar a aplicação no mesmo servidor do banco de dados?
[/quote]Provavelmente sim.

[quote=louds]O sistema é utilizado por quantos minutos durante o dia?
[/quote]24 h/dia

[quote=louds]Pq não faz o menor sentido falar em 5mil acessos dia e um pico de 200. [/quote]Posso ter me expressado mal. São em média 5 mil acessos diários e o pico registrado em nosso servidores, foi de 200 acessos simultâneos até hj.

[quote=louds]
Fora que 5mil acessos diários é uma piada, é muito pouco, para isso qualquer tipo de servidor resolve, um p3 com 512mb de ram já resolve.
[/quote]Posso estar errado, mas 5 mil acessos diários não é pouca coisa não. E mais, quando soltamos os resultados do vestibular, chegamos a ter quase 30 mil acessos.

Enfim, estou comprando uma máquina pensando na evolução da ferramenta, consequentemente maior quantidade de pessoas acessando.

Mas se esta máquina realmente for muita coisa, poderiam me passar uma máquina com custo/benefício legal?

Se a mesma máquina vai rodar Web e banco de dados, então você precisa saber se ela também precisa rodar um firewall ou se sua infraestrutura já comporta isso.

Outra coisa, se a máquina for muito boa, você poderia usar a solução de virtualização (acho que a MS tem o tal de “Virtual Server”) e instalar o banco de dados em uma máquina virtual e o web server em outra. Só para evitar alguns problemas de offtime porque o web server foi atacado, ou alguém fez uma configuração incorreta no banco de dados - nesse caso você simplesmente recuperaria um snapshot do web server (ou do banco de dados) e as coisas passariam a funcionar novamente de novo.

[quote=thingol]Se a mesma máquina vai rodar Web e banco de dados, então você precisa saber se ela também precisa rodar um firewall ou se sua infraestrutura já comporta isso.
[/quote]Não vai rodar firewall. Ela vai ser uma máquina dentro de nossa rede que já tem regras de segurança espalhada por ela.

[quote=thingol]
Outra coisa, se a máquina for muito boa, você poderia usar a solução de virtualização (acho que a MS tem o tal de “Virtual Server”) e instalar o banco de dados em uma máquina virtual e o web server em outra. Só para evitar alguns problemas de offtime porque o web server foi atacado, ou alguém fez uma configuração incorreta no banco de dados - nesse caso você simplesmente recuperaria um snapshot do web server (ou do banco de dados) e as coisas passariam a funcionar novamente de novo.
[/quote]Boa cara. Legal a idéia, vale como discussão para a próxima reunião…

Mas e aí, a configuração, será que tá OK?

E aí pessoal, será que posso fechar?

Tá sobrando hardware…

[quote=reizin]Posso estar errado, mas 5 mil acessos diários não é pouca coisa não. E mais, quando soltamos os resultados do vestibular, chegamos a ter quase 30 mil acessos.

Enfim, estou comprando uma máquina pensando na evolução da ferramenta, consequentemente maior quantidade de pessoas acessando.

Mas se esta máquina realmente for muita coisa, poderiam me passar uma máquina com custo/benefício legal?

[/quote]

O que você chama de acesso diário? Seu sistema é web ou desktop? Se for web, você tem que medir em termos de requisições o volume de acesso. Se forem 5mil pageviews, é risivel, já trabalhei com vários sistemas que recebiam mais de 5mil requisições por minuto.

Quanto a acessos simultâneos, esse é um número de pouca utilidade para sistemas web, por exemplo, você tem que medir o volume máximo de requisições por segundo, quanto ao número de usuário simultâneos, isso influencia decisões como utilizar keep-alive e o número de workers do httpd.

Se for desktop, você precisa medir em termos de chamadas que os desktops fazem para o middle-end, número de rpcs.

Quanto a dizer se aguenta ou não, só tem uma coisa que pode te dizer isso: um teste de carga. Sem isso é 100% chute.

Você conhece as características do workload da tua aplicação? Se o teu sistema utilizar consultas muito complexas contra uma base de dados enorme, esse teu hardware mal vai dar pro banco de dados.

Ou então se o teu sistema serve páginas basicamente estáticas e utiliza o banco apenas para autenticação, vai sobrar muito.

Ou ainda se o teu sistema utiliza http sessions de 1mb cada, com teus 5 mil usuários, não vai ter ram suficiente para guardas todas.

Ou seja, tentar responder isso sem saber direito como teu sistema funciona é tiro no escuro. Levante corretamente as características do teu sistema e – no mínimo – realize um teste de stress em um ambiente igual ou inferior ao final.

Sem o teste de carga, você vai estar chutando no escuro 100% das vezes, principalmente pq se o teu sistema possuir algum gargalo grande de cpu ou memória, não vai ter hardware que resolva.

Ou seja, se realmente quer saber se ele vai aguentar, instale o sistema e o MSSQL na melhor estação dentre os desenvolvedores, baixe o jmeter e execute um teste de carga.

Opa… Valeu louds…
Vou realizar alguns testes com o JMeter, qualquer coisa posto os resultados aqui.
Muito obrigado a todos…

:stuck_out_tongue: