xin片之争,已经暴露了中国xin的问题,我等码农一筹莫展;而在操做系统方面,成果也是乏善可陈;现现在酷炫的Web监控工具,让不少研发丧失了真正处理问题的能力。java
越接近底层,就越接近真相,在计算机的世界,一样适用。linux
咱们的目的,就像是《荒岛余生》同样:找到一个信念,在最残酷的环境中,生存下去。说的比较隐晦,其实就是:你换公司了,而你的新公司比较推崇devops,你要本身面对问题。shell
吹的那么高大上,一副拯救世界的感受,但本系列的文章知识并不深,不少已经在大学里的操做系统见过了,虽然照读课本的叫兽并不能让你勾起丝毫兴趣。bash
若是本系列可以勾起你的些许兴趣,就算目的达到了。原本是想要聊仔细点,但因为时间有限,又不是写书,原理性的东西就很少说了。服务器
文章将会尝试单纯的Cpu、Mem、Net、Disk、IO问题排查,而后组合各类元素,解决一些棘手问题,就是一些经常使用命令的组合。固然咱们是java系的,因此会多一些java方面的讨论。若是你不了解行文风格,能够先读读:《Java堆外内存排查小结--小姐姐味道》工具
为何Linux系统会出现这样那样的问题呢?主要的缘由就是计算机的各个部件的速度不均衡。Cpu在等cache line,cache 在等内存,内存在等设备。就像在连续17千米高速下坡路口设个收费站同样,一不当心就车毁人亡。测试
设备五花八门,一般咱们接触的设备,就是硬盘和网卡。整个业务系统和操做系统充斥着各类各样的缓冲区,CPU要经过中断负责他们之间的协调。这样,会有不少地方会发生bottleneck。ui
排查问题也是有过程的。一般,关注一个硬件资源,好比CPU,咱们关注如下基本要素: 1) 利用率 通常是瞬时值,属于采样范围,用来判断有没有峰值。好比cpu utilization 2) 饱和度 通常指资源已彻底使用,新请求在特定queue里排队。好比cpu load太高 3) 错误信息 硬件或者驱动错误,好比dmesg
命令显示的OOM 4) 联想信息 对引发的缘由进行猜想,并用更多的工具验证猜测。好比系统响应慢猜想大量用到了swapspa
监控值只是一种表象,具体引发的缘由才是重点。咱们一般但愿纯粹的资源限制所引发的故障,这种问题都比较好定位。大多数状况下都没那么幸运,因此广度上的信息共享能帮助不少。过程以下:操作系统
1) 信息收集 问题起始时间,上下文 2) 改动集合 问题发生前全部变动列表 3) 问题抽象 将描述抽象成具体的资源问题 4) 问题排查 将信息整理完毕,就能够进行真正的荒野之旅了
本测试用来决定你是否是本文目标受众,若是没法回答如下问题,建议先看一点基本的Linux知识,这将会节省你的时间,由于文章不会对此提太多。
接下来热热身,瞧瞧Linux有什么发行版。
我的使用时间最长的是archlinux,尤为喜欢它的滚动升级功能。但因为Centos在服务器端的市场份额实在太大,咱们如下的讨论都基于Centos。
据不彻底统计,已经有上千个linux版本,见下图(高清大图见 distrowatch.com/images/othe… )。你来告诉我,红旗、麒麟的位置在哪里。
有些命令组合很差记,频繁输入也以为烦,能够将这些过程整理成脚本,扔到path中。
还记得第一次安装jdk,添加的环境变量么?Linux和它相似,不过它有多种shell
。
一般咱们用的叫bash
,日常说的shell脚本就是bash脚本。但也有不少其余好用的shell,好比csh、ksh、zsh等。
查看/etc/shells文件看一下你安装过的shell
[root@localhost ~]$ cat /etc/shells
/bin/sh
/bin/bash
/bin/zsh
/sbin/nologin
/bin/dash
复制代码
在我的领域,zsh配合oh-my-zsh(推荐)达到最佳,但服务器通常不会去改你的shell,经过一个环境变量,可以看到你当前所使用的shell终端。
[root@localhost ~]$ echo $SHELL
/bin/bash
复制代码
针对于bash,咱们的配置就在用户目录下的.bashrc
文件中。
在用户目录下建立.bin
目录
mkdir ~/.bin
复制代码
将目录加入到环境变量PATH中
echo "export PATH=\$PATH:~/.bin/" >> ~/.bashrc
复制代码
在.bin建立一个文件xjj,内容为 echo "pleasant taste"
cat > ~/.bin/xjj <<EOF
echo "pleasant taste"
EOF
复制代码
给xjj增长可执行权限
chmod a+x ~/.bin/xjj
复制代码
这样,使用你的用户,在任何地方,均可以执行xjj了
[root@localhost ~]$ xjj
pleasant taste
复制代码
真是使人愉悦的味道~