现在的位置: 首页 > 综合 > 正文

设置Weblogic以提高并发处理性能

2013年08月17日 ⁄ 综合 ⁄ 共 1949字 ⁄ 字号 评论关闭

1.     设置Weblogic线程数

mydomain --〉Servers --〉myserver --〉Excute Queue --〉Default

Thread Count改为一个较大的值,如100

2.     设置Weblogic JDBC缓冲池

mydomain --〉JDBC Conection --〉

3.     关闭Weblogic服务器

4.     修改startWeblogic.cmd文件

打开{mydomain}\startWebLogic.cmd,找到下面的行:

 

@rem Set MEM_ARGS to the memory args you want to pass tojava. For
instance:

@rem set MEM_ARGS=-Xms32m-Xmx200m

set MEM_ARGS=

 

改为:

@rem Set MEM_ARGS to the memory args you want to pass to java. For instance:

@rem set MEM_ARGS=-Xms32m-Xmx200m

set MEM_ARGS=-Xms1024m-Xmx1024m-XX:MaxPermSize=128m-XX:MaxNewSize=384m-XX:NewSize=384m-XX:ThreadStackSize=4m

注意第3行是一行,中间没有换行,这里因为显示不下才变成了两行。

5.     重新启动Weblogic服务

 

 

 


        Weblogic性能优化-并发量

 并发量的优化主要是两个队列和处理Thread数:
                 1、OS控制的TCP队列:存放操作系统已经接受,而Weblogic还没有接受的Socket;
                
            2、Weblogic默认的Request队列:存放Weblogic已经接受,但是WebContainer还没有处理的Request;
                 3、Thread数量:Weblogic处理线程,和CPU数量及业务逻辑相关。
            
                 如果用户并发量很大,由于WebContainer的处理能力有限,会产生以下结果:
                 1、OS的Tcp队列满,用户的请求被拒绝,这时还没有到达Weblogic,所以Weblogic日志中没有任何记录;
                 2、OS的Tcp队列未满,这时用户的请求将会进入Tcp队列:
                     1)Weblogic处理忙,来不及接受Socket,导致连接超时,这时Weblogic日志中同样没有任何记录;
                     2)Socket连接被Weblogic接受进入Request队列;
                 3、Request队列由Thread处理,OS调度Thread,处理Request请求:
                     1)Request请求仍然在队列中,达到超时时间,连接中断,Weblogic日志中会记录错误信息;
                     2)Thread接受Request,进入OS的Thread调度队列;
                 4、Thread队列;
                     1)OS繁忙,队列中的部分Thread会超时中断,这时Weblogic日志中会记录错误信息;
                     2)Thread数量少,OS空闲多。
            
                 所以,优化并发量,需要遵循下列步骤:
                 1、调整Thread数量,使其与CPU数量相当:
                     1)如果Thread数量《CPU数量,就需要增加Thread数量;
                     2)如果Thread数量》CPU数量,并且延迟很多,就需要减少Thread数量;
                 2、调整OS Tcp等待队列:
                     1)如果客户方出现连接中断,但是Weblogic日志中没有任何信息,就增加队列长度;
                     2)增加幅度:每次增加25%;
                 3、调整程序,减少Thread处理及等待时间:
                     1)分割长事务,划分为多个短事务;
                     2)优化数据库;
                     3)减少远程调用;

抱歉!评论已关闭.