반응형

JBoss EAP 7 쓰레드 설정

 

● io subsystem/worker/io-thread

- Kernel에 유입된 요청(소켓)을 Accept하는 non blocking thread

- 기본값 : core * 2

 io subsystem/worker/task-max-thread

- io-thread가 가져온 task를 처리하는 blocking thread

- WAS의 동시처리 thread

- 기본값 : core * 16

 

● undertow subsystem/max-connections

- 최대 동시접속 사용자 설정

- 기본값:  OS가 허용하는 범위 내에서 사용자 요청을 받아들임

- max-connections + @(queue)

- 값을 설정할 경우 정확한 수치로 적용되지 않음(queue 값을 확인하지 못함)

 

● undertow subsystem/filter/request-limit/max-concurrent-reqeusts

- 최대 동시접속 사용자 설정

- 기본값은 없으며 해당 필터를 사용할 경우 값을 지정해야 함

- 값을 설정하면 정확한 수치로 적용됨

● undertow subsystem/filter/request-limit/queue-size

- queue 사이즈

- max-concurrent-requests에 적용한 수치보다 많은 사용자가 접속할 경우 queue-size에 지정한 만큼

  요청을 queue에 담았다가 앞에 요청이 처리되어 자리가 생기면 순차적으로 처리됨

 

 

▶ 설정방법

1. worker thread 설정

standalone.xml/domain.xml에 io subsystem에서 설정

undertow subsystem에 io subsystem에 생성한 worker를 지정한다.

- <worker name="ajp-worker" task-max-threads="150"/>
- <ajp-listener name="ajp" socket-binding="ajp" worker="ajp-worker"/>

 

2. 최대 동시접속 사용자 설정

undertow subsystem의 max-connections는 적용한 수치가 정확하게 적용되지 않아

request-limit filter를 사용하여 최대 동시접속 사용자 설정을 지정한다. 

- <filter-ref name="connection-limit"/>

- <request-limit name="connection-limit" max-concurrent-requests="1000" queue-size="50"/>

 

<subsystem xmlns="urn:jboss:domain:io:1.1">
  <worker name="default"/>
  <worker name="ajp-worker" task-max-threads="150"/>
 <buffer-pool name="default"/>
</subsystem>

 

<subsystem xmlns="urn:jboss:domain:undertow:3.1" instance-id="${jboss.server.name}">
...
  <ajp-listener name="ajp" socket-binding="ajp" worker="ajp-worker"/>
...
  <host name="default-host" alias="localhost">
   <location name="/" handler="welcome-content"/>
   <filter-ref name="server-header"/>
   <filter-ref name="x-powered-by-header"/>
   <filter-ref name="connection-limit"/>
  </host>
 </server>
...
 <filters>
  <response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/>
  <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
  <request-limit name="connection-limit" max-concurrent-requests="1000" queue-size="200"/>
 </filters>
</subsystem>

 

위 설정은 동시에 150개의 요청을 처리하며 동시에 최대 1200개의 요청을 받아들임

 

3. 재기동

반응형

+ Recent posts