设为首页 收藏本站
查看: 1066|回复: 0

[经验分享] [转]使用WebLogic搭建企业应用需要注意的一些问题

[复制链接]

尚未签到

发表于 2017-2-18 06:06:28 | 显示全部楼层 |阅读模式
以下提到的一些问题,是我在我们的企业应用中碰到的一些WebLogic方面的问题,现在整理出来,供大家参考,希望对大家在使用过程中能有所帮助,少走弯路,那就“善莫大焉”了!
WebLogic的连接池配置好以后,为什么Test不能通过?
这个问题可能是比较常见的问题,我们可能会有需要进入WebLogic的控制台测试当前配置的数据库连接池是否可用,也就是说,测试通过WebLogic是否能连接到数据库服务器上去。但是,明明WebLogic控制台中关于Connection Pool的页面上提供了一个Testing的功能,点击Testing就是不能测试成功。你也许会怀疑是数据库宕机了,其实不一定,也许可能是你的关于Connection Pool的配置没有设置正确。请打开控制台,在窗口的左边点击Services进入JDBC下的Connection Pools,然后点击你设置的连接池,窗口的右边出现了一些配置信息,点击Configuration下面的Connections,点击下面Advanced Options的SHOW链接,看看其中的Test Reserved Connections属性前面是否被选中,同时,确定最下面的Test Table Name是否正确(默认情况下都是访问Oracle的dual表,应该没有问题)。OK如果都没有问题,那可能就是连接池的基本设置有问题。基本设置有问题,就不详细讲解了吧!如果这些都没有问题,那就需要检查你的数据库服务器了,希望不要出现这种问题才好!
所以,一定要设置Test Reserved Connections才能使Connection Pool的Testing功能正常运作。
同时,关于连接池配置中的最大数量和最小数量的问题,据Bea的工程师介绍说,最好是把最小值最大值设置成一样。原因是WebLogic在给连接池分配连接或者回收多余的不需要的连接的时候,需要消耗部分系统资源。我最开始就听了Bea工程师的话,设置成都是50个连接。可是后来在RAC的应用中就发现了问题,这在下面的问题中会提到。(不听不行啊,人家毕竟是工程师,又在给我们解决问题,要是不按照他的要求来做,他就咬死了说是这个问题,我可承担不起这个责任!)
WebLogic如何连接Oracle RAC?
WebLogic8.1.3以前的版本都不支持连接Oracle的RAC应用,如果是WebLogic的以前的版本,企业应用又需要连接RAC,只能通过WebLogic的Cluster来实现,每一个Cluster的Client连接一个RAC的节点。这种方式是不能体现出Oracle RAC的在多个Oracle节点之间分摊负载的优势。
从WebLogic8.1.3版本之后,WebLogic开始支持连接Oracle的RAC,不过配置起来有点麻烦,具体的技术资料可以参考
http://e-docs.bea.com/wls/docs81/jdbc/oracle_rac.html.
举例说明:如果你通过两台机器安装Oracle的RAC,其中一台机器的节点sid名字叫db1,ip地址是10.1.1.1,另外一台节点的sid名字是db2,IP地址是10.1.1.2,对外提供的统一的sid名字是db,那么我们配置WebLogic的基于RAC的连接的服务器地址就是
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.1.1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.1.2)(PORT=1521)))(FAILOVER=yes)(LOAD_BALANCE=yes)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=db)))
(这个,在Bea网站上提供的文档中的例子都是错误的!少了一个括号!害我为此花了一天的时间去找问题,我就奇了怪了,按照他们技术文档提供的内容一步一步来做都会错,TNND!)
注意设置WebLogic的Connection Pool的连接池大小的时候,一定要设置为能进行增减。也就是说不要设置连接池的Initial Capacity和Maximum Capacity为一样的数。这可能会导致出现两个Oracle的节点服务器,一个的CPU占用已经达到99%-100%,而另外一个服务器还是10%左右的情况。这个问题也曾经困扰我很长时间,按理说Oracle的RAC安装应该是没有问题,WebLogic配置也没有问题,为什么还会出现两个数据库服务器负载不均衡的现象呢?后来我分析了原因,可能的原因如下(仅供参考):
Oracle提供的JDBC驱动程序,在实现RAC的机制上估计采用了某种基于数据库服务器负载的算法,这样,Java应用通过JDBC访问数据库的时候,就能根据当前RAC节点服务器的负载进行评估,选择一个压力较小的数据库节点作为响应的服务器。但是,这里我们采用了WebLogic的连接池,大家都知道连接池的机制,就是初始化一大批的与数据库的连接,放在一起,然后在需要的时候,从中取出一个进行响应。假设这里我们Initial Capacity设置为50,Maximum Capacity也设置为50,那么在WebLogic启动的时候,它就会初始化50个数据库连接。因为WebLogic刚启动的时候,数据库的压力可能基本上不存在,两个Oracle的节点负载都非常小,那么,根据Oracle的JDBC的算法,很有可能是这些连接都连到一个RAC的节点上去了。当这50个连接都正常使用起来,数据库服务器压力增大,因为连接池不会回收和重新分配连接,所以数据库的压力都跑到一个RAC节点上去了,导致一个节点压力非常大,而另一个节点压力基本没有的怪现象。
我不知道我这个解释是不是最终正确的版本,但是我在我们的企业应用中,把相应的设置进行了处理以后(Initial Capacity设置为20,Maximum Capacity设置为50,Capacity Increment设置为5),就没有再出现过这个现象。我估计就是因为在数据库服务器访问用户增多压力大的时候,连接池能生产新的连接供连接池使用,新生产的连接根据压力情况,会连接到新的RAC节点上去,这样就分摊了负载。因为我是通过结论来推测原因的,没准推论过程不正确,但是结论却歪打正着,估计要气死一大批人了。
如何修改WebLogic的weblogic.kernel.default参数?
weblogic.kernel.default其实是一个WebLogic的核心参数,设置的值就是WebLogic用来响应客户端请求的线程数量。也就是说,一个用户登陆应用系统进行某操作,则WebLogic将从weblogic.kernel.default中分配一个线程给该用户。默认情况下,这个参数值是40。比如对大的企业应用,同一时间登陆操作系统的用户非常多,则40个线程就显得太少了。同时,如果你的应用程序设计得不好,造成很多操作速度非常慢,因为WebLogic要等待你一个操作完成之后,才进行线程的回收处理,如果同一时间有很多线程在执行非常慢的操作,这也会引起线程数量不够的问题。
具体的表现就是在WebLogic的控制台的myserver中的Monitoring页面下的Performance页面中,Queue Length显示不是等于0,图像可能是一个曲线。Queue Length这个参数的意义就是“在等待队列里的请求数”。正常情况下,应该是0,图像是一个水平的横线。也就是没有客户端的请求会等待,都能及时的得到系统的处理。
如果确认是因为用户过多的原因需要增大weblogic.kernel.default参数的值,我们怎么修改?
进入WebLogic控制台——左边窗口的mydomain——servers——点击myserver——Configuration——General——点击Advanced Options的Show链接——最下面的Configure Execute Queues 链接——weblogic.kernel.Default链接——Thread Count参数。的却是隐藏的比较深。修改Thread Count的值,然后重启WebLogic就可以生效了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-343564-1-1.html 上篇帖子: spring对jboss与weblogic的jms的支持不一样 下篇帖子: linux下Weblogic服务器部分用户访问报403错误且提示只允许5个特殊IP访问
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表