线上进程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掉父进程即可
服务器存储空间快满了(95%),还有一个小时存储就满了,在不影响服务正常运行的情况下,该如何解决?
这个确实没什么好说的,无非就是用一些一些线上的场景和问题来考考你平时一般怎么处理的,线上机器磁盘满,一般啥原因,不就是日志太多了给写满了么。。。对吧,我们不说别的,就说说这最基本的就行了
df -h,先看看磁盘使用的情况
然后就是到你的系统部署的地方,一般就是tomcat下的日志、spring boot的日志,去看看,如果过多,就删除掉一些日志就行了,自己注意让tomcat或者nginx之类的日志输出,按天切割,这样你还可以写个shell脚本,crontab定时,定期删除7天以前的日志
要是不行,那就:find / -size +100M |xargs ls -lh,找找大于100m的文件,但是如果有大量的小文件,那么这样是不行的
或者是用:du -h >fs_du.log,看看各个目录占用的磁盘空间大小,看看是不是哪个目录有大量的小文件
其实面试官无非就是看看是不是知道常见的命令罢了,如果不是。那那个面试官就得再提示多一些细节,到底要考察你什么。但是简单问一个磁盘占用排查,就是常见这几个命令罢了