2010-06-17 3 views
2

한 번에 100 개의 메시지를 수신 할 수있는 JMS 응용 프로그램 (독립 실행 형 다중 스레드 Java 응용 프로그램)을 개발하기 위해 노력 중이며 처리해야하며 데이터베이스 프로 시저를 사용해야합니다. 데이터를 삽입/갱신하기 위해서 호출 할 필요가 있습니다. 절차가 검증 될 때 절차가 매우 복잡합니다. 각 절차는 실행하는 데 약 30 ~ 50 초 정도 걸리며 동시에 실행할 수 있습니다. 내 모든 관심은 100 개의 모든 메시지에 대해 100 개의 절차를 수행하고 jms 응용 프로그램으로 제한 시간 인 90 초 내에 응답을 보냅니다. 응용 프로그램 서버 (요구 사항)가없고 데이터베이스가 Teradata (RDBMS)입니다.응용 프로그램의 데이터베이스 및 연결 수 제한

Java 코드에서 연결 풀과 스레드 풀을 사용하고 90 개의 연결로 테스트 코드를 사용하고 있습니다. 질문 :

(1) 한 번에 데이터베이스와의 연결 수에는 어떤 제한이 있습니까? (2) 한 번에 몇 개의 스레드가 권장 되나요?

덕분에, 죠티

답변

1

(90)는 많은 것 같다. 내 기준은 이것을 벤치 마크하는 것입니다. 기준은 고유 한 것으로 최대 처리량을 확보해야합니다. 코드를 구성 할 수있는 동시 연결 수와 함께 구성 할 수 있으며 한 번에 10 ... 100 연결로 실행합니다. 오래 걸리지 않아야합니다. 속도가 느려지기를 시작하면 동시에 실행하는 것의 이점을 초과한다는 것을 알게됩니다.
결과를 예측할 수 있는지 여러 번 확인하십시오.

0

또 다른 걱정거리는 '수술을받는 데 30-50 초 정도 걸립니다.'입니다. 얼마나 많은 시간이 Java를 통한 처리이고 데이터베이스가 SQL 문을 처리하기까지 기다리는 시간은 얼마입니까? 필요한 연결의 최대 수를 결정하기 위해 두 시간을 모두 추가해야합니까?

일반적으로 말하자면, 가능한 경우 Java 로직을 처리 한 후 연결을 사용하고 사용하고 가능한 빨리 닫아야합니다. 가능한 경우 연결을 피하고 자바 측 처리를하고 데이터베이스를 호출 한 다음 Java 처리를 수행 한 다음 연결을 닫아야합니다. 아마도 그 연결을 오래 열어 둘 필요는 없습니다. 이 접근 방식을 수행 할 때 염두에 두어야 할 사항은 단일 트랜잭션으로 유지해야하는 데이터베이스 액세스를 포함하는 처리입니다.

예를 들어, 실행하는 데 50 초가 걸릴 경우 데이터베이스 액세스가 1 초만 필요한 경우 최대 연결 수가 너무 많지 않을 것입니다.

관련 문제