-2

부하가 높을 때 성능이 크게 저하됩니다. 이것은 메시지 기반 bean 기반의 편안한 API입니다. 초당 평균 27 건의 평균 부하에 대해 websphere 애플리케이션 서버의 두 노드에서 최대 서버 세션을 20으로 구성했으며 대기열 연결 팩토리 세션 풀을 20으로 유지하고 JDBC 연결 풀을 20으로 유지했습니다. 타임 아웃없이 1 초 만에 응답을 얻을 수있었습니다.응용 프로그램의 성능 튜닝

평균로드의 3 배, 즉 초당 80 히트 인 피크로드에서는 응용 프로그램이 절반 이상의 요청 시간이 초과되고 평균 응답 시간이 6 초로 길어질 때 성능이 떨어집니다.

최대로드 최대 서버 세션 수는 각 노드마다 40, 큐 연결 팩토리 세션 풀은 40, JDBC 연결 풀 수는 40으로 늘었습니다. HP Diagnostics를 통해 모니터링 할 때 데이터베이스 서버의 CPU 사용률이 매우 높았으며, 즉 최대 98 %.

제 질문은 데이터베이스 연결 수가 많아 질수록 CPU 사용률이 빠르게 증가하거나 해고되는 쿼리에 더 의존하는 것입니다. 또한 JDBC 연결 풀의 연결 수를 줄이거 나 MDB 인스턴스 당 하나의 연결을 가져야합니다.

피크로드 상태에서 성능을 향상시킬 수있는 방법을 제공하십시오.

+0

여기에는 많은 변수가 있습니다. 대부분의 경우 필요에 따라 연결을 만드는 비용이 비싸기 때문에 항상 풀 연결을 사용해야합니다. 응용 프로그램을 프로파일 링하고 응용 프로그램의 처리 시간이 긴 부분을 먼저 찾아 볼 것을 권장합니다. 외부 DB에 대한 생각은 DB 소프트웨어, CPU 사용 가능, 디스크 IO 및 동일한 머신 네트워크 IO에 있지 않은지 여부에 따라 DB의 처리량이 전체적으로 달라야한다는 것입니다. 응용 프로그램이 정상적으로 작동하고 DB 처리량이 좋을 수 있습니다. 응용 프로그램을 DB로 조절할 수도 있고하지 않을 수도 있습니다. – Underbalanced

+0

성능 테스트가있는 경우 피크로드로 테스트 해보고 다른 설정이 처리량에 미치는 영향을 확인하십시오. – Kayaman

+0

@ 카야 만 나는 당신의 요점을 이해하지 못했습니다. 어느 설정을 참조하고 있습니까? – Neel

답변

0

구체적으로 DB에 대한 연결 수가 많으면 DB 서버의 CPU 사용률이 크게 증가하지 않을 수도 있습니다. 메모리 풋 프린트, 다소, CPU 유틸리티. 이러한 연결이 응용 프로그램에서 사용되는 경우에만 해당 연결에서 실행되는 SQL이 CPU 사용률을 높입니다. 연결 풀 크기를 MDB의 수보다 적게 줄이는 것이 가능하지만 일반적으로 좋은 생각은 아닙니다. 성능을 여러 가지 방법으로 조정할 수 있습니다. 한 가지 방법은 DB 서버의 CPU 사용률을 측정하는 것입니다. 먼저 단일 연결에서 응용 프로그램이 작성한 일반 및 높은 트랜잭션로드를 판별하십시오. 일반적인로드를 생성하도록 애플리케이션을 구동 시키려면 DB 서버 CPU를 50 %로 가동 할 때까지 경로 수 (연결 및 MDB 인스턴스)를 늘리십시오. 이제 가장 높은 예상 트랜잭션 속도로 응용 프로그램을 구동하십시오. DB 서버 CPU 사용률이 당신이 선택하는 편한 수준, 아마도 80 %를 유지하는지 확인하십시오. 80 % 미만인 경우 연결/MDB 인스턴스가 추가 될 때까지 추가하십시오. 80 %보다 크면 80 %에 도달 할 때까지 연결 및 MDB 인스턴스 수를 줄입니다. 이것은 성능을 조정하는 많은 방법 중 하나 일 뿐이며 예측 가능한 속도로 애플리케이션에 부하를 생성 할 수 있다는 사실에 의존합니다.

+0

추가 분석에서 CPU 사용률이 데이터베이스 서버에서 매우 높아지고 있음을 알 수있었습니다. 거의 98 %가 시간 초과가 시작될 때입니다.다른 포럼을 확인합니다. vmstat를 실행 한 후 실행 대기열 개수가 서버의 CPU보다 많지 않아야합니다. 나는 CPU가 16인데 반해 실행 횟수가 70만큼 높다는 것을 알 수 있었다. 이제는 여기서 수행 할 수있는 것은 하드웨어가 단지 많은 처리량을 지원할 수없고 추가적인 CPU가 필요하거나 다른 것이 수행 될 수 있다는 것이다. 이리. – Neel