Estou fazendo um teste de carga para Web Service SOAP com Jmeter, no modo não GUI começo a receber erros desde 300 Número de Threads, isso foi detectado com uma "Asserção de Resposta" com esta regra: "Teste falhou: texto esperado não conter /"rta":"FAIL"/".
No modo GUI posso ver o erro de várias amostras em "visualizar árvore de resultados":
Erro IO: O adaptador de rede não conseguiu estabelecer a conexão
Minha configuração atual do Oracle é:
select current_utilization, limit_value
from v$resource_limit
where resource_name='sessions';
Rta:
current_utilization, limit_value
177, 987
Cursores
select max(a.value) as highest_open_cur, p.value as max_open_cur
from v$sesstat a, v$statname b, v$parameter p
where a.statistic# = b.statistic#
and b.name = 'opened cursors current'
and p.name= 'open_cursors'
group by p.value;
Rta:
highest_open_cur, max_open_cur
241, 4000
¿Este erro está relacionado com alguma configuração no banco de dados oracle?
Mais Informações: ...
Versão do banco de dados:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
TNS for 64-bit Windows: Version 12.2.0.1.0 - Production
Configurações do Jmeter:
Inter® Xeon® Gold 6126 CPU @2.6 Ghz
4 Sockets, 4 Virtual Processors
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
HEAP=-Xms20G -Xmx20G -XX:MaxMetaspaceSize=128m
Windows Server 2016 Standard
Plano de teste:
- Grupo de threads (número de threads 320, período de aceleração 37, contagem de loops 1)
- 5 solicitações HTTP com 1 asserção cada.
- 1 coletor de métricas PerfMon de ouvinte
Responder1
O erro está sendo lançado porDriver JDBC Oraclequando não consegue estabelecer conexão com o banco de dados.
Aqui estáoutro exemplode alguém que sofre do mesmo problema.
Minha expectativa é que seu aplicativo não esteja usando corretamenteConjunto de conexõespadrão (ou simplesmente não está implementado) para que as conexões não sejam fechadas após a execução da consulta. Eu recomendaria verificar seu aplicativo usando uma ferramenta de criação de perfil comoJProfilerouSeuKit- assim você terá uma visão mais clara do que está acontecendo.
Outra maneira de chegar ao fundo do problema é executar um teste de carga no banco de dados, ou seja, executar consultas diretamente sem chamadas provisórias de API SOAP usando JMeter'sSolicitação JDBCamostrador. Desta forma você poderá afirmar que o banco de dados funciona bem e o problema está na aplicação Java (ou vice-versa). VerO verdadeiro segredo para construir um plano de teste de banco de dados com JMeterpara se familiarizar com o conceito de teste de carga de bancos de dados usando JMeter.