전송 채널 서비스 튜닝
전송 채널 서비스는 HTTP 및 JMS 요청에 대한 클라이언트 연결 및 I/O 처리를 관리합니다. 이들 I/O 서비스는 Java™에서 사용 가능한 비블록킹 I/O(NIO) 기능을 기초로 합니다. 이러한 서비스는 WebSphere® Application Server 요청 처리에 확장성이 높은 토대를 제공합니다. Java NIO 기반 아키텍처는 성능, 확장성 및 사용자 사용성 측면에서 한계를 갖습니다. 그러므로 진정한 비동기 I/O의 통합이 구현됩니다. 이 구현은 사용성에서 상당한 이점을 제공하며, I/O 처리의 복잡도를 줄이고 사용자가 수행해야 하는 성능 튜닝의 양을 줄입니다.
이 태스크 정보
- 제품이 많은 동시 요청을 처리할 수 있게 하는 확장성
- 웹 컨테이너 스레드에 대한 클라이언트 요청의 다대일 맵핑을 제공하는 비동기 요청 처리
- 웹 컨테이너와 메시징 서비스 사이에 스레드 풀을 공유할 수 있게 하는 자원 공유 및 분리
- 향상된 사용성
- 자동 튜닝과 구성 기능의 통합
전송 체인과 연관된 하나 이상의 전송 채널 설정에 대한 기본값을 변경하는 것이 해당 체인의 성능을 향상시킬 수 있습니다.

프로시저
- TCP 전송 채널을 조정하십시오. 관리 콘솔에서
서버 > 서버 유형 > WebSphere 애플리케이션 서버 > server_name > 포트를
클릭하십시오. 그런 다음 적당한 포트에 대한 연관된 전송 보기를 클릭하십시오.
- 특성을 변경하려는 전송 체인을 선택하십시오.
- 해당 체인에 대해 정의되는 TCP 전송 채널을 클릭하십시오.
- 최대 열린 연결 특성에 지정한 값을 줄이십시오. 이 매개변수는 서버가 사용할 수 있는 최대 연결 수를 제어합니다. 이 매개변수를 허용되는 최대 연결 수인 기본값 20000으로 두면, 제품에서 연결을 계속 허용하므로 연결 및 연관된 작업, 백로그가 증가하여 웹 사이트가 장애 상황에서 지연될 수 있습니다. 기본값을 약간 더 낮은 수(예: 500)로 변경한 후 추가 튜닝 및 테스트를 수행하여 특정 웹 사이트 또는 애플리케이션 배치에 지정하는 최적의 값을 판별해야 합니다.
- 데이터가 다시 클라이언트에 기록되지 않고 클라이언트
연결이 닫히고 있는 경우 비활동 제한시간 매개변수에 지정된 값을
변경하십시오. 이 매개변수는 서버가 사용할 수 있는
최대 연결 수를 제어합니다. 새 연결을 수신한 후에 TCP 전송 채널은
연결을 TCP 전송 채널 위의 프로토콜 특정 채널로 디스패치하기
위해 충분한 데이터가 도착하기를 기다립니다. 비활동 제한시간
매개변수에 대해 지정되는 시간 동안 충분한 데이터가 수신되지 않는
경우 TCP 전송 채널은 연결을 닫습니다.
매개변수의 기본값은 60초입니다. 이 값은 대부분의 애플리케이션에 적합합니다. 워크로드가 많은 연결을 포함하고 이러한 모든 연결이 60초 안에 서비스될 수 없는 경우 이 매개변수에 대해 지정되는 값을 늘리십시오.
특정 HTTP 포트에 스레드 풀을 지정하십시오. 각 TCP 전송 채널이 특정 스레드 풀에 지정됩니다. 스레드 풀은 다른 컴포넌트뿐 아니라 하나 이상의 TCP 전송 채널 사이에서 공유될 수 있습니다. TCP 전송 채널에 대한 기본 설정은 모든 HTTP-based 기반 통신량이 WebContainer 스레드 풀에 지정되고 다른 모든 통신량은 Default 스레드 풀에 지정되게 하는 것입니다. 스레드 풀 메뉴 목록을 사용하여 특정 스레드 풀을 각 TCP 전송 채널에 지정하십시오. 이 매개변수에 대한 기본 설정은 모든 HTTP-based 기반 통신량이 WebContainer 스레드 풀에 지정되고 다른 모든 통신량은 Default 스레드 풀에 지정됩니다. 스레드 풀 콜렉션에 대한 정보는 추가 스레드 풀을 작성하는 방법을 설명합니다.
스레드 풀 크기를 튜닝하십시오. 기본적으로 스레드 풀은 최소 10개의 스레드와 최대 50개의 스레드를 가질 수 있습니다. 이들 값을 조정하려면 스레드 풀 >threadpool_name을 클릭하고 해당 스레드 풀에 대한 최소 크기 및 최대 크기 매개변수에 지정된 값을 조정하십시오.
일반 애플리케이션은 대개 프로세서당 10개 이상의 스레드가 필요하지 않습니다. 한 가지 예외는 매우 느린 백엔드 요청 같이 서버 스레드가 백엔드 요청이 완료하기를 기다리게 만드는 몇 가지 오프 서버 조건이 있습니다. 그런 경우에는 프로세서 사용량이 낮으며 워크로드를 늘려도 프로세서 처리량이 늘어나지 않습니다. 스레드 메모리 덤프는 거의 모든 스레드가 백엔드 자원에 대한 호출 상태에 있는 것으로 표시합니다. 이 조건이 존재하고 백엔드가 올바르게 튜닝된 경우, 처리량의 향상을 확인하고 스레드 메모리 덤프가 백엔드 호출 옆에 다른 런타임 영역에 있는 스레드를 표시할 때까지 풀의 최대 스레드 수를 늘려보십시오.
백엔드가 장시간 동안 정지하는 경향이 있지 않는 한, 필요한 만큼 성장 매개변수에 대한 설정이 변경됩니다, 이 조건은 사용자의 모든 런타임 스레드가 정지된 백엔드를 포함하지 않는 다른 작업을 처리하는 대신 백엔드를 기다리면서 블록화됨을 표시할 수 있습니다.
- HTTP 전송 채널을 조정하십시오. 관리 콘솔에서
서버 > 서버 유형 > WebSphere 애플리케이션 서버 > server_name > 포트를
클릭하십시오. 그런 다음 적당한 포트에 대한 연관된 전송 보기를 클릭하십시오.
- 특성을 변경하려는 전송 체인을 선택하십시오.
- 해당 체인에 대해 정의되는 HTTP 전송 채널을 클릭하십시오.
- HTTP 활성화 상태 지속을 튜닝하십시오.
지속적(활성화 상태 지속) 연결 사용 설정은 연결이 요청 사이에서 계속 열려있는지 여부를 제어합니다. 연결을 열어 두면 워크로드가 다중 요청을 전송하는 클라이언트를 갖는 경우 소켓의 설정 및 분해 비용을 절약할 수 있습니다. 기본값은 true이고 일반적으로 쵲거의 설정입니다.
클라이언트가 충분히 긴 시간 동안 단일 요청만을 전송하는 경우, HTTP 전송 채널 설정이 잠시 후 연결을 닫는 제한시간을 설정하는 대신 즉시 연결을 닫도록 하는 것이 좋습니다.
- 최대 지속적 요청 매개변수에 대해 지정된
값을 변경하여 연결이 닫히기 전에 연결을 통해 이동할 수 있는
요청 수를 늘리십시오.
지속적 연결 사용 옵션이 사용될 때, 최대 지속적 요청 매개변수는 연결이 닫히기 전에 연결을 통해 이동할 수 있는 요청 수를 제어합니다. 기본값은 100입니다.이 값은 모두가 아니라면 대부분의 클라이언트가 동일한 세션 동안 다중 요청을 작성할 때 항상 열린 연결을 갖도록 하는 값으로 설정되어야 합니다. 이 매개변수에 대한 적당한 설정은 불필요한 소켓의 설정 및 분해를 제거하는 데 도움이 됩니다.
클라이언트가 절대로 닫지 않는 테스트 시나리오의 경우, 값 -1은 단일 연결을 통해 요청 수를 제한하는 처리를 사용할 수 없습니다. 지속적 제한시간은 일부 대기 소켓을 시스템 종료하고 서버가 열린 소켓을 모두 소비하지 않게 합니다.
- 지속적 제한시간 매개변수에 대해 지정되는 값을 변경하여 연결이 비활동으로 인해 닫히기 전에 열려 있는 시간을 늘리십시오. 지속적 제한시간 매개변수는 연결에 활동이 없기 때문에 닫히기 전에 연결이 열려 있는 시간을 제어합니다. 기본값은 30초입니다. 이 매개변수는 대부분의 클라이언트가 요청을 작성해야 할 때 사용할 수 있는 연결을 얻을 수 있도록 충분한 연결을 열어두는 값으로 설정됩니다.
- 클라이언트가 데이터를 전송하는 데 60초 이상 걸리기 때문에 요청을 완료하는 데 어려움을 겪고 있는 경우 읽기 제한시간 매개변수에 지정된 값을 변경하십시오. 일부 클라이언트는 요청의 일부로 데이터를 전송하는 동안 60초 이상 일시정지합니다. 요청을 완료할 수 있도록 하기 위해서는 이 매개변수에 지정되는 값을 클라이언트가 데이터 전송을 완료하기에 충분한 시간(초)으로 변경하십시오. 여전히 미완료된 데이터를 전송하고 따라서 과다한 시간 동안 자원(소켓)을 이용하는 클라이언트로부터 서버를 보호하는 이 값을 변경할 때 주의하십시오.
- 일부 클라이언트에서 클라이언트에 기록될 데이터를 수신하기 위해 60초 이상 필요한 경우, 쓰기 제한시간 매개변수에 지정되는 값을 변경하십시오. 일부 클라이언트는 느리고 전송되어 오는 데이터를 수신하기 위해 60초 이상이 필요합니다. 클라이언트가 모든 데이터를 얻을 수 있도록 하기 위해, 이 매개변수에 지정되는 값을 수신될 모든 데이터에 대해 충분한 시간(초)으로 변경하십시오. 여전히 악성의 클라이언트로부터 서버를 보호하는 이 값을 변경할 때 주의하십시오.
- 웹 컨테이너 전송 채널 설정을 조정하십시오. 관리 콘솔에서
서버 > 서버 유형 > WebSphere 애플리케이션 서버 > server_name > 포트를
클릭하십시오. 그런 다음 적당한 포트에 대한 연관된 전송 보기를 클릭하십시오.
- 특성이 변경되어야 하는 전송 체인을 선택하십시오.
- 해당 체인에 대해 정의되는 웹 컨테이너 전송 채널을 클릭하십시오.
- 클라이언트에 대한 응답을 처리하기 위해 다중 쓰기가 필요한 경우, 쓰기 버퍼 크기 매개변수에 지정되는 값을 사용자 클라이언트에 대해
더욱 적합한 값으로 변경하십시오. 쓰기 버퍼 크기 매개변수는 처리를 위해 요청을 전송하기 전에 웹 컨테이너가 버퍼링하는
스레드당 최대 데이터량을 제어합니다. 기본값은 32768바이트이며
대부분의
애플리케이션에서 충분합니다. 응답의 크기가 쓰기 버퍼의
크기보다 큰 경우 응답은 청크되며 여러 번의 TCP 쓰기로 다시
기록됩니다.
이 매개변수에 대해 지정되는 값을 변경해야 하는 경우 새 값이 대부분의 요청이 한 번의 쓰기로 기록될 수 있도록 하십시오. 이 매개변수에 대한 적합한 값을 판별하려면 리턴되는 페이지의 크기를 보고 HTTP 헤더를 고려하기 위해 약간의 추가 바이트를 추가하십시오.
- 바운드된 버퍼에 대한 설정을 조정하십시오.
기본 바인드된 버퍼 매개변수가 대부분의 환경에 대해 최적인 경우에도 성능을 향상시키기 위해 특정 상황 및 일부 운영 체제의 경우 기본값을 변경해야 할 수 있습니다. 바인드된 버퍼 매개변수를 변경하면 성능이 저하될 수 있습니다. 그러므로 바인드된 버퍼 매개변수를 변경할 것을 결정하기 전에 기타 관련 영역(예: 웹 컨테이너 및 ORB 스레드 풀)을 튜닝해야 합니다.
바인드된 버퍼 매개변수를 변경하려면 다음을 수행하십시오.
- 관리 콘솔에서 서버 > 서버 유형 > WebSphere 애플리케이션 서버 > server_name을 클릭하십시오.
- 서버 인프라 섹션에서 Java 및 프로세스 관리 > 프로세스 정의 > JVM(Java Virtual Machine)을 클릭하십시오.
- 사용자 정의 특성을 클릭하십시오.
- 이름 필드에 다음 사용자 정의 특성 중 하나를 입력하고
값 필드에 적합한 값을 입력한 후 적용을 클릭하여 사용자 정의 특성
및 해당 설정을 저장하십시오.
- com.ibm.ws.util.BoundedBuffer.spins_take=value
스레드가 일시중단되고 큐에 들어가기 전에 웹 컨테이너 스레드가 버퍼에서 요청 검색을 시도할 수 있는 횟수를 지정합니다. 이 매개변수를 사용하여 실패할 수도 있는 검색 시도를 수행하는 비용을, 스레드를 일시중단하고 PUT 조작에 대한 응답으로 다시 활성화하는 비용으로 상쇄시킬 수 있습니다.
정보 값 기본값: 운영 체제에 사용 가능한 프로세서의 수는 -1입니다. 권장: 음수가 아닌 정수 값을 사용하십시오. 실제로 2에서 8까지의 정수를 사용할 때 성능이 가장 좋습니다. 사용법: com.ibm.ws.util.BoundedBuffer.spins_take=6. 스레드가 일시중단되기 전에 6번의 시도가 이루어집니다. - com.ibm.ws.util.BoundedBuffer.yield_take=true 또는 false
버퍼에서 요청을 취하기 위한 설정된 시도 횟수 후에 스레드가 프로세서를 다른 스레드로 산출함을 지정합니다. 일반적으로 낮은 시도 수가 바람직합니다.
정보 값 기본값: false 권장: 산출 효과는 개별 플랫폼에 특정한 구현입니다. 사용법: com.ibm.ws.util.BoundedBuffer.spins_take=boolean value - com.ibm.ws.util.BoundedBuffer.spins_put=value
스레드가 일시중단되고 큐에 들어가기 전에 요청을 버퍼에 넣기 위해 InboundReader 스레드가 작성하는 시도 수를 지정합니다. 요청을 버퍼에 넣기 위해 실패할 수 있는 반복되는 시도의 비용을, 스레드를 일시중단하고 작성 조작에 대한 응답으로 다시 활성화하는 비용으로 상쇄할 수 있도록 이 값을 사용하십시오.
정보 값 기본값: com.ibm.ws.util.BoundedBuffer.spins_take의 값은 4로 나누어집니다. 권장: 음수가 아닌 정수 값을 사용하십시오. 실제로 2에서 8까지의 정수를 사용할 때 성능이 가장 좋습니다. 사용법: com.ibm.ws.util.BoundedBuffer.spins_put=6. 스레드가 일시중단되기 전에 6번의 시도가 이루어집니다. - com.ibm.ws.util.BoundedBuffer.yield_put=true 또는 false
버퍼에 요청을 넣기 위한 설정된 시도 횟수 후에 스레드가 프로세서를 다른 스레드로 산출함을 지정합니다. 일반적으로 낮은 시도 수가 바람직합니다.
정보 값 기본값: false 권장: 산출 효과는 개별 플랫폼에 특정한 구현입니다. 사용법: com.ibm.ws.util.BoundedBuffer.yield_put=boolean value - com.ibm.ws.util.BoundedBuffer.wait=밀리초 수
버퍼가 완전히 가득 차거나 버퍼가 비어있는 경우 요청이 불필요하게 지연될 수 있는 최대 시간(밀리초 단위)을 지정합니다.
정보 값 기본값: 10000 밀리초 권장: 10000 밀리초의 값이 대개 잘 작동합니다. 버퍼가 가득 차거나 비게되는 드문 인스턴스에서, 더 작은 값이 보다 시기적절한 요청 처리를 보장하지만 대개 더 작은 값의 사용은 성능에 영향을 줍니다. 사용법: com.ibm.ws.util.BoundedBuffer.wait=8000. 요청이 불필요하게 최대 8000 밀리초까지 지연될 수 있습니다.
- com.ibm.ws.util.BoundedBuffer.spins_take=value
- 적용을 클릭한 후 저장을 클릭하여 이러한 변경사항을 저장하십시오.


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tprf_tunechain
파일 이름:tprf_tunechain.html