监控工具在实践中,我们用来监控分析哪些内容呢。我们往往需要根据理论知识,转换为可行的方法。1 分析内存l 分析对象的内存分配情况
分析短时间对象占用内存问题: 在内存视图类视图,点击”mark current values” 然后进行相关的业务操作。 就可以知道各个类的内存增长情况 分析长时间对象占用内存情况: 先照快照 一定时间后再照快照 然后对比快照 分析大对象占用内存情况 如果对象过大,往往是一次加载了过多的数据,很多信息是没用的。 可以考虑其他办法减少加载过多的数据。 比如,列表一次把所有的用户信息加载到内存中,那么列表对象会非常大。 可以考虑分页显示,把部分用户用户加载进来。
l 分配堆的情况 分析非堆区 主要是个jvm使用的,方法区、原生方法栈、常量池等。 不会发生溢出。 如果代码过多,或者常量过多,将会占用非常大的空间。 分析堆区 堆分为,young区和old区。Young不会发生溢出的,old是有可能 发生溢出。 一般要监控young区和old区的情况,来判断是否这两个区的配置 都合理,但是jprofiler没有提供观察各个区的功能。可以用 jconsole工具来查看。 所以,只能查看堆区的整体大小,来分析设置的堆区大小是否 足够。 old区中,存活比较长时间的对象有静态对象等。 分GC情况 查看频率,如果过高,说明堆区不够。 查看耗时,如果过高,说明堆区太大。 2 分析cpul 分析sql执行cpu占用情况 从执行SQL占用CPU比例比较高上分析 说明大部分时间都在占用执行该sql,占用了大部分的cpu资源。 考虑是否有优化的空间。 考虑是否有该sql是必要的,例如select sysdate from dual可以采用其它非sql的方式来取得时间。 从平均执行SQL的时间上分析 如果平均执行的时间过大,说明需要进行优化。一般都是毫秒级别,如果到了秒级别,往往需要分析问题。
l 分析url处理时间 从平均处理url的时间上分析 用户的体验的等待时间为:url处理时间+网络传输时间+客户端显示时间 比如如果超过4秒,需要考虑该页面的性能瓶颈。 从调用次数上分析 对于调用次数比较高的,说明大部分用户的操作都集中在这些 页面。 这些页面是高并发,进行性能优化的重点区域。 3 分析线程l 分析死锁线程 如果检查出有死锁的线程。必须进行分析死锁的原因。 |
|