我们在Weblogic 10.3上运行的遗留J2EE Web应用程序的响应时间差异很大.该系统由两个Weblogic服务器实例(前端和后端)组成,它们运行在同一个物理服务器计算机上,另一个Oracle数据库运行在单独的主机上.每次登录系统需要超过四秒钟时,外部测量工具会提醒我们.最近这些警告频繁发生.查看处理登录请求的servlet所写的日志会显示从前端到后端的EJB调用所花费的时间.
测量时间示例:
time ms
8:40:43 25
8:42:14 26
8:44:04 26
8:44:25 26
8:44:47 26
8:46:06 26
8:46:41 7744
8:47:00 27
8:47:37 27
8:49:00 26
8:49:37 26
8:50:03 8213
8:50:57 27
8:51:04 26
8:51:06 25
8:57:26 2545
8:58:13 26
9:00:06 5195
Run Code Online (Sandbox Code Playgroud)
可以看出,大多数请求(70%,来自更大的样本)及时完成,但其中很大一部分需要很长时间才能完成.
在测量时间内执行的步骤如下:
服务器计算机上的负载非常小(空闲率为99%),用户数量非常适中.两个服务器上Weblogic报告的可用内存量在60%到90%之间.记录垃圾收集.主要藏品很少见,并且在发生时会在2-3秒内完成.此外,主要的GC出现似乎不会在看到长响应时间的同时发生.繁忙和非繁忙时段都会出现较长的响应时间.JDBC连接池最大大小当前设置为80,大于并发用户数.
更新:
获得了重新启动系统的权限,并添加了更多性能日志记录.日志清楚地显示JNDI查找是花费时间的部分:
03:01:23.977 PERFORMANCE: looking up foo.bar.Bar from JNDI took 6 ms
03:14:47.179 PERFORMANCE: looking up foo.bar.Bar from JNDI took 2332 ms
03:15:55.040 PERFORMANCE: looking up …Run Code Online (Sandbox Code Playgroud) 我们的开发团队开发了一个在Weblogic 10.3上运行的J2EE应用程序.每台开发机器都运行自己的Weblogic 10.3应用服务器副本.开发环境的Weblogic域最初是在一台机器上创建的,然后使用Weblogic的配置工具(bea10/wlserver_10.3/common/bin/config.cmd)复制到所有机器上.
每台开发机器都有自己的config.xml副本.此文件中的所有密码(JDBC数据源等)都是加密的,加密显然在每台计算机上使用不同的种子,因为相同的密码在不同的计算机上具有不同的加密形式.
问题是每隔一段时间就需要更新config.xml(例如添加新EJB时),并且需要在所有计算机上应用更新.我们该怎么做呢?如果我们只是将文件放在CVS中并从那里更新其他机器,则每台机器上的加密密码都会被覆盖.当服务器尝试解密最初在另一台机器上加密的密码时,这会导致难以辨认的paddingexceptions.
是否存在ant任务(我找不到)或类似的机制,可以在不覆盖加密密码的情况下正确合并config.xml中的更改?或者是否有可能以某种方式指定明文中的密码并在第一次启动时加密它们(我有一个微弱的回忆,这在以前的版本中是可能的,但在10.3中却没有).
开发Weblogic的开发团队如何处理这个问题?
BR,
马尔科