>>이청열 님께서 쓰시길<<
:: mts를 설정하여 운영하고자 하는데... 예가 너무 부족한듯하여... 이렇게 질문을 올립니다.
::
:: 오라클에 약 500명의 동시접속자가 있다고 보구 있구요.
::
:: 물론 최대일경우로 하고 잡은 것입니다.
::
::
:: 이럴 경우 대충 아래 정도의 수치면 ...되는지 알고 싶습니다.
::
:: 오라클 8.1.6
::
:: MTS_DISPATCHERS = "(ADDRESS= (PROTOCOL= TCP)(Host=hostip))(dispatchers=500)"
:: MTS_MAX_DISPACTHERS = 500
:: MTS_MAX_SERVERS = 100
:: MTS_SERVERS = 50
:: LOCAL_LISTENER = "(ADDRESS_LIST= (ADDRESS=(PROTOCOL= TCP)(Host=hostip)(Port= 1521)))"
::
::
::
:: 이렇게 하면 되나요....?
::
:: 에궁...무식한놈이라... 제대로 모르겠네요...
:: 좀 갈켜 주십시오...^^
저도 잘모르고 배우는 중이라 별도움은 안될거같지만 그냥써봅니다.쩝.
MTS_DISPATCHERS = "(ADDRESS= (PROTOCOL= TCP)(Host=hostip))(dispatchers=500)"
MTS_MAX_DISPACTHERS = 500
MTS_MAX_SERVERS = 100
MTS_SERVERS = 50
LOCAL_LISTENER = "(ADDRESS_LIST= (ADDRESS=(PROTOCOL= TCP)(Host=hostip)(Port= 1521)))"
(dispatchers=500)는 상당히 과도하군요
maximum number of concurrent sessions
dispatchers = CEIL(-------------------------------------)
connections per dispatcher
500이면 dispatcher 는 2~3정도가 디폴트인거같군요.
MTS_MAX_DISPATCHERS,MTS_SERVERS, MTS_MAX_SERVERS는
SHARED_POOL_SIZE과 LARGE_POOL_SIZE에 밀접한 영향이 있기때문에
튜닝이 필요한 부분인거같군요.(시스템에 의존적임)
만약 자주죽거나 행업이 발생할 시는 우선 리스너패치를 받으시고
dispatcher수를 조금식 늘려서 테스트를 해보세요.
제경우는 6G(M/M)에 dispatcher=20로 설정하니 동시 400유저까지는
버티더군요.
당근 SHARED_POOL_SIZE과 LARGE_POOL_SIZE는 dedicate server용으로
디폴트가정해지기 때문에 MTS방식에 맞게 늘려주셔야합죠.
/*MTS을 위한 쿼리문들*/
SELECT NETWORK "PROTOCOL",
SUM(BUSY) / ( SUM(BUSY) + SUM(IDLE) ) "TOTAL BUSY RATE"
FROM V$DISPATCHER
GROUP BY NETWORK;
SELECT NETWORK "PROTOCOL",
DECODE( SUM(TOTALQ), 0, 'NO RESPONSES',
SUM(WAIT)/SUM(TOTALQ) || ' HUNDREDTHS OF SECONDS')
"AVERAGE WAIT TIME PER RESPONSE"
FROM V$QUEUE Q, V$DISPATCHER D
WHERE Q.TYPE = 'DISPATCHER'
AND Q.PADDR = D.PADDR
GROUP BY NETWORK;
SELECT COUNT(*) "Shared Server Processes"
FROM v$shared_server
WHERE status != 'QUIT';
SELECT DECODE( totalq, 0, 'No Requests',
WAIT/TOTALQ || ' HUNDREDTHS OF SECONDS')
"AVERAGE WAIT TIME PER REQUESTS"
FROM V$QUEUE
WHERE TYPE = 'COMMON';
그리고 과도한 쿼리문 엄청난 데이타Select들은 MTS방식에 안맞습니다.
그런이유로 tnsnames.ora에
SERVER=DEDICATED
식으로 별도에 alias를 만들어두심도...
제경우엔 log화일을 보면(리스너에 행업(락),이유없이 죽는경우)
ora-04031 ora-00600에러가 대부분 과도한 쿼리문때문에 발생했었습니다.
허접한 의견이었습니다.쩝.
|