Liunx服务器

在工作中总会轮到你排查线上问题,当Liunx服务器中出现CPU占用率过高的情况,应该如何快速排查定位问题所在,提高工作效率呢?

记: 一次登录服务器发现CPU占用率居高不下, 排查后发现是MySQL占用达到200%

针对MySQL

参考官网链接
登录进入Mysql命令界面,使用 show full processlist 返回的结果是实时变化的,是对mysql链接执行的现场快照,所以用来处理突发事件非常有用
一些问题会导致连锁反应,而且不太好定位,有时候以为是慢查询,很可能是大多时间是在等在CPU、内存资源的释放,所以有时候同一个查询消耗的时间有时候差异很大

总结了一些常见问题:
CPU报警:很可能是 SQL 里面有较多的计算导致的
连接数超高:很可能是有慢查询,然后导致很多的查询在排队,排查问题的时候可以看到”事发现场“类似的 SQL 语句一大片,那么有可能是没有索引或者索引不好使,可以用:explain 分析一下 SQL 语句

查询出来多条SQL语句索引添加并未命中、完全无索引、索引失效… 导致全表扫描,执行效率极大降低,针对SQL语句做对应优化,索引正确使用后,CPU使用率马上下降且平稳至20%以下!

针对Java

在项目中为了提高运行效率,就离不开多线程,但是这个玩意有利有弊。
优点是同一时间能可以处理的任务更多了,速度效率有显著提高,注:在运用得当的情况下是这样的
需要考虑的是线程切换对整体性能的影响,占用更多的内存空间,模块数据要保证线程安全,以及防止死锁情况的发生。

在线上有时瞬时数据量达到峰值,多线程任务分配不过来,或出现死循环,也会导致在服务器中Java的占用率直线飙升!
需要排查堆栈信息,针对哪些代码有问题及时处理优化即可。

// 查看Java程序线程占用CPU情况
top -Hp <pid>
// 将对应线程 TID 转换为16进制
printf "%x\n" <tid>
// 通过查看对应堆栈信息  grep 后的tid 为转换为16进制后的tid
jstack pid |grep tid
// -A 60 表示查看前60行    
或者直接使用 jstack pid |grep tid  -A 60

服务器云磁盘满?

df -lh   // 查看磁盘空间使用情况

cd  ..   // cd 进入到磁盘使用率较高的文件夹
    
du -h --max-depth=1   // 查看文件夹下各目录占用情况

在Liunx中查询指定文件

  • 搜索当前目录(包含子目录,以下同)中,所有文件名以my开头的文件

java find . -name 'my*'

  • 搜索当前目录中,所有文件名以my开头的文件,并显示文件的详细信息

java find . -name 'my*' ls

  • 搜索当前目录中,所有过去10分钟更新过的普通文件。如果不加 type -f 参数,则搜索普通文件 + 特殊文件

java find . -type f -mmin -10

Tip

当你使用了阿里云服务器,一般会定期在后台控制台定期扫描云上服务漏洞预警问题

扫描出来的漏洞几乎全都来自于软件版本过低,存在泄漏被攻击风险
当点击(一键修复或者生成修复命令时,服务商就开始让买买买了); 🤑🤑🤑

关于这个问题自己手动修复的话, 采用软件升级一般都可以解决.
除了提示带kernel的高危漏洞其他的不需要重启实例即可修复.
有kernel的需要更新完成重启实例.
修复过程如下:root登陆
yum check-update 查看可升级的系统软件
yum upgrade 升级所有可升级的系统软件
等待执行完成.
完成后, 再阿里云控制台, 验证!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值