성능 문제점 해결
이 주제는 성능 문제점 해결이 반복적 프로세스임을 보여주고 성능 문제점을 해결하는 방법을 보여 줍니다.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
시작하기 전에
이 태스크 정보
성능 문제점 해결은 종종 다음의 반복적 프로세스입니다.
이 프로세스는 하나의 병목 현상이 제거될 때 성능이 이제는 시스템의 다른 어떤 파트에 의해 제한되기 때문에 반복적입니다. 예를 들어 느린 하드 디스크를 더 빠른 하드 디스크로 바꾸면 병목 현상이 시스템의 CPU이 이동할 수 있습니다.
시스템 성능 측정 및 성능 데이터 수집
- 실행할 표준 조작 세트인 이정표를 선택하여 시작하십시오. 이 이정표는 성능 문제점을 경험하는 애플리케이션 기능들을 시험합니다. 복잡한 시스템은 종종 오브젝트를 캐시하고 코드 경로를 최적화하는 등의 준비 기간이 필요합니다. 준비 기간 동안의 시스템 성능은 대개 준비 기간 이후보다 훨씬 더 느립니다. 이정표는 성능 분석에 사용되는 측정값을 기록하기 전에 시스템을 준비 운전하는 작업을 생성할 수 있어야 합니다. 시스템 복잡도에 따라서 준비 기간은 수 천개의 트랜잭션부터 30분 이상까지 다양할 수 있습니다.
- 조사 중인 성능 문제점이 많은 수의 클라이언트가 시스템을 사용할 때만 발생하는 경우 이정표도 다중 사용자를 시뮬레이트해야 합니다. 또 따른 핵심 요구사항은 이정표가 반복 가능한 결과를 생성할 수 있어야 한다는 점입니다. 결과가 실행할 때마다 수 퍼센트 이상 달라지는 경우, 시스템의 초기 상태가 각 실행에 대해 동일하지 않거나, 측정이 준비 기간 중에 작성되거나, 시스템이 추가 워크로드를 실행 중인 가능성을 고려하십시오.
- 여러 가지 도구가 이정표 개발을 용이하게 합니다. 이들 도구는 단순히 URL 하나를 호출하는 도구부터 애플리케이션에 의해 생성되는 동적 데이터와 상호작용할 수 있는 스크립트 기반 제품까지 다양합니다. IBM® Rational®에는 테스트할 시스템과의 복잡한 상호작용을 생성하고 수 천명의 사용자를 시뮬레이트할 수 있는 도구가 있습니다. 유용한 이정표를 생성하려면 노력이 필요하며 개발 프로세스의 파트가 되어야 합니다. 성능 측정 방법을 판별하기 위해 애플리케이션이 프로덕션에 들어갈 때까지 기다리지 마십시오.
- 이정표 레코드 처리량 및 응답 시간은 그래프 작성 및 기타 분석 기법을 허용하는 양식으로 만들어집니다. WebSphere® Application Server PMI(Performance Monitoring Infrastructure)에서 제공되는 성능 데이터는 애플리케이션 서버 성능을 모니터하고 조정하는 데 도움이 됩니다. WebSphere Application Server에서 제공되는 성능 데이터에 대하여 더 자세히 알기 위해 요청 메트릭을 사용하는 이유에 관한 정보를 참조하십시오. 요청 메트릭은 요청이 WebSphere Application Server 컴포넌트 경계에서 시간이 지정될 수 있도록 하여 각 주요 컴포넌트에서 소비되는 시간을 판별할 수 있도록 합니다.
병목 현상 찾기
다음 시나리오 및 제안되는 솔루션을 고려하십시오.
- 시나리오: 단일 사용자에서만 성능 저하가 발생합니다.
제안되는 솔루션: 요청 메트릭을 이용하여 각 컴포넌트가 전체 응답 시간에 기여하는 정도를 판별하십시오. 요청 메트릭에 대해 자세히 알기 위해 요청 메트릭으로 수집할 수 있는 데이터에 대한 정보를 참조하십시오. 대부분의 시간을 고려하는 컴포넌트에 초점을 맞추십시오. Tivoli Performance Viewer를 사용하여 가비지 콜렉션 빈도를 비롯한 자원 이용을 확인하십시오. 문제점을 특정 메소드로 분리하기 위해 코드 프로파일링 도구가 필요할 수 있습니다.
- 시나리오: 다중 사용자에서만 성능 저하가 발생합니다.
제안되는 솔루션: 임의의 시스템이 높은 CPU, 네트워크 또는 디스크 활용도를 갖는지를 판별하고 해당 문제점을 다루십시오. 클러스터 구성의 경우 클러스터 구성원 사이의 균등하지 않은 로드를 확인하십시오.
- 시나리오: 어떤 시스템도 CPU, 메모리, 네트워크 또는 디스크 제한조건을
갖지 않는 것 같지만, 다중 사용자에서 성능 문제점이 발생합니다. 제안되는 솔루션:
- 작업이 테스트할 시스템에 도달하고 있는지 확인하십시오. 일부 외부 장치가 시스템에 도달하는 작업량을 제한하지 않는지 확인하십시오. Tivoli® Performance Viewer가 시스템의 요청 수를 판별하는 데 도움이 됩니다.
- 스레드 덤프가 동기화되는 메소드의 병목 현상 또는 자원을 기다리고 있는 많은 수의 스레드를 보여줄 수 있습니다.
- IBM HTTP Server, 데이터베이스 및 Application Server 모두에서 작업을 처리하기에 충분한 스레드가 사용 가능한지 확인하십시오. 역으로, 너무 많은 스레드가 자원 회선 경합을 늘리고 처리량을 줄일 수 있습니다.
- Tivoli Performance Viewer 또는 사용자의 JVM(Java™ Virtual Machine)의 verbosegc 옵션을 사용하여 가비지 콜렉션을 모니터하십시오. 과다한 가비지 콜렉션은 처리량을 제한할 수 있습니다.
병목 현상 제거
- 수요 축소
- 자원 증가
- 워크로드 분배 개선
- 동기화 축소
- IBM HTTP Server
- 명령
- 엔터프라이즈 Bean
- 운영 체제
애플리케이션 코드 프로파일링은 사용자가 최적화할 수 있는 중요한 위치를 지적함으로써 CPU 수요의 축소를 가져올 수 있습니다. IBM Rational과 기타 회사는 코드 프로파일링을 수행하기 위한 도구를 가지고 있습니다. 애플리케이션 분석은 몇 가지 유형의 트랜잭션에 대해 일부 작업이 줄어들 수 있는 영역을 보여줄 수 있습니다.
조정 매개변수를 변경하여 일부 자원(예: 파일 핸들의 수)을 늘리십시오. 반면에 다른 자원은 하드웨어 변경(예: 추가 CPU 또는 더 빠른 CPU, 추가 Application Server)이 필요할 수 있습니다. 성능 문제점 해결을 촉진하기 위해 각 주요 WebSphere Application Server 컴포넌트에 대한 핵심 조정 매개변수가 설명됩니다. 또한 성능 어드바이저 페이지에서 실제 또는 시뮬레이트된 로드에서 프로덕션 시스템 조정에 대한 권고를 제공할 수 있습니다.
일부 자원은 충분히 이용되지 않고 다른 자원은 과부하될 때 워크로드 분배가 성능에 영향을 줄 수 있습니다. WebSphere Application Server 워크로드 관리 기능은 작업이 분배되는 방법을 판별하기 위한 여러 가지 방법을 제공합니다. 워크로드 분배는 단일 서버 및 다중 서버와 노드를 갖는 구성 둘 다에 적용됩니다.
워크로드 관리를 참조하십시오.
워크로드 관리를 참조하십시오.
애플리케이션 및 서버 코드의 일부 임계 섹션은 다중 스레드가 이 코드를 동시에 실행하고 잘못된 결과를 이끌지 못하게 하기 위해 동기화가 필요합니다. 동기화는 정확성을 보존하지만 또한 여러 스레드가 하나의 스레드가 임계 섹션을 종료하기를 기다려야 할 때 처리량을 줄일 수 있습니다. 여러 스레드가 임계 섹션에 들어가기를 기다리고 있을 때, 스레드 덤프는 동일한 프로시저에서 대기하는 이들 스레드를 표시합니다. 종종 필요할 때만 동기화를 사용하도록 코드를 변경하거나, 동기화되는 코드의 경로 길이를 줄이거나, 또는 동기화되는 코드를 호출하는 빈도를 축소하여 동기화를 줄일 수 있습니다.