兰州新东方Dubbo ⾼级篇_10_Dubbo
线程模型
线程模型
dubbo.io/Ur+Guide-zh.htm ⽤户指南>>线程模型 类似于数据库的连接池() ()
vedio
Dispatcher
all 所有消息都派发到线程池,包括请求,响应,连接事件,断开事件,⼼跳等。direct 所有消息都不派发到线程池,全部在IO 线程上直接执⾏。
message 只有请求响应消息派发到线程池,其它连接断开事件,⼼跳等消息,直接在IO 线程上执⾏。
execution 只请求消息派发到线程池,不含响应,响应和其它连接断开事件,⼼跳等消息,直接在IO 线程上执⾏。connection 在IO 线程上,将连接断开事件放⼊队列,有序逐个执⾏,其它消息派发到线程池。
ThreadPool
fixed 固定⼤⼩线程池,启动时建⽴线程,不关闭,⼀直持有。(缺省)cached 缓存线程池,空闲⼀分钟⾃动删除,需要时重建。
limited 可伸缩线程池,但池中的线程数只会增长不会收缩。(为避免收缩时突然来了⼤流量引起的性能问题)。
配置如:
配置标签
<dubbo:provider/><dubbo:protocol/>例:
<!-- 当ProtocolConfig 和ServiceConfig 某属性没有配置时,采⽤此缺省值 -->
<dubbo:provider timeout="10000" threadpool="fixed" threads="100" accepts="1000" />
<dubbo:protocol/>
() ()
服务提供者协议配置:
配置类:com.fig.ProtocolConfig
说明:如果需要⽀持多协议,可以声明多个<dubbo:protocol>标签,并在<dubbo:rvice>中通过protocol 属性指定使⽤的协议。
标签
属性
对应URL 参数
类型是否必填
缺省值作⽤
描述兼容性
<dubbo:protocol>id string可
选dubbo配
置
关
联
协议BeanId,可以在<dubbo:rvice
protocol="">中引⽤此ID,如果ID不填,缺省
和name属性值⼀样,重复则在name后加序
号。
2.0.5
以上
版本
babyshower
<dubbo:protocol>name<protocol>string必
填dubbo性
能
调
优
协议名称 2.0.5
以上
版本
<dubbo:protocol>port<port>int可
选dubbo协议缺省端⼝为20880,rmi协议缺
省端⼝为1099,http和hessian协议缺省
端⼝为80
如果配置为-1 或者没有配置port,则会
分配⼀个没有被占⽤的端⼝。
Dubbo 2.4.0+,分配的端⼝在协议缺省
端⼝的基础上增长,确保端⼝段可控。
服
务
发
现
服务端⼝ 2.0.5
以上
版本
<dubbo:protocol>host<host>string可
选⾃动查找本机IP服
务
发
现父亲节英文
-
倒嗓服务主机名,多⽹卡选择或指定VIP及域名时
使⽤,为空则⾃动查找本机IP,-建议不要配
置,让Dubbo⾃动获取本机IP
2.0.5
以上
版本
<dubbo:protocol>threadpool threadpool string可
选fixed性
能
调
优
线程池类型,可选:fixed/cached 2.0.5
以上
版本
<dubbo:protocol>threads threads int可
选100性
能
调
功夫熊猫 英语版
优
服务线程池⼤⼩(固定⼤⼩) 2.0.5
以上
版本
<dubbo:protocol>iothreads threads int可
选cpu个数+1性
能
调
优
io线程池⼤⼩(固定⼤⼩) 2.0.5
以上
版本
<dubbo:protocol>accepts accepts int可
选0性
能
调
优
服务提供⽅最⼤可接受连接数 2.0.5
以上
版本
<dubbo:protocol>payload payload int可
选88388608(=8M)性
能
调
优
请求及响应数据包⼤⼩限制,单位:字节 2.0.5
以上
版本
<dubbo:protocol>codec codec string可
选dubbo性
能
调
优
协议编码⽅式 2.0.5
以上
nt版本
<dubbo:protocol>rialization rialization string可
选dubbo协议缺省为hessian2,rmi协议缺
省为java,http协议缺省为json
性
能
调
优
协议序列化⽅式,当协议⽀持多种序列化⽅式
时使⽤,⽐如:dubbo协议的
dubbo,hessian2,java,compactedjava,以及
http协议的json等
2.0.5
以上
版本
<dubbo:protocol>accesslog accesslog string/boolean可
选服
务
治
理
设为true,将向logger中输出访问⽇志,也可填
写访问⽇志⽂件路径,直接把访问⽇志输出到
指定⽂件
2.0.5
以上
版本
<dubbo:protocol>path<path>string可
选服
务
athlete发
现
提供者上下⽂路径,为服务path的前缀 2.0.5
以上
版本
<dubbo:protocol>transporter transporter string可
选dubbo协议缺省为netty性
能
调
优
协议的服务端和客户端实现类型,⽐如:
dubbo协议的mina,netty等,可以分拆为rver
和client配置
2.0.5
以上
版本
<dubbo:protocol>rver rver string可
选dubbo协议缺省为netty,http协议缺省为
rvlet
性
能
调
优
协议的服务器端实现类型,⽐如:dubbo协议
的mina,netty等,http协议的jetty,rvlet等
2.0.5
以上
版本
<dubbo:protocol>client client string可
选dubbo协议缺省为netty性
能
调
优
协议的客户端实现类型,⽐如:dubbo协议的
mina,netty等
2.0.5
以上
版本
<dubbo:protocol>dispatcher dispatcher string可
选dubbo协议缺省为all性
能
调
优
协议的消息派发⽅式,⽤于指定线程模型,⽐
如:dubbo协议的all, direct, message,
execution, connection等
2.1.0
以上
版本
<dubbo:protocol>queues queues int可0性线程池队列⼤⼩,当线程池满时,排队等待执 2.0.5
选能
调
优⾏的队列⼤⼩,建议不要设置,当线程程池时
应⽴即失败,重试其它服务提供机器,⽽不是
排队,除⾮有特殊需求。
以上
版本
<dubbo:protocol>chart chart string可
选UTF-8性
能
调
优
序列化编码 2.0.5
以上
版本
<dubbo:protocol>buffer buffer int可
选8192性
能
调
优
⽹络读写缓冲区⼤⼩ 2.0.5
以上
版本
<dubbo:protocol>heartbeat heartbeat int可
选0性
能
调
优
⼼跳间隔,对于长连接,当物理层断开时,⽐
如拔⽹线,TCP的FIN消息来不及发送,对⽅
收不到断开事件,此时需要⼼跳来帮助检查连
接是否已断开
2.0.10
以上
版本
<dubbo:protocol>telnet telnet string可
选服
务
治
理
所⽀持的telnet命令,多个命令⽤逗号分隔 2.0.5
以上
版本
<dubbo:protocol>register register boolean可
选true服
务
治
理
该协议的服务是否注册到注册中⼼ 2.0.8
以上
版本
<dubbo:protocol>contextpath contextpath String可
选缺省为空串服
务
治
理
2.0.6
以上
版本
Linux ⽤户线程数限制导致的 java.lang.OutOfMemoryError: unable to create new native thread异常系统默认最⼤的线程数为1024个
[root@edu-provider-01 ~]# cat /etc/curity/limits.f
# Default limit for number of ur's process to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 1024
root soft nproc unlimited
[root@edu-provider-01 ~]# vi /etc/curity/limits.f
调整时要注意:
1、 尽量不要使⽤ root ⽤户来部署应⽤程序,避免资源耗尽后⽆法登录操作系统。
因为root⽤户默认没有限制线程数,如果线程过多,会使资源占⽤很多,导致不能关机,只能硬关机
2、 普通⽤户的线程数限制值要看可⽤物理内存容量来配置
[root@edu-provider-01 ~]# cat /proc/meminfo |grep MemTotal
MemTotal: 2941144 kB
[root@edu-provider-01 ~]# echo "2941144/128"|bc
22977
toro什么意思[root@edu-provider-01 ~]# ulimit -u
九月 英文1024
[1]+ Stopped vi /etc/curity/limits.f
[root@edu-provider-01 ~]# vi /etc/curity/limits.f
[root@edu-provider-01 ~]# cat /etc/curity/limits.f
# Default limit for number of ur's process to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 12000
root soft nproc unlimited
[root@edu-provider-01 ~]#
计算⽅式:
default_nproc = total_memory/128K; $ cat /proc/meminfo |grep MemTotal $ echo "2941144/128"|bc
$ ulimit -u
ulimit -a #显⽰⽬前资源限制的设定ulimit -u #⽤户最多可开启的程序数⽬
重启,使之⽣效:# reboot