반응형

2. JBoss EAP 7 구성 환경

2.1. 단계별 확인

OS : CPU/MEM/Kernel Parameter/etc

Java : HEAP/GC/Option/ etc

WAS: JBoss EAP 7

APP : framework/transaction/api/etc

 

2.2. OS

지원 OS

고려사항: ulimit/proc/tcp/etc

 

2.3. JVM

지원 버전

고려사항: HEAP/Perm/GC/Option/etc

 

2.4. WEB

고려사항: 동시접속자 + @

 

2.5. WAS

고려사항: 쓰레드 + @

반응형

' > WAS' 카테고리의 다른 글

4. JBoss EAP 7 설치  (0) 2022.06.30
3. JBoss EAP 7 구성  (0) 2022.06.30
1. JBoss 개요  (0) 2022.06.30
JBoss EAP 6 - access log 설정  (0) 2022.06.30
JBoss EAP 7 - access log 설정  (0) 2022.06.30
반응형

1. JBoss 개요

1.1. 오픈소스

 

JBoss EAP는 오픈소스 비지니스 기업 Redhat의 제품

JWS는 Apache 기반

EAP는 Wildfly 기반

 

오픈소스 비지니스

 

오픈소스 라이센스

 

오픈소스 장점

 

JBoss Community와 Enterprise 제품 비교

 

JWS는 Apache 기반

Apache 2.2 -> EWS 2

Apache 2.4 -> JWS 3

 

EAP는 Wildly 기반

AS 7 -> EAP 6

Wildfly 8,9,10 -> EAP 7

 

1.2. 미들웨어

Web Server / Web Application Server

 

1.3. JVM

반응형

' > WAS' 카테고리의 다른 글

3. JBoss EAP 7 구성  (0) 2022.06.30
2. JBoss EAP 7 구성 환경  (0) 2022.06.30
JBoss EAP 6 - access log 설정  (0) 2022.06.30
JBoss EAP 7 - access log 설정  (0) 2022.06.30
JBoss EAP6 system proeprty DEFAULT_CONNECTION_TIMEOUT  (0) 2022.06.30
반응형

JBoss EAP 6 - access log 설정

 

#standalone 모드

로그 경로를 변경할 경우 사용 - env.sh

지정하지 않을 경우 default 경로 사용 - ${jboss.server.base.dir}/log

export JAVA_OPTS="$JAVA_OPTS -Djboss.server.log.dir=/logs/server-group/server11"

 

access log 설정 - standlone.xml

<subsystem xmlns="urn:jboss:domain:web:2.2" ...>
 <connector name="http" .../>
 <connector name="ajp" .../>
 <virtual-server name="default-host" enable-welcome-root="false">
  <alias name="localhost"/>
  <alias name="example.com"/>

  <!-- combined -->
  <access-log pattern='%h %l %u %t %r %s %b %{Referer}i %{User-Agent}i %s %T'>
    <directory path="access" relative-to="jboss.server.log.dir"/>
  </access-log>
 </virtual-server>
</subsystem>

 

 

#domain 모드

로그 경로를 변경할 경우 사용 - host-slave.xml

<server name="server11" group="server-group">
 <paths>
  <path name="custom.server.log.dir" path="/logs/server-group/server11"/>
 </paths>

 

access log 설정 - domain.xml

<subsystem xmlns="urn:jboss:domain:web:2.2" ...>
 <connector name="http" .../>
 <connector name="ajp" .../>
 <virtual-server name="default-host" enable-welcome-root="false">
  <alias name="localhost"/>
  <alias name="example.com"/>

  <!-- combined -->
  <access-log pattern="%h %l %u %t %r %s %b %{Referer}i %{User-Agent}i %s %T">
   <!-- use change log dir-->

   <directory path="access" relative-to="custom.server.log.dir"/>

   <!-- use default log dir-->

   <directory path="access" relative-to="jboss.server.log.dir"/>
  </access-log>
 </virtual-server>
</subsystem>

반응형

' > WAS' 카테고리의 다른 글

2. JBoss EAP 7 구성 환경  (0) 2022.06.30
1. JBoss 개요  (0) 2022.06.30
JBoss EAP 7 - access log 설정  (0) 2022.06.30
JBoss EAP6 system proeprty DEFAULT_CONNECTION_TIMEOUT  (0) 2022.06.30
JBoss EAP 6 쓰레드 설정  (0) 2022.06.30
반응형

JBoss EAP 7 - access log 설정

 

#standalone 모드

로그 경로를 변경할 경우 사용 - env.sh

지정하지 않을 경우 default 경로 사용 - ${jboss.server.base.dir}/log

export JAVA_OPTS="$JAVA_OPTS -Djboss.server.log.dir=/logs/server-group/server11"

access log 설정 - standalone.xml
<subsystem xmlns="urn:jboss:domain:undertow:3.1" instance-id="${jboss.server.name}">
 <buffer-cache name="default"/>
 <server name="default-server">
  <ajp-listener name="ajp" socket-binding="ajp"/>
  <http-listener name="default" socket-binding="http" redirect-socket="https"/>
  <host name="default-host" alias="localhost">
   <location name="/" handler="welcome-content"/>

   <!-- combined -->
   <access-log prefix="access." directory="${jboss.server.log.dir}/access" pattern="%h %l %u %t %r %s %b %{i,Referer} %{i,User-Agent} %s %T"/>
   <filter-ref name="server-header"/>
   <filter-ref name="x-powered-by-header"/>
  </host>
 </server>
...
</subsystem>

 

 

#domain 모드

로그 경로를 변경할 경우 사용 - host-slave.xml

<server name="server11" group="server-group">
<paths>
 <path name="custom.server.log.dir" path="/logs/server-group/server11"/>
</paths>

 

access log 설정 - domain.xml

<subsystem xmlns="urn:jboss:domain:undertow:3.1" instance-id="${jboss.server.name}">
 <buffer-cache name="default"/>
 <server name="default-server">
  <ajp-listener name="ajp" socket-binding="ajp"/>
  <http-listener name="default" socket-binding="http" redirect-socket="https"/>
  <host name="default-host" alias="localhost">
   <location name="/" handler="welcome-content"/>
   <filter-ref name="server-header"/>
   <filter-ref name="x-powered-by-header"/>

   <!-- combined -->

   <!-- use change log dir -->
   <access-log prefix="access." relative-to="custom.server.log.dir" directory="access" pattern="%h %l %u %t %r %s %b %{i,Referer} %{i,User-Agent} %s %T"/>

   <!-- use default log dir -->

   <access-log prefix="access." relative-to="jboss.server.log.dir" directory="access" pattern="%h %l %u %t %r %s %b %{i,Referer} %{i,User-Agent} %s %T"/>
  </host>
 </server>
...
</subsystem>

반응형

' > WAS' 카테고리의 다른 글

1. JBoss 개요  (0) 2022.06.30
JBoss EAP 6 - access log 설정  (0) 2022.06.30
JBoss EAP6 system proeprty DEFAULT_CONNECTION_TIMEOUT  (0) 2022.06.30
JBoss EAP 6 쓰레드 설정  (0) 2022.06.30
JBoss EAP 7 쓰레드 설정  (0) 2022.06.30
반응형

org.apache.coyote.ajp.DEFAULT_CONNECTION_TIMEOUT=60000

org.apache.coyote.http11.DEFAULT_CONNECTION_TIMEOUT=-1

 

위 값은 브라우저에서 호출한 후 대기하는 응답시간은 의미가 없음

 

테스트 내용

WAS2 JBoss에서 DEFAULT_CONNECTION_TIMEOUT을 10초 지정

테스트 어플리케이션에 thread sleep을 30초 지정

 

WAS1에서 WAS2로 java.net.Socket으로 연결

소켓 통신을 하기 위해 버퍼 생성

 

테스트1 - 정상 동작

BufferedWriter로 GET 메서드를 사용하여 URL 호출

=> 30초 대기 후 정상 완료 확인

 

테스트2 - Timeout

연결 후 요청을 하지 않음

=> 10초 대기 후 종료 확인

 

 

더 확인이 필요한 내용...

애매함...

 

반응형
반응형

JBoss EAP 6 쓰레드 설정

 

default Thread Pool

기본 쓰레드는 CPU 코어당 512개로

최대 쓰레드 개수와 최대 동시 접속자수가 동시에 설정된다.

 

▶ 설정방법

standalone.xml/domain.xml에 web subsystem의 connector에 설정한다.

<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="true">

<connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp" max-connections="2048"/>

...

</subsystem>

 

 

bounded-queue-thread-pool Thread Pool

bounded-queue-thread-pool은 max-threads로 최대 쓰레드 개수와 최대 동시 접속자수가 동시에 설정된다.

그리고 모든 쓰레드를 사용중일 경우 queue-length에 지정한 만큼 사용자의 요청을 받아들여 대기열에 저장한 후

처리가 끝난 쓰레드가 생기면 대기열의 요청을 순차적으로 처리한다.

 

▶ 설정방법

standalone.xml/domain.xml에 threads subsystem에 executor를 생성한 후

web subsystem의 connector에 threads subsystem에 생성한 executor를 지정한다.

<subsystem xmlns="urn:jboss:domain:threads:1.1">

<bounded-queue-thread-pool name="ajp-thread-pool">

<core-threads count="50"/>
<max-threads count="100"/>
<queue-length count="30"/>

</bounded-queue-thread-pool>

</subsystem>

 

<subsystem xmlns="urn:jboss:domain:web:2.2" ...> 

<connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp" executor="ajp-thread-pool"/>

...

</subsystem>

 

 

bounded-queue-thread-pool을 사용할 때

keepalive-time 을 설정하면 idle 쓰레드 개수가 core-threads만큼 줄어든다.

반응형
반응형

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

반응형
반응형

How to detect leaked datasource connections using the cached connection manager (CCM) debug facility in JBoss EAP

 

https://access.redhat.com/solutions/309913

반응형

' > WAS' 카테고리의 다른 글

JBoss EAP 6 쓰레드 설정  (0) 2022.06.30
JBoss EAP 7 쓰레드 설정  (0) 2022.06.30
JBoss EAP 6 Native 설정  (0) 2022.06.30
JBoss EAP 6 Native 설정  (0) 2022.06.30
JBoss EAP 6/7 - vault : 패스워드 암호화  (0) 2022.06.30
반응형

JBoss EAP 6 Native 설정

 

JBoss 또는 Tomcat에 Native 모듈을 설정할 경우 사용자의 요청을 받아들이는 OS의 Native 영역에 Non blocking 방식으로 접근이 가능해진다.

그래서 처리량이 증가하여 성능 향상이 되거나 Thread의 Wait 현상이 완화된다.

추가로 JBoss EAP 7은 XNIO를 사용하므로 추가 설정 없이 사용가능하다

 

1. Native 모듈 다운로드 - JBoss가 설치된 OS 환경에 맞는 모듈 다운로드

- http://access.redhat.com (다운받기 위해서는 서브스크립션 필요)

 

 

2. Native 모듈 설치(리눅스 예제)

2.1. 모듈 복사

모듈을 압축 해제하고 제이보스 엔진의 modules 이하 동일한 경로에 해당 디렉터리와 모듈 복사 

modules/system/layers/base/org/hornetq/main/lib/linux-x86_64

modules/system/layers/base/org/jboss/as/web/main/lib/linux-x86_64

 

] cp -r modules/system/layers/base/org/hornetq/main/lib/linux-x86_64 $JBOSS_HOME/modules/system/layers/base/org/hornetq/main/lib

] cp -r modules/system/layers/base/org/jboss/as/web/main/lib/linux-x86_64 $JBOSS_HOME/modules/system/layers/base/org/jboss/as/web/main/lib

 

2.2. module.xml 수정

추가한 Native 모듈을 사용할 수 있도록 module.xml의 resource-root에 모듈 경로 지정

 

] vi $JBOSS_HOME/modules/system/layers/base/org/hornetq/main/module.xml

] vi $JBOSS_HOME/modules/system/layers/base/org/jboss/as/web/main/module.xml

 

<resources>

<resource-root path="lib/linux-x86_64"/>

</resources>

 

 

3. standalone/domain.xml 수정 - web subsystem에 native 사용 활성화

JBoss EAP 6에서는 기본으로 Native 모듈을 사용안함으로 설정되어 있음

 

] vi ${jboss.server.base.dir}/configuration/stanalone.xml or ${jboss.domain.base.dir}/configuration/domain.xml

 

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtualserver="default-host" native="true">

 

 

4. 재기동

반응형
반응형

JBoss EAP 6 Native 설정

 

JBoss 또는 Tomcat에 Native 모듈을 설정할 경우 사용자의 요청을 받아들이는 OS의 Native 영역에 Non blocking 방식으로 접근이 가능해진다.

그래서 처리량이 증가하여 성능 향상이 되거나 Thread의 Wait 현상이 완화된다.

추가로 JBoss EAP 7은 XNIO를 사용하므로 추가 설정 없이 사용가능하다

 

1. Native 모듈 다운로드 - JBoss가 설치된 OS 환경에 맞는 모듈 다운로드

- http://access.redhat.com (다운받기 위해서는 서브스크립션 필요)

 

 

2. Native 모듈 설치(리눅스 예제)

2.1. 모듈 복사

모듈을 압축 해제하고 제이보스 엔진의 modules 이하 동일한 경로에 해당 디렉터리와 모듈 복사 

modules/system/layers/base/org/hornetq/main/lib/linux-x86_64

modules/system/layers/base/org/jboss/as/web/main/lib/linux-x86_64

 

] cp -r modules/system/layers/base/org/hornetq/main/lib/linux-x86_64 $JBOSS_HOME/modules/system/layers/base/org/hornetq/main/lib

] cp -r modules/system/layers/base/org/jboss/as/web/main/lib/linux-x86_64 $JBOSS_HOME/modules/system/layers/base/org/jboss/as/web/main/lib

 

2.2. module.xml 수정

추가한 Native 모듈을 사용할 수 있도록 module.xml의 resource-root에 모듈 경로 지정

 

] vi $JBOSS_HOME/modules/system/layers/base/org/hornetq/main/module.xml

] vi $JBOSS_HOME/modules/system/layers/base/org/jboss/as/web/main/module.xml

 

<resources>

<resource-root path="lib/linux-x86_64"/>

</resources>

 

 

3. standalone/domain.xml 수정 - web subsystem에 native 사용 활성화

JBoss EAP 6에서는 기본으로 Native 모듈을 사용안함으로 설정되어 있음

 

] vi ${jboss.server.base.dir}/configuration/stanalone.xml or ${jboss.domain.base.dir}/configuration/domain.xml

 

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtualserver="default-host" native="true">

 

 

4. 재기동

반응형

+ Recent posts