5장. Jakarta Enterprise Beans 하위 시스템 튜닝

JBoss EAP는 Jakarta Enterprise Bean을 캐시하여 초기화 시간을 절약할 수 있습니다. 이 작업은 빈 풀을 사용하여 수행합니다.

JBoss EAP에는 빈 인스턴스 풀과 빈 스레드 풀이라는 두 개의 다양한 빈 풀이 있습니다.

적절한 빈 풀 크기는 환경과 애플리케이션에 따라 다릅니다. 예상되는 실제 조건을 에뮬레이션하는 개발 환경에서 다양한 빈 풀 크기를 실험하고 스트레스 테스트를 수행하는 것이 좋습니다.

5.1. 빈 인스턴스 풀

빈 인스턴스 풀은 SLSB(상태 비저장 세션 빈) 및 MDB(Message Driven Beans)에 사용됩니다. 기본적으로 SLSB는 인스턴스 풀 default-slsb-instance-pool 을 사용하며 MDB는 인스턴스 풀 default-mdb-instance-pool 을 사용합니다.

빈 인스턴스 풀의 크기는 한 번에 생성할 수 있는 특정 엔터프라이즈 빈의 인스턴스 수를 제한합니다. 특정 엔터프라이즈 빈의 풀이 가득 차면 클라이언트는 차단하고 인스턴스를 사용할 수 있을 때까지 기다립니다. 클라이언트가 풀의 시간 제한 속성에 설정된 시간 내에 인스턴스를 가져오지 않으면 예외가 발생합니다.

빈 인스턴스 풀의 크기는 derive-size 또는 max- pool-size 를 사용하여 구성됩니다. derive -size 특성을 사용하면 다음 값 중 하나를 사용하여 풀 크기를 구성할 수 있습니다.

  • from-worker-pools - 최대 풀 크기가 시스템에 구성된 모든 작업자 풀의 총 스레드 크기에서 파생되었음을 나타냅니다.
  • from-cpu-count 는 최대 풀 크기가 시스템에서 사용 가능한 총 프로세서 수에서 파생되었음을 나타냅니다. 반드시 1:1 매핑은 아니며 다른 요인에 의해 보강될 수 있습니다.

derive-size 가 정의되지 않은 경우 빈 인스턴스 풀 크기에 max-pool-size 값이 사용됩니다.

참고

derive -size 특성은 max- pool-size 에 지정된 값을 재정의합니다.max- pool-size 값을 적용하려면 derive-size 를 정의하지 않아야 합니다.

특정 인스턴스 풀을 사용하도록 엔터프라이즈 빈을 구성할 수 있습니다. 이를 통해 각 엔터프라이즈 빈 유형에서 사용할 수 있는 인스턴스를 보다 세부적으로 제어할 수 있습니다.

5.1.1. 빈 인스턴스 풀 생성

이 섹션에서는 관리 CLI를 사용하여 새 빈 인스턴스 풀을 생성하는 방법을 보여줍니다. Configuration (구성) 탭에서 Jakarta Enterprise Beans 하위 시스템으로 이동한 다음 Bean Pool (빈 풀) 탭을 선택하여 관리 콘솔을 사용하여 빈 인스턴스 풀을 구성할 수도 있습니다.

새 인스턴스 풀을 생성하려면 다음 명령 중 하나를 사용합니다.

  • 파생된 최대 풀 크기를 사용하여 빈 인스턴스 풀을 생성하려면 다음을 수행합니다.

    /subsystem=ejb3/strict-max-bean-instance-pool=POOL_NAME:add(derive-size=DERIVE_OPTION,timeout-unit=TIMEOUT_UNIT,timeout=TIMEOUT_VALUE)

    다음 예제에서는 CPU 수에서 파생된 최대 크기 및 2분이라는 제한 시간을 사용하여 my_derived_pool 이라는 빈 인스턴스 풀을 생성합니다.

    /subsystem=ejb3/strict-max-bean-instance-pool=my_derived_pool:add(derive-size=from-cpu-count,timeout-unit=MINUTES,timeout=2)
  • 명시적인 최대 풀 크기가 있는 빈 인스턴스 풀을 생성하려면 다음을 수행합니다.

    /subsystem=ejb3/strict-max-bean-instance-pool=POOL_NAME:add(max-pool-size=POOL_SIZE,timeout-unit=TIMEOUT_UNIT,timeout=TIMEOUT_VALUE)

    다음 예제에서는 최대 30개의 인스턴스와 시간 제한이 30초인 my_pool 이라는 빈 인스턴스 풀을 생성합니다.

    /subsystem=ejb3/strict-max-bean-instance-pool=my_pool:add(max-pool-size=30,timeout-unit=SECONDS,timeout=30)

5.1.2. 빈에서 사용해야 하는 인스턴스 풀 지정

@org.jboss.ejb3.annotation.Pool 주석을 사용하거나 빈의 jboss-ejb3. xml 배포 설명자를 수정하여 특정 빈에서 사용할 특정 인스턴스 풀을 설정할 수 있습니다. 자세한 내용은 Developing Jakarta Enterprise Beans Applicationsjboss-ejb3.xml Deployment Descriptor 참조를 참조하십시오.

5.1.3. 기본 빈 인스턴스 풀 비활성화

기본 빈 인스턴스 풀을 비활성화할 수 있으므로, 기본적으로 엔터프라이즈 빈에서 인스턴스 풀을 사용하지 않습니다. 대신, 스레드가 엔터프라이즈 빈에서 메서드를 호출해야 하는 경우 새 엔터프라이즈 빈 인스턴스가 생성됩니다. 이 기능은 생성된 엔터프라이즈 빈 인스턴스 수에 제한을 두지 않는 경우에 유용할 수 있습니다.

기본 빈 인스턴스 풀을 비활성화하려면 다음 관리 CLI 명령을 사용합니다.

/subsystem=ejb3:undefine-attribute(name=default-slsb-instance-pool)
참고

빈이 특정 빈 인스턴스 풀을 사용하도록 구성된 경우 기본 인스턴스 풀을 비활성화해도 빈에서 사용하는 풀에는 영향을 미치지 않습니다.