Tomcat导致负载高,排查流程

1.linux基础部分

重要文件说明
#Linux内核参数: /etc/sysctl.conf    
#sys  system    ctl  control (ctrl)
sysctl -p  #内核参数生效
vm.swappiness  控制系统是否优先使用物理内存 数越小 越优先使用物理内存
ip_forward
#内核参数
/etc/sysctl.conf
vm.swappiness =0
net.ipv4.ip_forward=1               
#开启内核转发.  nat的时候 需要配置net.ipv4.icmp_echo_igno

echo  0或者1 > proc/sys/net/ipv4/icmp_echo_ignore_all
当为1时,别人就不能ping通本机
当为0时,别人可以ping通本机

2.故障:tomcat负载高 排查流程

  1. vmstat /top/ps aux 找出哪个进程的问题
  2. 通过top -Hp java进程id 找出是哪个java线程的问题
  3. 问题线程的id 转换为16进制
  4. jstack (显示java 进程信息) jstack java进程id 过滤 java线程的16进制id 与开发沟通
  5. jmap (显示java jvm信息) jmap -heap +java进程pid号 显示jvm的内存使用情况
  6. jmap (导出 jvm内存的内容 ) jmap dump:format=b,file=/root/tomcat.bin pid
  7. 通过 mat(Eclipse Memory Analyzer Tool )分析 windows

例子:
第一步:
通过命令vmstat +参数1 +参数2 查看负载形况
vmstat 1 10 表示每秒刷新一次,共刷新10次
第二步:
找出Java的进程的pid号
ps -ef |grep java 比如找的是pid号:10789
第三步:
通过命令top -Hp 10789(进程pid号)查看对应进程的内部线程的CPU占用率
通过上方观察找出哪个线程的负载较高,找出相应的pid号,假设上方10799cpu占用率高,需要把10799这个十进制数转化为16进制,可以通过window计算机来计算,也可以通过系统的加算计来算,如下
yum install -y bc
echo ’obase=16;10799‘|bc
2A2F
第四步:用jstack这个命令查看java详细的进程信息
jstack -l +pid号
jstack -l 10799 |grep -i ‘2A2F’(不区分大小写)
第五步:找到进程后可以找到研发人员一块排查

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值