2009年7月22日星期三
如何修改IntelliJ IDEA启动时默认打开的工程
2009年7月2日星期四
解决weblogic10下部署spring+hibernate3不兼容问题
2009年6月24日星期三
org.apache.torque.util.LargeSelect实现分页查询和torque generator代码产生器
2009年5月25日星期一
用subst命令解决xp home无法共享文件夹的问题
2009年5月24日星期日
Eclipse3.1.4 JEE web开发攻略
2009年5月4日星期一
2009年3月20日星期五
weblogic10.3 tuning
性能调优牵涉的东西很多,一套系统运行涉及到防火墙,路由器,web服务器,负载均衡器,应用服务器,db,在网络,jvm,wls,服务器,操作系统调优等方面都有可能调优。
网络
网络调优主要指带宽,用集群复制,特别是同步复制,要求有很高带宽(比如100M)。可以观察包再发送的情况,出现retry时,可能就需要调优
集群中需要更大的网络带宽
特别是servlet和EJB复制session信息
使用压缩gzip
同一台机器也会出现带宽不够的情况
比如多个实例部署在一台机器上
JVM
除了sun标准的jdk,还有jrokit,ibm等特定jvm,有些不一样
weblogic下建议使用jrokit
他对某些cpu指令进行优化,可以提高20~50%性能
32/64位优化, mission control在runtime时,进行监控,找内存泄露在哪里产生,是哪个对象产生的
Real time特性(由JRockit支持)
限制事务必须在多少毫秒之后完成,有很好的实时性,保证GC及时回收,保证系统运行是平稳的
jrockit mission control
监控,发现内存泄露,是由哪个对象产生的
GC
不要使用System.gc(),会中断时间比较长
Object不需要时,将其置为null,可以释放大量的内存空间
影响GC的几点:
对象使用的频率
对象的life spans
relaitions between objects
多用pool,小的object不要使用pool,因为会带来GC的效率问题
weblogic console有GC可进行手工GC
WLS
JNDI复制是通过知觉存根(stub)来进行同步的
session可以同步,但事务不能同步,只能手工迁移,迁完后需要清除,否则会有冲突,session bean就有这个问题
版本问题,可以通过将自己的jar放到classpath中的最前面,保证使用自己的jar和类
大版本号一致就可以进行集群
weblogic.jar中有util.Multicast进行多播测试
weblogic分成下面三个版本
weblogic standard edition、weblogic enterprise edition(oracle EM, cluster)、weblogic suite
native IO
在console tuning里有个enable native io的选项,可以选中它,他会调用一些包,用操作系统本地io进行优化
tuning acceptbacking,它规定wls向操作系统请求的队列大小,如果许多客户端被拒绝,可以调高它
disable servlet and jsp page check
可以去掉servlet和jsp的检查,将其置为-1(不检查)
servlet-reload-check-secs=-1 in container-descritor
jsp-param pageCheckSeconds=-1
servletReload...=-1
EJB优化
stateless session beans and message driven beans
max-beans-in-free-pool andd initial-beans-in-free-poo
use proven session-
JMS调优
wl_jms_perform_GD.htm
jms pooling
jms store,file store in9.0 much faster as in 8.1 sp4
prefer file-stoers over DB stores
server-side SAF消息的存储和转发,如果消息接收不到,消息就丢了
clusterable,会自动retry,会提高50%性能
JDBC调优
连接池,把你的最小和最大设成一样的,数量一般跟你的并发线程数差不多
用prepared-statement cache,缺省是10个sql,更多可以在描述符中设置
如果有XA分布式事务就用它,肯定比你try、catch好得多,可以提高系统的稳定性
如果数据库没有同步功能(oracle可以做数据库间的同步),multipool只起到一个负载均衡作用
热部署
可以部署不同版本,如果发现有旧版本session发给旧版本处理,没有session发给新版本处理
weblogic集群
可支持系统无缝升级,console向导迁移
嵌套集群,比如广域网的集群(每个地方可以有自己的集群,比如上海可以用成都的集群能力)
代理服务器
weblogic有个war应用,里面有个servlet可以进行url过滤,将一些静态页面直接响应,只对后缀是jsp等才路由到集群去处理
WLS插件会解析sesison,写cookie指名其在哪个server上,端口等信息,起到负载均衡的作用
垂直方向集群
一台及其可以部署多个实例,可以进行负载均衡
proxy(比如apache server)与server(多个weblogic server)如何配合,要安装一些插件,包括cookie
corrence可以将业务对象也复制(不光是session),实现更好的集群
可以对对象进行集群,比如EJB对象,ejb存根具有知识管理功能,一旦一个实体bean出现故障,能动态路由另外一个
集群时,要清除掉down掉的server里面的jms,jta数据,否则会有冲突
jms和jdbc集群有些不一样,比如jdbc只能起到load balance,不能进行failover,因为一旦sql提交很难再failover
集群的范畴
局域网,城域网,广域网集群
前两者通过session复制同步方式集群,广域网用异步方式集群,并允许一定的延时
WAN广域网进行集群需要路由器有足够多的空间缓存路由信息,因为一旦发送失败必须要先缓存它们
管理服务器
心跳是管理服务其用心跳方式和被管理服务器进行同步(差不多10秒广播依次),如果错过了三次失败,会标记为失败,从管理服务器看得到状态,有健康状态检查
两层结构集群
两层结构间通信通过socket,而操作系统度打开socket数量有一定的数量,当达到一定数量时,势必会出现瓶颈, 如spring
多层集群(EJB)
MVC来看集群
web层 web cache(提供web服务器,压缩减少网络负载)
中间应用层 coheence(java对象内存共享)
数据库层 RAC
wls常见问题排除
谁发起,谁结束的原则
事务控制问题,默认事务超时30s web console-domain-JTA-timeout seconds
连接池问题,没及时关掉,避免一些超长时间的数据库操作
wls9~10后,会根据线程数自动调整连接池的连接数量
数据库重启的问题,设置测试表,获取连接时可以测试连接是否正常
内存问题,操作系统对进程空间的限制,绝大多数系统有2G的限制
jdk控制栈和堆大小设置
定制定期内存回收小程序,循环调用system.gc()
SOA
WLS SOA = weblogic + OSB(oracle service bus)
Oracle weblogic提供的工具
JRMC,WLDF,AD4J等几个工具使用
weblogic内置的主动自我诊断框架 diagnostic framework
在console的左下脚下,它会自动调整,也可根据管理员指定一些规则来自动调整
AD4J
有个更强大的工具,企业管理器诊断包application diagnosttics for Java(AD4J)
Times Ten
针对物理内存而设计的优化数据库,针对应用层设计
所有数据存于内存,采用关系型数据库,通过odbc,jdbc,sql92访问
session复制要求控制在2~3K
使用KISS(尽量小,简单)原则,尽量使用内存复制
不要使用很大的HTTPSession对象
尽量使用容器管理事务CMT
服务器
硬件调优
操作系统
操作系统tuning, 尤其是linux,unix,可以调整swap空间,process and threads,top paramenters,file descriptor等。 通过监控工具来手机资源利用情况,如cpu利用率,磁盘i/o,网络效率
文件描述符
操作系统把tcp套接字当作一种特殊的文件存储格式来处理,并用文件描述符来跟踪记录操作系统进程打开的套接字和文件。
time wait interval
应用程序关闭的tcp连接在被操作系统释放前,将现将纳入等待状态。套接字处于等待状态的时间称为time wait interval。操作系统会维护非配给改socket的资源,可尝试将该参数调低
swap空间
用完时会出现out of memory,死锁等,可增大swap空间
其他参考
操作系统调优有一些文档,比如solaris,hp ux,ibm aix等
docs.sun.com/db/816-06
数据库
Java程序调优一般准则
避免频繁创建对象
RMI易用,但代价太大,可考虑使用socket
同步调用类ArrayList比Vector快很多,后者做了同步,还有很多其他collection
HasnMap-Hashtable
性能调优的衡量标准
TPS 系统响应时间 扩展性 其他