被迫学习一波Linux命令

事情起因

部署一个服务,人家说了最低配置是3G,我没当回事,拿着个2G的服务器直接就上了,结果,哈哈,都能猜到结果:服务器内存爆了!!!而且最可气的是服务器还登不进去,重启之后内马上又被拉满了,根本连接进不去。算是一次小小的事故,记录是为了不再犯同样的错误。

排查根因

上面说到,内存爆满,重启后短时间继续爆满,排查的问题的时间很有限,要快速定位到问题。其实我想到了:有服务在开机后自动重启,并且迅速拉起了其他子进程导致。本来给个3G的内存啥事也没有(本地测试都过了的),奈何云服务器就那么点资源,而且当时买的时候也没考虑那么多。

解决问题

针对以上猜想,查询一下最占用内存的都是哪些进程:
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head

果然,有一个进程52.6%,就是它了,kill掉。

结果很快内存又满了,再次重启,发现有两个用户gitgitlab占用最高,于是把这个用户的所有进程都干掉:
pkill -u git

或者
killall -u git

好了,暂时没有问题了,于是很满意地吃饭去了。之后我想着那不要再重启一次吧,果然不出我所料,重启后又爆了。我仔细想了想刚刚坏之前执行过什么命令,应该就是它导致的,是的,就是gitlab-ctl这个主控进程一直在自动拉起其他子进程,本来内存要求就不够,自然会爆掉。
gitlab-ctl stop

一大推子进程被停掉了,还是不放心,于是禁止这个程序开机自启:
systemctl disable gitlab-runsvdir.service

至此,问题圆满解决。

反思总结

1、别人给的配置不是乱给的,最小配置一定是经过测试的,毕竟寸'土'寸金,这一点不用质疑;

2、赶快给服务器装上监控,不要再裸机跑了,配置上必要的告警,及时知道资源的监控状况;

3、不要随便使用root用户操作,如果今天这个进程是root运行的,那估计很难救了,在没查清楚是哪个进程之前你总不能把root下的所有进程都kill了吧?

4、虽然只是个人服务器上的一次小小事故,但是同样适用于生产,请谨慎操作,对自己也对他人负责;

5、最后把今天用到的linux命令再次做一个梳理吧:

:kill某个用户下的所有进程的命令(四种方式)

复制代码
pkill -u git
killall -u git
pgrep -u git | xargs kill -s 9

# cut -c 9-15都是为了拿到pid,也可以用awk '{print $2}' 替换
ps -ef | grep git | grep -v grep |  cut -c 9-15 | xargs kill -s 9
ps -ef | grep git | grep -v grep |  awk '{print $2}' | xargs kill -s 9

:查看占用资源最大的进程:

复制代码
# +4表示的是内存,cpu则+3
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head

ps aux --sort -rss | head

方法不止一种,第一先解决问题,第二再慢慢积累。

转:关于资源占用的更多骚操作。

共勉。

相关推荐
旖旎夜光7 小时前
C++(17)
c++·学习
jimy18 小时前
安卓里运行Linux
linux·运维·服务器
专注于大数据技术栈8 小时前
java学习--StringBuilder
java·学习
爱凤的小光9 小时前
Linux清理磁盘技巧---个人笔记
linux·运维
qcwl669 小时前
操作系统 真象还原 学习笔记#13
笔记·学习
车载测试工程师9 小时前
CAPL学习-CAN相关函数-概述
网络协议·学习·capl·canoe
roman_日积跬步-终至千里9 小时前
【人工智能导论】08-学习-如何让计算机理解序列数据——用RNN/LSTM建模时序依赖,用文本嵌入表示序列元素
人工智能·rnn·学习
m0_689618289 小时前
30 分钟打印!多材料3D打印软机器人内置驱动 + 自主避障
笔记·学习·机器人
耗同学一米八9 小时前
2026年河北省职业院校技能大赛中职组“网络建设与运维”赛项答案解析 1.系统安装
linux·服务器·centos
charlie11451419110 小时前
现代嵌入式C++教程:C++98——从C向C++的演化(2)
c语言·开发语言·c++·学习·嵌入式·教程·现代c++