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. 재기동