【转】关于listener.ora中Prespawned的相关解释

Listener有三种处理客户端请求的方式:
1. Dedicated Connection
  当客户端发出请求后,listener直接建立一个新的进程处理客户端请求,
  当连接建立后,Listener会放弃对客户端与该进程通讯的控制权。
  所以该连接也称为dedicated 或者bequeath连接。注意该新建的进程
  是在客户端请求时候Listener建立的。

2.Prespawned Connection
  Prespawned connection是Dedicated connection的特例。如果你希望客户端
  能与服务器快速建立连接,而又是Dedicated connection的话,
  可以采用该方式。因为当客户端发送连接请求到服务器的时候,不需要等待Listener
  去建立一个进程来服务该客户端,因为这些进程已经预先Spawn了(Listener在启动时候
  就已经根据配置参数Spawn相应数量的进程,放在一个Prespawned processes Pool里面,
  此参数PRESPAWN_MAX在listener.ora文件里面配置)。所以称之为Prespawned.
  注意:PRESPAWN_MAX这个参数是指总的prespawned processes,你可以指定每种
  协议prespawn的process(即pool_size参数),当然,总数不能超出PRESPAWN_MAX的值。

3.Multithreaded Connection
  这种连接方式也有相应的服务客户端的进程,称之为Dispatcher,
  它和Prespawned process有点相似,也是预先Spawn的。不过跟Prespawned process
  有两点区别:
  a)dispatcher是在instance启动时候就spawn的,而prespawned process
    是在listener启动时候spawn的。
  b)dispatcher是共享的,也就是说,它不只是为一个客户端服务,当它接受了
    客户端连接后,会把客户请求放在request queue里面,让另外一个进程
    shared server process进行处理;跟着它就会服务另外一个客户端的请求。
  c)dispatcher在完成与客户端的成功连接后,需要向Listener注册该连接(Prespawned
    process没这个步骤)。需要这个步骤是因为可以让listener知道当前每个dispatcher的
    负载情况,使dispatcher不会超出它能handle的最大连接数 (通过配置init.ora文件
    里面的mts_dispatchers参数的子参数CON和SESS就可以决定dispatcher能handle的最大
    连接数。不过别混淆CON和SESS子参数的意义,因为如果你需要实现connection
    pooling的话,就要靠这两个参数);另一方面,可以实现我们常说的load-balancing(负载平衡)。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28538954/viewspace-755669/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28538954/viewspace-755669/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值