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负载高 排查流程
- vmstat /top/ps aux 找出哪个进程的问题
- 通过top -Hp java进程id 找出是哪个java线程的问题
- 问题线程的id 转换为16进制
- jstack (显示java 进程信息) jstack java进程id 过滤 java线程的16进制id 与开发沟通
- jmap (显示java jvm信息) jmap -heap +java进程pid号 显示jvm的内存使用情况
- jmap (导出 jvm内存的内容 ) jmap dump:format=b,file=/root/tomcat.bin pid
- 通过 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’(不区分大小写)
第五步:找到进程后可以找到研发人员一块排查