2014-02-26 1 views
0

동시성이 높은 응용 프로그램의 tomcat 데이터 소스에 대한 이상적인 maxActive 값은 무엇입니까? 특히 프로덕션 환경에서. 내 응용 프로그램의 DB는 SQL Server입니다.높은 동시성 응용 프로그램을위한 tomcat 데이터 소스에 대한 이상적인 maxActive 값은 무엇입니까?

여러 요청 나는 현재 오류 아래 참조 보낼 때 :

java.util.concurrent.ExecutionException: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object 

가 -1 내 문제를 해결 maxActive 설정을하지만, 수있는 생산 환경을위한 이상적인 가치인가?

+0

을 나도 같은 문제에 직면하고있다. 문제에 대한 답을 찾았습니까? –

+0

내 응용 프로그램에 따라 현재 400으로 설정되었습니다. – user811433

답변

0

아마도 벤치 마크해야합니다.

우리는 Tomcat을로드 테스트했으며 처리량이 최대 약 1에서 엿 보았습니다. 동시 연결 수가 10 개인데 처음에는 maxActive 값이 훨씬 더 높아야한다고 생각했습니다. (면책 조항 : 이것은 DB가 상대적으로 작은 상자에서 실행되는 내부 앱입니다. 경마에서 높은 동시성 응용 프로그램을 실행하는 경우 올바른 값이 상당히 높을 수 있습니다).

또한 톰캣과 함께 제공 아파치 DBCP에 적용해야 HikariCP의 위키 페이지에 풀 크기에 대한 좋은 배경 정보가있다 :

https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing

그것은 기본적으로 당신이 동시 연결 수를 설정해야한다고 말했습니다 배 DB 인스턴스에서 사용할 수있는 CPU 코어 수입니다. 그러나 다시, 그 번호를 확인하기 위해 앱을로드 테스트합니다.

최적의 풀 크기를 찾은 후에는 예외가 발생하지 않도록 풀의 maxWait 속성을 늘리는 것이 좋습니다. 자세한 내용은 DBCP의 JavaDoc을 참조 :

http://commons.apache.org/proper/commons-dbcp/api-1.4/org/apache/commons/dbcp/BasicDataSource.html#maxWait