首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 其他服务器 >

websphere联接某一数据库时速度很慢

2012-12-24 
websphere连接某一数据库时速度很慢同样的代码,同样的数据库,同样的测试机用websphere调试时,速度正常但是

websphere连接某一数据库时速度很慢
同样的代码,同样的数据库,同样的测试机

用websphere调试时,速度正常
但是发布到正式的服务器上后,运行起来就非常慢,经排查后发现时间都花在了连接数据库上了
详细说明如下:


项目:一个对外提供查询统计的模块,有多个数据源
平台:IBM Rational 6 + oracle9i + oracle10g
数据库位置:oracle9i位于IBM主机,oracle10g位于HP小型机
架构:纯Struts
现象:开发环境下以调试方式启动服务器,一切运行正常;正式启动服务器发布后,连接oracle9i部分的数据正常,连接oracle10g数据库时,耗时非常大,速度很慢。后经排查发现时间耗在连接数据库上,待数据库连接成功后的数据读取都很正常。
调试与正式发布都在自己的笔记本上,但因为启动方式不同,对于oracle10g的连接差异很大,调试方式时,连接仅为0.5秒,而到正式发布后,连接10g就至少需要5秒,甚至有到7秒的,连接完成后每次查询却又恢复到100毫秒以内的正常情况。

另一现象:同样的struts数据源配置方式,在另一应用中读写10g数据源时,都很正常。

现已可以排除的故障原因有
1:非oracle驱动版本问题,9i和10g的驱动都试过,无效。
2:非程序问题,相同的程序在调试时一切都正常。
3:非服务器配置问题,服务器配置都采用默认方式,其他应用程序也都在运行,并且其中也有对10g进行读写的应用。


实在纳闷,求教……
[解决办法]
以下为转贴
解决方法:升级WebSphere6.1的JDK补丁。

  故障分析:

  1)WebSphere6.1版本使用的JDK是1.5的版本,经Baidu,Google查询,在该版本中,JDK连接Oracle时会自动启动代理服务器模式,于是时间就耗在了这个过程中。
  2)Rational6.0开发环境中采用的是JDK1.4的版本,该版本不存在1.5中的问题,所以调式没有问题。
  3)而其他对Oracle10g进行读写的应用都是发布在WebSphere5.0,而WebSphere5.0采用的是IBM JDK1.4的版本,于是这些应用对Oracle10g的读写也都正常。
  4)在Sun的JDK1.5中可通过如下代码来屏蔽代理服务器
  import java.net.ProxySelector;
  ProxySelector.setDefault(null);

  但是WebSphere采用的是IBM自己的JDK,其中并不存在ProxySelector这个类。
  在费了2天的时间进行个方面的研究后,在一次偶然的系统提示安装补丁的情况下,突然想到不知WebSphere是否也有这方面的补丁,于是在Google之后,发现了一个非常有价值的链接。
  后到IBM官方站点上找到了一个关于WebSphere6.0的JDK补丁,下载补丁与升级程序,按照提示安装完成补丁,重新发布应用,问题迎刃而解。

  升级程序:ftp://public.dhe.ibm.com/software/websphere/appserv/support/tools/UpdateInstaller/6.1.x/WinIA32/download.updii.61019.windows.ia32.zip

  JDK补丁:ftp://ftp.software.ibm.com/software/websphere/appserv/support/fixpacks/was61/cumulative/cf61029/WinX32/6.1.0-WS-WASSDK-WinX32-FP0000029.pak

热点排行