WEB应用访问缓慢的问题定位

WEB应用访问缓慢的问题定位

欢迎关注博主公众号「java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 免费领取全网最热的Java架构师学习PDF, 转载请注明出处

1、如果页面能正常访问,但是每个页面的打开速度都很慢,处理方式如下: 1)首先查看应用服务器和数据库服务器的cpu和内存使用情况是不是很高

windows服务器通过任务管理器查看

windows截图-1.png

linux服务器通过top命令查看内存和cpu使用率:主要看1、2、3这三个指标有没有异常,内存和cpu有没有超过95%

linux截图-2.png

详细参数参见下了文档

Linux查看CPU和内存使用情况:https://www.cnblogs.com/mengchunchen/p/9669704.html

2)如果两个服务器的内存都不高,通过下面语句找到oracle等待时长最多的sql带入plsql进行验证 SELECT ASH.USER_ID, U.USERNAME, S.SQL_TEXT, SUM(ASH.WAIT_TIME + ASH.TIME_WAITED) TTL_WAIT_TIME FROM V$ACTIVE_SESSION_HISTORY ASH, V$SQLAREA S, DBA_USERS U WHERE ASH.SAMPLE_TIME BETWEEN SYSDATE - 15 / (24 * 60) AND SYSDATE AND ASH.SQL_ID = S.SQL_ID AND ASH.USER_ID = U.USER_ID GROUP BY ASH.USER_ID, S.SQL_TEXT, U.USERNAME ORDER BY TTL_WAIT_TIME

plsql验证

将sql放入plsql窗口,按【F5】进入执行计划页面

oracle执行计划分析-4.png

cost为耗费时长,执行顺序是按照缩进从右往左,从上到下执行,上图执行顺序为table access full--> table access full-->hash join-->all rows。如果一个列表查询的sql执行的cost耗费越大,结合oracle等待时长的sql,可以断定该sql存在问题!!!

将定位的sql提交给研发进行进一步的分析!!

目前发现数据库表中的部分索引建立以后失效的情况,经分析定位为:随着表的增长,where条件出来的数据太多,大于15%,使得索引失效,目前无法提前发现,只能通过上面的语句定位到执行缓慢的语句。

附录----执行计划详解:https://www.cnblogs.com/Dreamer-1/p/6076440.html

3)如果没有找到等待过长的sql语句,需要进一步排查应用服务器到oracle数据库主机的连接是否顺畅,有没有存在延迟!!

3.1)oracle的alert的日志文件超过4G,会导致连接报错

​ 可以通过下列语句找到alert.log的目录

select value from v$diag_info where name ='Diag Trace';

oracle日志文件-5.png

​ 找到该日志,然后备份删除

oracle日志文件路径-6.png

3.2)如果日志文件没有超过4G或者3.1步骤处理完仍然没有解决数据库连接超时或者慢的问题

​ 需要执行:tnsping IP:端口/实例名称

C:\Users\fangr>tnsping localhost:1521/orcl TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 03-7月 -2021 17:08:45 Copyright (c) 1997, 2010, Oracle. All rights reserved. 已使用的参数文件: D:\app1\fangr\product\11.2.0\dbhome_1\network\admin\sqlnet.ora 已使用 EZCONNECT 适配器来解析别名 尝试连接 (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=orcl))(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))) OK (0 毫秒)

​ 执行结果如下图:如果超过1000毫秒,则连接可能存在问题!!需要协调ping一下是否丢包,或者协调客户定位下网络问题

oracle-tnsping-6.png

扩展:AWR分析报告进行数据库的分析 觉得数据库慢的时候也可以通过AWR分析报告,对oracle进行性能分析找到一些oracle可能存在的潜在问题

对数据库缓慢时间段范围内生成awr报告!!

AWR报告生成方法:https://www.cnblogs.com/liyasong/p/oracle_report1.html

AWR报告详细解读:https://blog.csdn.net/u011334954/article/details/103953103?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242

该报告重点关注如下内容:

1)正常情况下DBCPU应该排在首位,%DB time每个耗时不能超过70%,如果超过就要针对处理!

awr报告分析7-1.png

2)根据SQL ordered by Elapsed Time,找到耗时比较长的sql,针对sql进行分析

awr报告分析7-2.png

3)查看SGA和PGA的内存使用是否过高,正常情况下不得超过主机内存的80%

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzsgpf.html