블로그 이미지
윤영식
Full Stacker, Application Architecter, KnowHow Dispenser and Bike Rider

Publication

Category

Recent Post

'WebLogic'에 해당되는 글 2

  1. 2013.07.09 [WebLogic] Timeout 설정하기
  2. 2013.06.05 [WAS] Oracle DB Pool Connection Clustering
2013. 7. 9. 18:02 Middleware, Cloud/WAS

Apache-WebLogic간의 연결시 Timeout 설정에 대한 부분을 체크해 보자.


1. Apache-WebLogic간의 연결

  - AJP를 사용하지 않고 직접 WebLogic module을 httpd.conf 에 설정한다 (참조)

  - 환경설정 예

LoadModule weblogic_module    modules/mod_wl_22.so


<Location /services>
    SetHandler weblogic-handler
</Location>

<IfModule mod_weblogic.c>
WebLogicCluster 127.0.0.1:8881,127.0.0.1:8882
MatchExpression *.jsp
Idempotent OFF
DynamicServerList OFF
KeepAliveEnabled OFF
ConnectTimeoutSecs 16
ConnectRetrySecs 2
FileCaching OFF
</IfModule>



2. Apache Timeout 설정

  - ajp 연결이 아니므로 workers.properties의 socket_timeout 또는 reply_timeout과 관련이 없다

  - apache/httpd/conf/extra/httpd-default.conf의 Timeout 과 관련 (참조)

Timeout 300
클라이언트의 요청에 의해 서버와 연결이 되었을 때 클라이언트와 서버간에 아무런 메시지가 발생하지 않았을 때 오류로 처리될 시간을 초단위로 설정. 초기값은 1200초(20분)이며 보통은 300초(5분)로 지정한다. 네트워크의 속도가 나쁠수록 수치값은 높게 설정하는 것이 좋다.



3. WebLogic Timeout 설정

  - httpd.conf에 timeout 관련 설정을 한다

  - WebLogic안에서 request<->response에 대한 직접적인 처리 - WLIOTimeoutSecs 설정 (참조1, 참조2)

WLIOTimeoutSecs 300

  - default : 300 초

  - 웹로직으로 request를 보내고 response를 받기 위해서 대기하는 시간

  - post 방식으로 대량의 데이터를 WebLogic으로 보낼 때 timeout이 발생하면 plug-ins에 "POST_TIMEOUT"에러가 발생한다


  - WebLogic을 클러스터링 환경으로 구성하였을 경우는 idempotent 환경에 대하여 고려한다. (참조)

Idempotent OFF

  - WebLogic서버로 부터 request전송시 에러가 발생하거나, 서버로부터 결과를 기다리는 중에
     위에 정의된 WLIOTimeoutSecs 시간 초과되어서 에러 발생시 요청을 다시 보낼 것인가를 지정.
  - 서버와 연결은 되었는데 그 이후에 에러가 발생 하였을 경우 해당 옵션이 ON이면 다시 연결을 시도하고
    요청을 보내게 되므로 중복 요청의 가능성이 있다. OFF권장.


posted by 윤영식
2013. 6. 5. 14:06 Middleware, Cloud/WAS

JBoss 나 WebLogic에서 Oracle을 연결할 때 Oracle이 RAC(Oracle Real Application Clustering)으로 구성이 되어 있다면 이에 맞는 DB Pool 설정을 해야한다 



1. Oracle Clustering Config

  - 환경설정

<connection-url>

jdbc:oracle:thin:@(description=(address_list=(load_balance=on)(failover=on)(address=(protocol=tcp)(host=host1)(port=1521))(address=(protocol=tcp)(host=host2)(port=1521)))(connect_data=(service_name=xxxxsid)(failover_mode=(type=select)(method=basic))))

</connection-url>



2. JBoss Config

  - 환경파일 : <domainName>/deploy/oracle-ds.xml 

 <datasources>

   <local-tx-datasource>

  <jndi-name>cmstDs</jndi-name> 

  <connection-url>

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST = (LOAD_BALANCE = off)(FAILOVER = on)(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 128.0.0.1)(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = PGTMO)(FAILOVER_MODE =    (TYPE = SELECT)(METHOD = BASIC))))

</connection-url> 

  <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> 

  <user-name>yun</user-name> 

  <password>dowon</password>


  <min-pool-size>30</min-pool-size>

  <max-pool-size>50</max-pool-size>


  <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>

  <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name>


   <query-timeout>300</query-timeout>

   <background-validation-minutes>5</background-validation-minutes>

   <blocking-timeout-millis>10000</blocking-timeout-millis>


  </local-tx-datasource>

 </datasources>



3. Weblogic Config

  - 환경파일 : <domainName>/config/jdbc/xxxx-jdbc.xml

<?xml version='1.0' encoding='UTF-8'?>

<jdbc-data-source xmlns="http://xmlns.oracle.com/weblogic/jdbc-data-source" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/jdbc-data-source http://xmlns.oracle.com/weblogic/jdbc-data-source/1.2/jdbc-data-source.xsd">

  <name>youngsik-test</name>

  <jdbc-driver-params>

    <url>

jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=OFF)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=128.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PGTMO)))

    </url>

    <driver-name>oracle.jdbc.OracleDriver</driver-name>

    <properties>

      <property>

        <name>SendStreamAsBlob</name>

        <value>true</value>

      </property>

      <property>

        <name>user</name>

        <value>MOBICON</value>

      </property>

      <property>

        <name>oracle.net.CONNECT_TIMEOUT</name>

        <value>10000</value>

      </property>

    </properties>

    <password-encrypted>dowon-manse</password-encrypted>

  </jdbc-driver-params>

  <jdbc-connection-pool-params>

    <initial-capacity>1</initial-capacity>

    <connection-creation-retry-frequency-seconds>10</connection-creation-retry-frequency-seconds>

    <test-frequency-seconds>120</test-frequency-seconds>

    <test-connections-on-reserve>true</test-connections-on-reserve>

    <test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>

    <seconds-to-trust-an-idle-pool-connection>0</seconds-to-trust-an-idle-pool-connection>

  </jdbc-connection-pool-params>

  <jdbc-data-source-params>

    <jndi-name>jdbc/oracle/yun</jndi-name>

    <global-transactions-protocol>None</global-transactions-protocol>

  </jdbc-data-source-params>

</jdbc-data-source>



<참조>

  - Weblogic DB Configuration 이해하기

  - Oracle Cluster config

  - JBoss Deploy 및 ClassLoader구조와 Hibernate 사용하기 

  - JBoss 5 환경설정 및 튜닝 (필독)

posted by 윤영식
prev 1 next