2010-08-13 3 views
0

우리는 JPA -> Hibernate -> Oracle 셋업을 가지고 있습니다. 여기서 우리는 초당 최대 22 개의 트랜잭션 (트랜잭션 당 2 개의 읽기 및 쓰기) 만 크랭크 할 수 있습니다. CPU와 디스크 및 네트워크에 병목 현상이 없습니다.JPA를 사용하여 이상한 성능을 보였습니다. 뭔가 빠졌습니까?

누락 된 것이 있습니까? DBA가 적용한 일종의 신탁 제한이있을 수 있을지 궁금합니다. 나는 원시 테이블에서 읽어 수행 할 때, 나는 2000 초당 읽기 할 수

  • 네트워크는 문제가되지 않습니다. 문제는 분명히 씁니다.
  • CPU은 응용 프로그램 서버에서 문제가되지 않습니다. CPU는 기본적으로 유휴 상태입니다.
  • 디스크는 응용 프로그램 서버에 문제가되지 않습니다 처리를 사용하여 다른 클라이언트 기술과 성능을 비교 가치 (또는 심지어 그냥 간단한 테스트 될 수
+0

CPU, 디스크 또는 네트워크에 어떤 영향이 있는지 어떻게 알 수 있습니까? – APC

+2

사용자 또는 동시 연결에 의한 세션에 최대 제한이있을 수 있습니다. 잠금 문제 일 수 있습니다. 그러나 DBA에게 질문하는 것이 훨씬 쉬울 것입니다. 그들은 물지 않는다 (또는 그들이하는 경우에, 그들은 광견병 발사를 어떻게해서든지 가졌어야했다). –

+0

세션의 최대 한도를 확인하려면 어떻게해야합니까? 나는 봤지만 많은 정보가 없습니다.) 세부 사항에 가지 않고 DBA는 사용할 수 없습니다. – corydoras

답변

0

를 시작하기 전에, 데이터가 완전히 메모리에로드 SQL * Plus)를 사용하여 어쨌든이 성능을 이길 수 있는지 확인하십시오. 단순히 리소스가 부족하거나 잘못 구성된 데이터베이스 일 수 있습니다.

또한 SQL Plus의 d/b 서버에서 직접 실행되는 결과와 Java 코드가 실행되는 컴퓨터 (SQL Net을 통해 통신하는 곳)에서 로컬로 실행되는 결과를 비교할 수 있습니다. 이렇게하면 문제가 Java 계층 아래에 ​​있는지 확인할 수 있습니다.

JPA 코드와 데이터베이스 사이에는 많은 레이어가 있으므로 원인을 진단하는 것이 재미있을 것입니다. . . 신비한 d/b 성능 문제 중 하나가 잘못된 네트워크 카드로 자체 해결 된 것을 기억합니다. DBA는 데이터베이스에 병목 현상이 보이지 않는다고 굳게 주장했습니다.

0

응용 프로그램이 0.05 초 이내에 트랜잭션을 수행하는 것처럼 들립니다. SQL * Plus 또는 다른 도구를 사용하여 SELECT 및 UPDATE 문을 응용 프로그램에서 추출하고 실행하면 얼마나 오래 걸릴 수 있으며 진술에 시간을 더하면 0.05에 가까워 질까요? 그 데이터는 쿼리에서 사용되며 결국 UPDATE에 사용됩니까? 속도 저하가 데이터베이스가 아니라 앱의 다른 곳, 예를 들어 데이터 수집 단계 일 수 있습니다. 아마도 프로파일 러 (profiler)와 같은 앱을 사용하여 앱의 시간을 어디에 사용하고 있는지 알 수 있습니다.

공유하고 즐기십시오.

관련 문제