2016-09-19 2 views
0

GET 및 POST 메서드 만있는 Spring Boot로 작성된 REST 서비스가 있습니다. GET/POST 메서드는 cassandra 클러스터에서 데이터를 검색/게시합니다. 동시에 100 명의 사용자가 실행되는 REST 서비스를 테스트 해 보았습니다. 내 JMeter를 구성은 :이 테스트를 실행하면Jmeter를 사용하여 REST 서비스로드 테스트

No of users 는 처음 몇 요청이 오류를 제공하고 절반 요청이 성공한 것입니다. 여기 내가 결과 트리에서 오류의 원인을 확인하고이 응답 데이터를 찾은 다음 Result table

결과 테이블을이다 : 그것은 실패 이유를

{"timestamp":1474278650822,"status":500,"error":"Internal Server Error","exception":"com.datastax.driver.core.exceptions.NoHostAvailableException","message":"org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (no host was tried)","path":"/post"} 

나는 이해할 수 없었다 처음 몇 개의 요청에 대해 cassandra 클러스터에 연결하십시오.

저는 cassandra, REST 서비스 및 jmeter를 처음 사용합니다. 누구든지 내가 실수하고있는 것을 지적 할 수있다. 참고 :Postman을 사용하여 내 REST 서비스를 테스트했으며, GET 및 POST 요청 모두 잘 작동합니다.

답변

2

이 구성을 사용하면 번 서비스를 번에 100 번 요청할 수 있습니다. 각 요청마다 요청 스레드가 생길 것이므로 서비스에 적어도 100 개의 연결 스레드가있는 스레드 풀이 있다고 가정합니다. 각 요청 스레드는 DB 연결 풀에서 DB에 대한 연결을 얻으려고합니다. 요청의 50 %가 실패하면 DB 연결 풀 크기가 50으로 설정됩니다. DB 연결 풀이 100 개의 연결을 처리 할 수있는 경우 Cassandra DB의 연결 설정을 확인하십시오. 아마도 50으로 제한됩니다.

+0

덕분에 풀 크기를 알 수 없었습니다. 나는 그것을 들여다 볼 것이다. – hmachahary

1

@Gerald의 답을 더 추가 할 항목이 거의 없습니다. DB의 스레드 풀 제한 수가 유일한 원인은 아닐 수도 있고 다른 가능성은 서버 수준에서 설정된 최대 스레드 연결입니다. 테스트하려는 api의 서버 로그에 액세스 할 수있는 경우 개발자가 도움을 받아 어떤 지점에서 중단되었는지 정확히 확인할 수 있습니다.

+0

휴식 서비스가 실행중인 곳에서 서버를 검사했는데 누출이 발견되었습니다. 나는 그것을 understant 수 없습니다. – hmachahary

+0

'ERROR 4114 --- [tp1408652377-83] io.netty.util.ResourceLeakDetector : LEAK : HashedWheelTimer 인스턴스가 너무 많습니다. HashedWheelTimer는 몇 개의 인스턴스 만 생성되도록 JVM에서 재사용해야하는 공유 리소스입니다. ' – hmachahary

+0

그러면 대답은 간단합니다.이 문제는 공유 리소스 사용 및 AsyncHttpClient에 대해 테스트를 구성해야하는 서버로 인해 발생했습니다. Jmeter에 대한 다중 요청을 지원합니다. 그때까지 당신은 당신의 연결 수에 제한을받을 것입니다. –

관련 문제