일단 제가 아는대로만 답변을 드리겠습니다...:)
먼저 오라클 서버를 운영하는 방식은 두가지가 있습니다.
하나는 Dedicated Server 방식으로 운영하는 것이고 다른 하나는 Multi Threaded Server
방식으로 운영하는 것입니다.
전자는 하나의 사용자 세션에 대하여 하나의 오라클 서버가 spawn되어 서비스를 처리
하는 것이고 후자는 하나의 MTS 서버가 여러 사용자로부터의 요구를 처리할 수 있습니다.
일반적으로 얘기해서 소수의 사용자가 비교적 시간이 많이 걸리는 질의를 수행하는 경우
Dedicated Server 방식이, 다수의 사용자가 비교적 단순한 질의를 수행하는 경우에는
Multi Threaded Server 방식이 적합하지만 단지 이렇게 일률적으로 설명하긴 좀 힘들고
이러한 원칙에 의해서 실제 운영되는 서버의 각종 자원을 판단하여 튜닝을 해야만
최적의 성능을 얻을 수 있습니다.(물론, 필요에 따라 Dedicated Server와 Multi
Threaded Server를 혼합해서 운용할 수도 있습니다.)
님께서 궁금해 하시는 Dispatcher라는 것은 Multi Threaded Server 방식으로 운영될
때에 추가적으로 동작하는 프로세스입니다. 최소한 서비스되는 네트웍 프로토콜 당
하나의 디스페처가 필요합니다만 MTS 서버의 수보다는 작은 것이 일반적입니다.
대체로 MTS 서버가 사용자 세션으로부터의 연결을 직접 담당한다면 디스페쳐는 다수
MTS 서버로부터의 요구를 오라클 데이타베이스 데몬으로 전달해주는 역할을 한다고
생각하시면 적절하실 듯 합니다.
이러한 디스패쳐와 MTS 서버의 수를 결정하는 문제는 그리 단순한 문제가 아닙니다.
현재 가용한 시스템의 메모리 크기를 비롯한 자원의 크기도 영향을 미칠 것이고
각각의 사용자 세션이 요청하는 데이타베이스 질의가 주로 어떤 것이냐 하는 것도
영향을 미칩니다.
대체로 이러한 수치를 결정하는 방식은 일정기간동안 현재의 설정으로 데이타베이스
를 운영하면서 성능 통계를 수집하고 그 결과를 분석하여 병목이 되는 지점을 파악
하여 해당 매개변수의 값을 적절하게 조절하는 방식으로 이루어집니다. 오라클이라는
디비 자체가 그 성능이 튜닝의 결과에 따라 상당한 차이를 보이고 튜닝 작업 자체도
매우 어렵고 복잡한 작업입니다.
보다 자세한 내용에 관해서 알고 싶으시다면 오라클 매뉴얼 중에서 튜닝 가이드를
읽어보시기 바랍니다.
>>whatisid 님께서 쓰시길<<
:: initORCL.ora 에서
::
:: mts_dispatchers="(address=(protocol=tcp)(host=db))(dispatchers=20)"
:: mts_max_dispatchers=40
:: mts_servers=30
:: mts_max_servers=100
:: local_listener="(ADDRESS=(PROTOCOL=TCP)(HOST=db)(port=1521))"
::
:: 처럼 잡고 lsnrctl service 라고 하니까 DISPATCHER가 20개 보이더군요.
::
:: 그리고 웹서버에서 접속을 날리자 각 DISPATHCER의 established가 첫번째꺼
::
:: 부터 1씩 증가해나가는게 보입니다.
::
:: lsnrctl service에서 보이는 내용이
::
:: DISPATCHER established:1 refused:0 current:0 max:254 state:ready
:: D000 <machine: db, pid: 6037>
::
:: 이거니까 dispatcher 하나당 max유저는 254인가요?
::
:: 그렇다면 이 설정으로는 20*254명까지 동시접속이 된다는 의미인지?
::
:: 아니면 max_dispatchers=40 으로 했으니까 나중에 더 많아지면 40*254까지
::
:: 된단건가요?
::
:: 궁금합니다. 이 설정들의 의미가. 그리고 mts_servers의 숫자의 의미는
::
:: 또 뭘까요...? 왠지 이숫자들을 잘 설정해야 될것만 같은데요.
::
:: 잘 아시는 분들의 답변 부탁드립니다. ~~~
::
:: 너무 궁금하거든요.
|