1、单线程模式servlet
默认情况下,一个servlet实例将会产生多个线程来同时响应多个请求。
如果某个servlet实现SingleThreadMod旗标接口,那么这个servlet将会自动拒绝多路并行请求的模式。在这种情况下,weblogic会产生一个servlet实例池来满足单线程的要求。
目前,应该尽量避免使用单线程模式的servlet,如果需要在大容量的系统中使用单线程模式的servlet,那么应该调整如下的参数:
Single Threaded Servlet Pool Size 这个参数可在weblogic.xml或者在weblogic控制台上webapplication菜单---〉configuration页---〉Descriptor 子页中进行设置。
默认为5。
2、Weblogic生产模式下会自动监测servlet和jsp的更改情况,在产品模式下,不需要这些检查,可以通过下面的参数更改:
JSPPage Check Secs和Servlet Reload Check Secs均设为-1这两项是weblogic检查jsp和servlet的时间间隔。设置为-1,weblogic将不再检查。
关闭JSPKeep Generated和JSPVerbose,产品模式下也不需要这两个选项。
Enable JSP Line Numbers 这个选项是启用jsp行号的选项,启用行号的目的是用来支持调试,有些IDE可以在jsp生成的java源代码中设置断点用于调试。生产模式中也不需要。
注意:在产品发布模式下,请禁止对servlet和jsp的变更检查,这样除了能提高效率以外,还可以防止用上传文件的方式对服务器的攻击。如果需要更改servlet和jsp,可以重新部署应用。
3、Session和cookie的相关配置
概念会话cookie:如果不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览器会话期的 cookie被称为会话cookie。
Session Cookie Max Age Secs 就是会话cookie的超时时间,设置小于0表示不限制。
Session Invalidation Interval Secs 检查过期session的周期
Session Timeout Secs session的超时时间
4、Jdbc连接池的配置
URL 连接池地址
Driver Classname :jdbc驱动类名
Properties :属性,例如user=examples
Password :密码
Initial Capacity :初始连接数
Maximum Capacity :最大连接数
Capacity Increment :连接池每次增加连接的数量
Statement Cache Type :prepared statements缓存的策略,LRU算法在有新的语句到来时,将最不经常被用得语句调整出缓存。FIXED算法为先进先出的算法
Statement Cache Size :缓存中语句的最大数量,调整这个数值的大小,有利于提高系统的效率。
weblogic Server内部结构图:
(一) 原理简单说明
服务器启动,就会绑定到相应的端口,并为一个端口分配一个线程以接受连接请求,一旦服务器接受到连接请求并建立好连接以后,监听线程将处理权交给套接字复用器,套接字复用器进行一定的处理,并会负责选择利用那个执行队列并将请求置入其中。当有一个请求进入执行队列,就会有一个空闲的执行县城从该队列里面取走并向调用者返回结果。
(二) 执行队列和执行线程的相关配置
执行线程数量有一定的限制,在服务器启动的时候,就已经形成了一个含有一定数量执行线程的池,执行线程可能跨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的请求。(