如何定位EAS GUI卡顿问题?

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

如何定位EAS GUI卡顿问题?

       在EAS产品日常使用中,我们经常会遇到某一功能点卡顿的问题。那么,抛开网络原因,就产品本身而言,我们可以将其归咎为两大类:

       其一,属于产品性能问题,比如循环RPC调用,循环数据库操作、大分录加载时,不合理地触发表格统计求和功能等等;

      其二,则是由于某些数据库操作所带来的性能瓶颈,比如查询时未能适宜走索引,数据库死锁等等因素。

       那么,在本篇文章中,我们主要讨论下,如何定位和优化EAS 客户端卡顿问题。在开始之前,我们先简单地了解下,我们做性能分析所依赖的JMX与Jconsole这两款工具。

       JMX(JAVA 管理拓展)服务,是JVM(Java虚拟机)内置的一种用于帮助用户有效地监控和管理的JVM的扩展服务。具体内容可参考官方网站的描述:https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html

       Jconsole (Java Monitoring and Management Console),则是JDK自带的,一款免费的基于JMX的可视化监视、管理工具,存在于在jdk/bin目录之下。

       OK,言归正传,回到我们的主题。其实为了能正常地监控EAS客户端或者服务器JVM的运行,我们还需要在EAS客户端或者服务器JVM启动的时候,添加一些关于JMX相关的参数。这里我以本机调试为例进行说明(远程调试相关的参数可参见官方的文档介绍):

-Dcom.sun.management.jmxremote(启用JMX服务,默认为rue)

-Dcom.sun.management.jmxremote.port=8011 (指定JMX服务端口,可自定义)

-Dcom.sun.management.jmxremote.ssl=false (是否使用【ssl-安全套接字】认证)

-Dcom.sun.management.jmxremote.authenticate=false(是否校验连接用户)


           EAS GUI端添加JVM启动参数如下图所示:

       修改client.bat文件之前,最好先备份一份。然后将上面这组jmx相关参数添加到下面这个位置,注意多个JVM参数之间以空格分割。


    如果想通过Jconsole调试EAS 服务器,则也可以通过在系统环境变量(以windows系统为例,linux系统添加到.bash_profile文件)中添加_JAVA_OPTIONS参数,然后将上面JMX相关参数以空格分割作为参数值即可:


     设置完JMX相关参数后,我们正常登录EAS 客户端程序。与此同时,我们打开jdk/bin/jconsole.exe程序,如下图所示:

       选择本地进程:com.kingdee.eas.base.uiframe.client.LoginFrame(EAS客户端启动主线程类名),然后点”连接

         

       这里,我们点击”不安全的连接“Jconsole默认是以ssl(安全套接字)方式连接JMX服务,但我们前面在客户端启动的时候,配置了不使用ssl和认证服务,所以这里直接以不安全的连接方式,连接就可以了。如下图:

      jconsole的功能比较多,它不仅仅可以监控java虚拟机线程,还可以监控内存消耗,类加载等情况。在这里我们主要关注线程的加载和方法的调用情况。

      在左下角,我们输入AWT,匹配出来的就是我们通常需要关注的与EAS客户端相关的线程。而右边,则显示的是在某一时刻,该线程栈中,方法的调用情况。而如果EAS客户端卡顿在某一个功能点上,通过频繁切换左边的线程,我们就可以在这里看出是卡在那个方法上,从而针对该方法进行分析和优化即可。

       一般来讲,优化的手段无外乎是针对循环RPC调用或者数据库操作,调整为批量操作,或增加缓存,从而达到减少网络请求,提高效率的目的。

       此外,最下面还有一个”检测死锁“的按钮,通过这个按钮,我们将能很快速地定位到,JVM中是否存在两个线程相互竞争资源,造成”死锁“,从而出现EAS客户端功能卡顿的现象。而针对”死锁“问题,解决的办法,只能是终止打断其中一个线程,从而释放其所拥有的资源来解决问题。

        当然,其实不给EAS服务器设置JMX参数,不借助于Jconsole工具。EAS服务器本身也是提供了JVM线程栈在线分析支持的。分析网址为:http://服务器IP:服务器端口/easportal/tools/threaddump.jsp?live=false 。通过不断刷新网页,我们也能很方便地定位到服务端卡顿点。如下图所示:

       OK,本篇文章的内容就先到这里,如果您有疑问,欢迎在评论出提出来,我将第一时间为您解答!

如何定位EAS GUI卡顿问题?

在EAS产品日常使用中,我们经常会遇到某一功能点卡顿的问题。那么,抛开网络原因,就产品本身而言,我们可以将其归咎为两大类: ...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息