Linux线上服务器问题排查

简介: Linux线上服务器问题排查

1 线上服务器CPU 100%了!该怎么排查、定位和解决?

线上服务器的cpu使用达到100%了,如何排查、定位和解决该问题?

如果是大数据的经常的内存溢出或者高并发,话说实话,这个问题是面试的时候,聊基础,最常问的一个问题,就是看看你有没有处理过高负载的线上问题场景。所以很多大公司考察你的基本功,肯定会问这个。其实这个你干过就是干过,掌握就是掌握,只要干过,所有人都是一样的步骤,没区别。

其实核心思路,就是找到这台服务器上,是哪个进程的哪个线程的哪段代码,导致cpu 100了,主要就是考察你是否熟练运用一些线上的命令。

这里我可以给大家说一个我们线上的经验,就是之前有一个bug,是一个很年轻的同学写的,就是我们当时是定了异常日志是写到es里去的

public void log(String message) {
    try {
    // 往es去写
    } catch(Exception e) {
        log(message);
    }
}

线上事故,es集群出了点问题,没法写,最后出现线上几十台机器,全部因为这一行代码,全体cpu 100%,卡死了

1.1 定位耗费cpu的进程

top -c,就可以显示进程列表,然后输入P,按照cpu使用率排序,你会看到类似下面的东西

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
43987 root 20 0 28.2g 4.5g 68m S 99.0 24.0 44333.4 java -Xms。。。

大概类似上面这样,能看到哪个进程,CPU负载最高,还有启动这个进程的命令,比如一般就是java啥啥的。

1.2 定位耗费cpu的线程

top -Hp 43987,就是输入那个进程id就好了,然后输入P,按照cpu使用率排序,你会看到类似下面的东西

大概类似上面那样,你就可以看到这个进程里的哪个线程耗费cpu最高

1.3 定位哪段代码导致的cpu过高

printf “%x\n” 16872,把线程pid转换成16进制,比如41e8

jstack 43987 | grep ‘0x41e8’ -C5 --color

这个就是用jstack打印进程的堆栈信息,而且通过grep那个线程的16进制的pid,找到那个线程相关的东西,这个时候就可以在打印出的代码里,看到是哪个类的哪个方法导致的这个cpu 100%的问题

2 线上机器的一个进程用kill命令杀不死该怎么办?磁盘空间快满了又该怎么处理?

2.1 线上进程kill不掉怎么办

线上进程kill不掉怎么办

但是可能就是想考察一下你有没有处理过类似的问题

我们公司有一套自己研发的发布系统,你每次部署,都是走发布系统,告诉他一个git仓库的地址,那个系统会自动从git仓库拉取代码,基于maven来打包,你还可以指定你要用的profile,maven打包的时候会用对应的profile打对应环境的包,打完jar包之后,就会java -jar之类的来启动。

当时那个发布系统,他自己在每台机器上有一个进程,发布和启动的时候,他启动的那个进程,不是直接java -jar来启动的,发布系统的一个进程搞了一个子进程,子进程是我们的系统进程。

这个其实就是线上可能遇到的一个问题,我们之前确实就是遇到过这个问题,kill一个进程死活杀不死,那个进程成了僵尸进程,就是zombie状态。这是因为这个进程释放了资源,但是没有得到父进程的确认。

ps aux,看看STAT那一栏,如果是Z,那么就是zombie状态的僵尸进程

ps -ef | grep 僵尸进程id,可以找到父进程id

然后先kill掉父进程即可

2.2 存储空间快满

服务器存储空间快满了(95%),还有一个小时存储就满了,在不影响服务正常运行的情况下,该如何解决?

这个确实没什么好说的,无非就是用一些一些线上的场景和问题来考考你平时一般怎么处理的,线上机器磁盘满,一般啥原因,不就是日志太多了给写满了么。对吧,我们不说别的,就说说这最基本的就行了

df -h,先看看磁盘使用的情况

然后就是到你的系统部署的地方,一般就是tomcat下的日志、spring boot的日志,去看看,如果过多,就删除掉一些日志就行了,自己注意让tomcat或者nginx之类的日志输出,按天切割,这样你还可以写个shell脚本,crontab定时,定期删除7天以前的日志

要是不行,那就:find / -size +100M |xargs ls -lh,找找大于100m的文件,但是如果有大量的小文件,那么这样是不行的

或者是用:du -h >fs_du.log看看各个目录占用的磁盘空间大小,看看是不是哪个目录有大量的小文件

其实面试官无非就是看看是不是知道常见的命令罢了,如果不是。那那个面试官就得再提示多一些细节,到底要考察你什么。但是简单问一个磁盘占用排查,就是常见这几个命令罢了

3 挖矿木马

如果看到cpu一直居高不下,进程很奇怪也不是java服务引起,就有可能被人种植木马了,简单说下,最好不要将常用端口进行放开或者将常用端口更换,因为注入扫描就是扫描比如3306可以更换为13306,如果是阿里云这种的要做到一个定期备份防止无法根除木马而回复或者被攻击瘫痪快速恢复.遇到后不要慌张,先去吧登录账号和密码修改,之后定位问题解决问题.就和杀毒的一样找到进程找到文件关闭定时任务干掉即可.

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
5天前
|
运维 监控 安全
盘点Linux服务器运维管理面板
随着云计算和大数据技术的迅猛发展,Linux服务器在运维管理中扮演着越来越重要的角色。传统的Linux服务器管理方式已经无法满足现代企业的需求,因此,高效、安全、易用的运维管理面板应运而生。
|
5天前
|
运维 监控 Linux
服务器管理面板大盘点: 8款开源面板助你轻松管理Linux服务器
在数字化时代,服务器作为数据存储和计算的核心设备,其管理效率与安全性直接关系到业务的稳定性和可持续发展。随着技术的不断进步,开源社区涌现出众多服务器管理面板,这些工具以其强大的功能、灵活的配置和友好的用户界面,极大地简化了Linux服务器的管理工作。本文将详细介绍8款开源的服务器管理面板,包括Websoft9、宝塔、cPanel、1Panel等,旨在帮助运维人员更好地选择和使用这些工具,提升服务器管理效率。
|
13天前
|
安全 算法 Linux
Linux 服务器还有漏洞?建议使用 OpenVAS 日常检查!
在数字化时代,Linux 服务器的安全至关重要。OpenVAS 是一款优秀的开源漏洞扫描工具,可以帮助及时发现并修复服务器中的安全隐患。本文将介绍 OpenVAS 的主要功能、使用方法及应对漏洞的措施,帮助用户加强服务器安全管理,确保企业数字化安全。
34 7
|
16天前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
19天前
|
缓存 Unix Linux
服务器linux!!!
本文介绍了计算机的演变历史、硬件基础知识及服务器相关知识。从电子管时代的ENIAC到冯-诺伊曼架构,再到现代计算机系统组成,详细讲解了计算机的发展历程。此外,文章还介绍了服务器的分类、品牌、硬件组成以及IDC机房的上架流程,为读者提供了全面的技术背景知识。
37 0
服务器linux!!!
|
21天前
|
人工智能 安全 Linux
|
23天前
|
Linux 数据库
Linux服务如何实现服务器重启后的服务延迟自启动?
【10月更文挑战第25天】Linux服务如何实现服务器重启后的服务延迟自启动?
121 3
|
21天前
|
Linux
Linux 修改服务器时间
【10月更文挑战第27天】Linux 修改服务器时间
53 0
|
弹性计算 Linux
[转]ECS之初体验(Linux)
服务商: 阿里云 操作系统:Linux 64位 Ubantu 20.04 64位
115 0
|
6天前
|
人工智能 弹性计算 编解码
阿里云GPU云服务器性能、应用场景及收费标准和活动价格参考
GPU云服务器作为阿里云提供的一种高性能计算服务,通过结合GPU与CPU的计算能力,为用户在人工智能、高性能计算等领域提供了强大的支持。其具备覆盖范围广、超强计算能力、网络性能出色等优势,且计费方式灵活多样,能够满足不同用户的需求。目前用户购买阿里云gpu云服务器gn5 规格族(P100-16G)、gn6i 规格族(T4-16G)、gn6v 规格族(V100-16G)有优惠,本文为大家详细介绍阿里云gpu云服务器的相关性能及收费标准与最新活动价格情况,以供参考和选择。
下一篇
无影云桌面