关于weblogic Native IO

(一)  原理简单说明

服 务器启动,就会绑定到相应的端口,并为一个端口分配一个线程以接受连接请求,一旦服务器接受到连接请求并建立好连接以后,监听线程将处理权交给套接字复用 器,套接字复用器进行一定的处理,并会负责选择利用那个执行队列并将请求置入其中。当有一个请求进入执行队列,就会有一个空闲的执行县城从该队列里面取走 并向调用者返回结果。

(二)  执行队列和执行线程的相关配置

执行线程数量有一定的限制,在服务器启动的时候,就已经形成了一个含有一定数量执行线程的池,执行线程可能跨 servlet ejb jdbc 等,由于执行线程仅当程序成功结束或者出现异常才能被释放继续处理其他请求,所以如果执行线程执行的不够快,而请求又多的情况下,就会造成执行队列的阻塞。

相关的配置信息有:

server 菜单 configuration --- 〉高级配置 --- Config Execute Queues 中的配置项如下:

1、 Queue Length 队列长度,执行队列的长度

2、 Queue Length Threshold Percent 一个百分数,当 request 的数量达到队列长度的这个比例的时候, weblogic 会发出 overflow 的标志信息。

3、 Thread Count 服务器初始创建的执行线程的数量

4、 Thread Increase 如果 weblogic 发出 overflow 的标志信息, weblogic 会尝试增加这个数量的执行线程,以解决处理矛盾。

5、 Threads Maximum 最大执行线程数

6、 Threads Minimum 最小执行线程数

7、 Thread Priority 线程优先级

另外 server 菜单 configuration --- tuning 子页中还有一些相关的配置:

1、  Stuck Thread Max Time 黏联线程时间,超过这个时间没有返回的执行线程,系统将认为是黏联线程。

2、  Stuck Thread Timer Interval 系统检查黏联线程的时间间隔

如果 weblogic 认为某个队列中的所有的线程全部黏联的话, weblogic 将会增加执行线程的数量。

注意:执行线程的数量一旦增加,目前 weblogic 不会去减少他,如果增加了一些线程以后再次出现 overflow 的警告, weblogic 会继续增加执行线程的数量,一直到达到上限为止。

(三)  套接字复用器的相关配置

Weblogic 带有两个版本的套接字复用器,纯 java 版和本地接口版( jni ),一般来说在访问量小的情况下, java 版比 jni 版性能要好一些,因为 jni API 调用会损失一部分性能,但是访问量大的情况,一般都是 jni 版的性能比较好,所以尽量保证 weblogic 实用本地接口版的套接字复用器

相关的配置参数有两个,在 server 菜单 configuration --- tuning 子页中的第一个和第二个配置项。

Enable Native IO :启用本地 IO ,勾选这个配置以后, weblogic 就会启用本地接口版的套接字复用器

Socket Readers :如果不选上一个选项,则这个选项可用,也就是说 java 版的套接字复用器会被启用,并且, java 版的复用器会从执行线程中抽出这个比例的线程用于处理 socket 的请求。( java 客户端访问有关

你可能感兴趣的:(thread,weblogic,socket,ejb,jni)