很多客户反映前端页面很卡解决思路

很多客户反映前端页面很卡解决思路
问题可能分析:
1、数据库问题,压力过大,如慢查询过多导致,某个查询吃完了内存,数据库并发量大 都有可能
2、web服务器CPU高,很多线程被锁,很多线程在等待IO或者其他服务响应
3、网络宽带原因

具体查找步骤
1、检查Mysql数据库压力
(1)可以通过监控界面查看cpu情况,如果没有监控界面权限,执行下面语句
-- 查询所有事务的信息,当表被锁或查询缓慢时使用
SELECT * FROM information_schema.INNODB_TRX ORDER BY TRX_STARTED;
(2)确实有很多慢事物,直接   kill 65676356;  trx_mysql_thread_id字段
(3)执行下面语句获取具体慢查询语句
-- 通过状态和执行时间找到够看到具体执行sql信息
select  *  from    information_schema.processlist order by COMMAND;
(4)如果杀不完慢查询,根据上面语句host字段判断哪台服务导致,停掉该服务使压力降下来
(5)如果不清楚host部署情况,则根据经验先把最有可能的服务停掉,比如调度后台服务,不行再把其他服务逐一停掉,直到降下来就找到了是哪个应用导致。把其他应用服务启起来,避免影响客户过长时间。
(6)把有问题的服务重新部署,未避免影响客户,但是要时刻关注
(6)分析慢查询是很大的事物,找到问题后,先让产品同事通知客户不要进行相应问题的再次操作
(7)解决问题重新发布项目
2、检查web服务运行情况
top命令查看整个linux所有服务进程压力
详细解析请百度或者参考 https://www.cnblogs.com/niuben/p/12017242.html

top都正常,查看服务器log日志,看下服务器是否还在跑,如果日志中有错误日志则分析原因

一、CPU过高(线程池已满,线程阻塞,程序死循环不停的跑)
1、
jps -lvm 命令或者 ps -ef|grep java 查找到web服务进程ID 
top 查看所有进程CPU
top -H -p 进程ID   查看占用CPU最高的进程线程情况,shift+h 可以单个视图和线程视图相互切换
printf "%x\n" 3255  打印线程转换16进制,该线程是占CPU最高的
jstack 进程号|grep 16进制 -A90 举例:jstack 21956|grep 564c ?-A90?   (查看进程某个线程的90行日志)
分析:如果多次查看线程状态都在同一代码处,则此处大概率有慢查询或者IO等待

2、
jstack -l 5659 ?> 1.txt ? 可以将进程快照写入一个文件中进行查看
在线程视图中将PID转换成16进制,在1.txt文件中查找,并查看日志。
分析:进程中是否有很多线程锁住,或者阻塞

3、
df -h 查看空间占用情况,判断服务器磁盘是否已满
free -h内存分配情况
lsof |grep delete 查看删除文件但未释放空间的进程

二、内存过高:(静态变量map一直在塞东西,内存清除不掉,IO流读取大文件到内存,或者代码死循环)
1、 
查看GC日志情况,确认GC能否正常回收
jps -lvm 查看对应进程启动参数有无生成GC日志文件
jstat -gcutil -h10 [进程] 1000   (查看进程内存使用情况,1000表示1秒钟,-h10表示10行一轮)
O 一直高,说明代码中的静态对象一直在添加,内存无法清除。

dump内存文件
1、jmap -dump:live,file=20402.hprof 20402 ? ? ?dump文件
2、zip 20402.hprof.zip 20402.hprof ? ? ? ? ? ? ?解压
3、scp wlstandard@120.27.238.32:/home/wlstandard/25804.hprof.zip D:\ ? ? ? ? ? ? ? 下载
4、使用 MemoryAnalyZer 工具查看

三、IO过高
检查是不是文件读写太过频繁
查看java堆栈信息
? jps -lvm 这个命令可以显示出程序,对应的进程号等
jstack -l 5659 ?这样就可以看堆栈信息了,这个是实时刷的
jstack -l 5659 ?> 1.txt ? 可以 写入一个文件中进行查看


jps 使用参考地址:https://www.cnblogs.com/duanxz/p/4515437.html
jstat 使用参考地址:http://www.cnblogs.com/duanxz/archive/2012/11/03/2752166.html
jinfo 使用参考地址:http://www.cnblogs.com/duanxz/archive/2012/11/02/2751621.html
jmap 获取堆信息,内存泄漏是使用
?? ?使用参考地址:http://www.cnblogs.com/duanxz/p/4890475.html
jstack 用于生成java虚拟机当前时刻的线程快照
使用参考地址:http://www.cnblogs.com/duanxz/p/5487576.html
 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值