Pergunta

Eu estou fazendo teste de estresse com JMeter na aplicação web (construído com Spring, Struts2 REST, usa PostgreSQL).

Estou simulando cenário típico do usuário com a minha app:

4 GET, 3 INSERT, 20 chamadas UPDATE.

Servidor especificações:

4Core Intel Xeon X5365 3GHz

8 GB de RAM

disco de 320GB SATA única

OS: Ubuntu 8.10 32 bits

DB: PostgreSQL 8.4

Tomcat 6.0.18

Java 1.6.0_14

Os resultados mostram que servidor iria lidar com cerca de 130 transações concorrentes. este número é possível? Há alguma resultados on-line para comparar com o meu?

Foi útil?

Solução

O gargalo será em seu banco de dados de modo que este é muito difícil comparar sem saber o seu desempenho de banco de dados.

Nós temos uma máquina similar (exceto com 16GB RAM, rodando Tomcat 5.5). Na carga de pico, ele pode facilmente servir 256 conexões simultâneas. Estamos a debater para alterar as maxThreads a 512.

Algumas dicas de ajuste,

  1. Se você executar Apache como front-end, o uso mod_jk. Seu desempenho é muito melhor do que mod_proxy.
  2. Se você servir HTTP direta ou utilização mod_proxy, use o conector NIO no Tomcat 6.
  3. Verifique se o seu pool de threads (maxThreads) é grande o suficiente, o padrão é de apenas 200.
  4. Faça Tomcat Estado-less. Especialmente, não use HttpSession. O estado pode causar vazamento de memória no aplicativo e degradar o desempenho gradualmente. Empurrar todo o seu estado de banco de dados ou cliente (cookies).
  5. Do pooling uso de banco de dados (DBCP). Temos MySQL, o driver JDBC é muito falador.
  6. Se você executar uma instância do JMeter, ele pode se tornar o gargalo. Executar vários escravos de diferentes redes para simular carga de produção real.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top