JBoss EAP (Wildfly) 튜닝 – ajp connector 에 대한 Thread Pool 생성하기
JBoss EAP6 (AS7) 의 웹 서브시스템은 클라이언트 요청에 대해서 스레드를 할당해 처리한다. 웹 서브시스템은 클라이언트의 요청을 수신하면 풀에서 대기 상태의 스레드를 할당하고 요청이 완료(클라이언트에의 응답 완료 시)되면 스레드 풀에 반환한다.
클라이언트 요청이 들어왔을 때 스레드 풀이 최대값에 도달하지 않는 경우 새로운 스레드를 생성하여 할당한다. 스레드 풀이 최대값에 도달한 경우에는 클라이언트와 연결되지 않는다. 클라이언트의 동시 접속 수는 이 스레드 풀의 최대값에 의해 결정된다. 스레드 풀은 커넥터마다 생성하여 관리한다.
Http와 AJP 커넥터에서 사용자 요청을 처리하기 위해서는 미리 최대 사용자에 맞게 커넥터의 “Max Connections” 수와 thread 생성에 제한이 없는 unbounded-queue-thread-pool을 할당해 놓는다.
다음은 Http 커넥터에 unbounded-queue-thread-pool executor 를 설정하는 과정이다.
1. AJP Connector 생성과 max-connections 설정하기
위치
|
속성
|
설명
|
/subsystem=web/connector=ajp
|
max-connections
|
|
1.1 ajp connector 생성 하기
[domain@localhost:9999 /] /profile=default/subsystem=web/connector=ajp:add(socket-binding=ajp, protocol="AJP/1.3", enabled=true, scheme=http) { "outcome" => "success", "result" => undefined, "server-groups" => undefined }
1.2 ajp connector 에 max-connections 설정하기
[domain@localhost:9999 /] /profile=default/subsystem=web/connector=ajp:write-attribute(name=max-connections,value=2000) { "outcome" => "success", "result" => undefined, "server-groups" => undefined }
2. AJP Connector 를 위한 Thread Factory 정의
[domain@localhost:9999 /] /profile=default/subsystem=threads/thread-factory=ajp-connector-factory:add(thread-name-pattern="AJP-%t", priority="9", group-name="uq-thread-pool") { "outcome" => "success", "result" => undefined, "server-groups" => undefined }
3. AJP Connector 를 위한 Executor 생성
[domain@localhost:9999 /] /profile=default/subsystem=threads/unbounded-queue-thread-pool=uq-thread-pool:add(thread-factory="ajp-connector-factory", keepalive-time={time=30, unit="seconds"}, max-threads=30) { "outcome" => "success", "result" => undefined, "server-groups" => undefined }
4. AJP Connector 에 새로 생성한 Thread Pool를 지정
[domain@localhost:9999 /] /profile=default/subsystem=web/connector=ajp:write-attribute(name=executor, value="uq-thread-pool") { "outcome" => "success", "result" => undefined, "server-groups" => undefined }
5. 설정 결과 확인
5.1. 다음과 같이 domain.xml 에 profile=defalut에 subsystem=thread 에 생성된 것을 확인한다.
5-2. 다음과 같이 domain.xml 에 profile=default 에 subsystem=web 에서 변경된 것을 확인한다.
본 내용은 “거침없이 배우는 JBoss EAP6” 중 일부를 발췌한 내용입니다.
거침없이 배우는 JBoss – 전준식 엮음/지&선(지앤선) |