论文部分内容阅读
摘 要:本文针对WebLogic Server实例的构架建立过程中可能遇到的问题、提出一些解决方法和优化设置的手段。特别是在大型系统中WebLogic Cluster集群应如何合理设置以及在运维的过程中,面对应用服务器节点众多的情况下,如何迅速定位故障节点和进行快速处理,给出了各种实践的技术和经验。
关键词:WebLogic ;JVM内存;故障定位
1.引言
一名中间件技术人员,时常会面临这样的具体问题:WebLogic的JVM内存堆应该如何设置,才能尽可能地调优应用的性能?如何最高效地发挥应用服务器的硬件性能?对于集群,如何监控集群,如何快速定位故障节点,如何高效地处理故障Server。本文主要就这些问题,针对WebLogic平台,提供了一些日常运维的经验和解决方法。
2.WebLogic Server及内存堆的设置
2.1依据CPU和内存设置Server实例
WebLogic集群中的Server在版本一致的情况下,能够将其配置于一台主机,也能将其配置于多台主机,因为应用服务器并非只能应用单一Weblogic Server实例,而是可以应用多个Weblogic Server实例,这就引出了一个重要问题,即怎么合理应用Server,控制其数量?既保证了硬件设备资源不浪费,又可以满足应用实例对服务器资源的正常消耗。
主要从两个方面来分析:一个是内存,这主要根据服务器的物理内存及自身应用对内存的实际需求来确定,一般要求不能占用超过八成的RAM。另一方面需要考虑CPU占用,实例证明,要保证Weblogic Server具有最优的可伸缩性,就需要采用合理的配置方式,一般采用一个实例占用两个CPU的形式。总之,在配置实例时,需要考虑这两方面的情况,在不影响服务器性能的情况下优化配置。
2.2监控GC、优化JVM内存堆设置
一般最好不要随意调整JVM的参数,除非提前进行了大量计算和分析,这是由于JVM5预置时做了自动调整情,一般情况下是符合计算机的运行要求的。当然,如果追求最佳状态,可以在后期对其进行精密调整。JVM GC的调整十分冗杂,需要根据计算机的自身运行状况进行配置,比如根据实际情况下计算机的CPU数量、内存大小等进行调整,同时也需要考虑到应用程序自身的特殊情况,进一步调整和优化。
JVM内存的优化调整是为了降低GC频率,并降低FullGC的频数。如何能够选择合适的JVM内存设置,可以加入如下参数收,参考对GC的监控,进行判断:
GCARGS="-XX:+PrintGCDetails-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps\
-XX:+PrintTenuringDistribution -Xloggc:/tmp/tsd-gc-`date +%s`.log"
JVM提供两种较为简单的GC策略的设置方式
1)吞吐量优先
JVM以吞吐量为指标,自行选择相应的GC策略及控制新生代与旧生代的大小比例,来达到吞吐量指标。这个值可由-XX:GCTimeRatio=n来设置。
2)暂停时间优先
JVM以暂停时间为指标,自行选择相应的GC策略及控制新生代与旧生代的大小比例,尽量保证每次GC造成的应用停止时间都在指定的数值范围内完成。这个值可由-XX:MaxGCPauseRatio=n来设置。
3.集群实例典型问题
3.1大型集群如何快速定位故障Server实例
客户会反馈应用系统产生异常,此时运维人员需要面对在集群中的大量应用服务器。很难快速有效的定位到特定的Server。这就对迅速准确找到出现问题的Server实例提出了要求,因为只有通过对问题Server实例的排查和修复,才能快速恢复应用服务器的相关功能。一般可以通过环境变量来实现,只需写入必备的一些简单Java代码,既能根据环境变量快速去的出现问题的实例,保证了服务器服务用户的连续性。
S t r i n g s t r S e r v e r N a m e=S y s t e m.getProperty("weblogic.Name");
response.getWriter)(.println(strServerName);
上文所写代码即可用在问题实例排查中,只需将其编写进一个JSP文件,当用户使用时遇到异常情况时,协助其打开JSP文件中的URL即可快速确定出现问题的Server实例,然后确定这是哪一台应用程序服务器产生了问题(需要注意的是这里提出的手段是基于检测端口受监听情形下的,如果检测工具自身发生问题,本手段是无法检测到的)。
3.2多个Cluseters保证系统的稳定和不间断服务
首先在实践中发现WebLogic集群,是不适合有太多的WebLogic Server实例,因为Server实例会定期与其他Server实例交流,以确定每一个Server连续的可用性,如果配置太多的Server实例会导致其占用太多系统资源,进而降低计算机性能。此外,WebLogic管理服务器功能之一是检测Server实例的运行状况。会对每个Server状态进行检测。如果有Server实例的运转出现问题,比如运行过程中出现内存溢出的情况,这是一种较为常见但处理速度却较慢的情况,因为内存溢出会导致计算机运行降速,同时导致Weblogic系统运行降速,进而不能迅速地处理问题。针对这种情况可以增加WebLogic集群,以阻止单一问题影响整个服务器的工作。此外,在配置WebLogic集群时,应将其应用在多个域下,其性能的影响会更小。
其次当应用程序更新和发布时,或在处理某些故障时,必须重新启动整个群集的Server。如果应用层仅配置单一WebLogic集群,那么对系统应用的流畅运行是存在安全隐患,因为其不能应对计算机关机重启的情况,甚至会出现断层的情况。这使得整个应用服务系统能够不间断地为外界提供服务。这种集群方法减少了单个应用程序服务器故障对整个应用程序集群的影响,建立多个合适的集群可以避免单个集群造成的单点故障。为整个系统的不间断服务提供了技术保证。
4.节点管理器故障处理的实用工具
节点管理器是一个WebLogic Server的实用工具,可以使用它来启动、关闭和重新启动远程位置上的管理节点和受管节点。WebLogic Server生产环境中的服务器实例通常分布在多个域、计算机和地理位置上。节点管理器进程与特定WebLogic域无关,而与计算机有关。通过使用节点管理器,为运维人员在处理类似一台应用服务器挂死、重启等常规操作时,提供了极大的方便,节点管理器再配置自动重启后,可以缩短处理时间,并且可以绕过WebLogic Adminserver出故障导致的控制台无法正常登陆的现象,减少服务器故障导致的应用系统不可用的时间,保障系统的稳定性和高可用性。
5.结语
以上是在日常运维过程中有关WebLogic使用经验总结和探讨,一方面充分验证了WebLogic在性能上的安全性和可靠性;另一方面通过不断的实践、测试调整才能更好的利用现有资源的情况下做到优化提升。作为一名IT技术人员应该追求的一个重要的目标就是不斷地学习,努力实践解决技术问题,保障企业系统的稳定、安全运行。
参考文献:
[1]李晓溪. 利用Coherence扩展WebLogic集群会话复制功能及应用[D].复旦大学,2013.
[2]章珺,郭学锋,蒋鸿城.WebLogic应用典型问题分析和解决[J].计算机安全,2007(12):47-49.
关键词:WebLogic ;JVM内存;故障定位
1.引言
一名中间件技术人员,时常会面临这样的具体问题:WebLogic的JVM内存堆应该如何设置,才能尽可能地调优应用的性能?如何最高效地发挥应用服务器的硬件性能?对于集群,如何监控集群,如何快速定位故障节点,如何高效地处理故障Server。本文主要就这些问题,针对WebLogic平台,提供了一些日常运维的经验和解决方法。
2.WebLogic Server及内存堆的设置
2.1依据CPU和内存设置Server实例
WebLogic集群中的Server在版本一致的情况下,能够将其配置于一台主机,也能将其配置于多台主机,因为应用服务器并非只能应用单一Weblogic Server实例,而是可以应用多个Weblogic Server实例,这就引出了一个重要问题,即怎么合理应用Server,控制其数量?既保证了硬件设备资源不浪费,又可以满足应用实例对服务器资源的正常消耗。
主要从两个方面来分析:一个是内存,这主要根据服务器的物理内存及自身应用对内存的实际需求来确定,一般要求不能占用超过八成的RAM。另一方面需要考虑CPU占用,实例证明,要保证Weblogic Server具有最优的可伸缩性,就需要采用合理的配置方式,一般采用一个实例占用两个CPU的形式。总之,在配置实例时,需要考虑这两方面的情况,在不影响服务器性能的情况下优化配置。
2.2监控GC、优化JVM内存堆设置
一般最好不要随意调整JVM的参数,除非提前进行了大量计算和分析,这是由于JVM5预置时做了自动调整情,一般情况下是符合计算机的运行要求的。当然,如果追求最佳状态,可以在后期对其进行精密调整。JVM GC的调整十分冗杂,需要根据计算机的自身运行状况进行配置,比如根据实际情况下计算机的CPU数量、内存大小等进行调整,同时也需要考虑到应用程序自身的特殊情况,进一步调整和优化。
JVM内存的优化调整是为了降低GC频率,并降低FullGC的频数。如何能够选择合适的JVM内存设置,可以加入如下参数收,参考对GC的监控,进行判断:
GCARGS="-XX:+PrintGCDetails-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps\
-XX:+PrintTenuringDistribution -Xloggc:/tmp/tsd-gc-`date +%s`.log"
JVM提供两种较为简单的GC策略的设置方式
1)吞吐量优先
JVM以吞吐量为指标,自行选择相应的GC策略及控制新生代与旧生代的大小比例,来达到吞吐量指标。这个值可由-XX:GCTimeRatio=n来设置。
2)暂停时间优先
JVM以暂停时间为指标,自行选择相应的GC策略及控制新生代与旧生代的大小比例,尽量保证每次GC造成的应用停止时间都在指定的数值范围内完成。这个值可由-XX:MaxGCPauseRatio=n来设置。
3.集群实例典型问题
3.1大型集群如何快速定位故障Server实例
客户会反馈应用系统产生异常,此时运维人员需要面对在集群中的大量应用服务器。很难快速有效的定位到特定的Server。这就对迅速准确找到出现问题的Server实例提出了要求,因为只有通过对问题Server实例的排查和修复,才能快速恢复应用服务器的相关功能。一般可以通过环境变量来实现,只需写入必备的一些简单Java代码,既能根据环境变量快速去的出现问题的实例,保证了服务器服务用户的连续性。
S t r i n g s t r S e r v e r N a m e=S y s t e m.getProperty("weblogic.Name");
response.getWriter)(.println(strServerName);
上文所写代码即可用在问题实例排查中,只需将其编写进一个JSP文件,当用户使用时遇到异常情况时,协助其打开JSP文件中的URL即可快速确定出现问题的Server实例,然后确定这是哪一台应用程序服务器产生了问题(需要注意的是这里提出的手段是基于检测端口受监听情形下的,如果检测工具自身发生问题,本手段是无法检测到的)。
3.2多个Cluseters保证系统的稳定和不间断服务
首先在实践中发现WebLogic集群,是不适合有太多的WebLogic Server实例,因为Server实例会定期与其他Server实例交流,以确定每一个Server连续的可用性,如果配置太多的Server实例会导致其占用太多系统资源,进而降低计算机性能。此外,WebLogic管理服务器功能之一是检测Server实例的运行状况。会对每个Server状态进行检测。如果有Server实例的运转出现问题,比如运行过程中出现内存溢出的情况,这是一种较为常见但处理速度却较慢的情况,因为内存溢出会导致计算机运行降速,同时导致Weblogic系统运行降速,进而不能迅速地处理问题。针对这种情况可以增加WebLogic集群,以阻止单一问题影响整个服务器的工作。此外,在配置WebLogic集群时,应将其应用在多个域下,其性能的影响会更小。
其次当应用程序更新和发布时,或在处理某些故障时,必须重新启动整个群集的Server。如果应用层仅配置单一WebLogic集群,那么对系统应用的流畅运行是存在安全隐患,因为其不能应对计算机关机重启的情况,甚至会出现断层的情况。这使得整个应用服务系统能够不间断地为外界提供服务。这种集群方法减少了单个应用程序服务器故障对整个应用程序集群的影响,建立多个合适的集群可以避免单个集群造成的单点故障。为整个系统的不间断服务提供了技术保证。
4.节点管理器故障处理的实用工具
节点管理器是一个WebLogic Server的实用工具,可以使用它来启动、关闭和重新启动远程位置上的管理节点和受管节点。WebLogic Server生产环境中的服务器实例通常分布在多个域、计算机和地理位置上。节点管理器进程与特定WebLogic域无关,而与计算机有关。通过使用节点管理器,为运维人员在处理类似一台应用服务器挂死、重启等常规操作时,提供了极大的方便,节点管理器再配置自动重启后,可以缩短处理时间,并且可以绕过WebLogic Adminserver出故障导致的控制台无法正常登陆的现象,减少服务器故障导致的应用系统不可用的时间,保障系统的稳定性和高可用性。
5.结语
以上是在日常运维过程中有关WebLogic使用经验总结和探讨,一方面充分验证了WebLogic在性能上的安全性和可靠性;另一方面通过不断的实践、测试调整才能更好的利用现有资源的情况下做到优化提升。作为一名IT技术人员应该追求的一个重要的目标就是不斷地学习,努力实践解决技术问题,保障企业系统的稳定、安全运行。
参考文献:
[1]李晓溪. 利用Coherence扩展WebLogic集群会话复制功能及应用[D].复旦大学,2013.
[2]章珺,郭学锋,蒋鸿城.WebLogic应用典型问题分析和解决[J].计算机安全,2007(12):47-49.