资讯专栏INFORMATION COLUMN

Linux之《荒岛余生》(一)准备篇

douzifly / 2103人阅读

摘要:我们的目的,就像是荒岛余生一样找到一个信念,在最残酷的环境中,生存下去。这样,会有很多地方会发生。监控值排查问题也是有过程的。比如饱和度一般指资源已完全使用,新请求在特定里排队。

xin片之争,已经暴露了中国xin的问题,我等码农束手无策;而在操作系统方面,成果也是乏善可陈;现如今酷炫的Web监控工具,让很多研发丧失了真正处理问题的能力。

越接近底层,就越接近真相,在计算机的世界,同样适用。

我们的目的,就像是《荒岛余生》一样:找到一个信念,在最残酷的环境中,生存下去。说的比较隐晦,其实就是:你换公司了,而你的新公司比较推崇devops,你要自己面对问题。

吹的那么高大上,一副拯救世界的感觉,但本系列的文章知识并不深,很多已经在大学里的操作系统见过了,虽然照读课本的叫兽并不能让你勾起丝毫兴趣。

如果本系列能够勾起你的些许兴趣,就算目的达到了。本来是想要聊仔细点,但由于时间有限,又不是写书,原理性的东西就不多说了。

内容

文章将会尝试单纯的Cpu、Mem、Net、Disk、IO问题排查,然后组合各种元素,解决一些棘手问题,就是一些常用命令的组合。当然我们是java系的,所以会多一些java方面的讨论。如果你不了解行文风格,可以先读读:《Java堆外内存排查小结--小姐姐味道》

为什么Linux系统会出现这样那样的问题呢?主要的原因就是计算机的各个部件的速度不均衡。Cpu在等cache line,cache 在等内存,内存在等设备。就像在连续17公里高速下坡路口设个收费站一样,一不小心就车毁人亡。

设备五花八门,通常我们接触的设备,就是硬盘和网卡。整个业务系统和操作系统充斥着各种各样的缓冲区,CPU要通过中断负责他们之间的协调。这样,会有很多地方会发生bottleneck。

监控值

排查问题也是有过程的。通常,关注一个硬件资源,比如CPU,我们关注以下基本要素:
1) 利用率 一般是瞬时值,属于采样范围,用来判断有没有峰值。比如cpu utilization
2) 饱和度 一般指资源已完全使用,新请求在特定queue里排队。比如cpu load过高
3) 错误信息 硬件或者驱动错误,比如dmesg命令显示的OOM
4) 联想信息 对引起的原因进行猜测,并用更多的工具验证猜想。比如系统响应慢猜测大量用到了swap

原因

监控值只是一种表象,具体引起的原因才是重点。我们通常希望纯粹的资源限制所引起的故障,这种问题都比较好定位。大多数情况下都没那么幸运,所以广度上的信息共享能帮助很多。过程如下:

1) 信息收集 问题起始时间,上下文
2) 改动集合 问题发生前所有变更列表
3) 问题抽象 将描述抽象成具体的资源问题
4) 问题排查 将信息整理完毕,就可以进行真正的荒野之旅了

测试

本测试用来决定你是不是本文目标受众,如果无法回答以下问题,建议先看一点基本的Linux知识,这将会节省你的时间,因为文章不会对此提太多。

io wait 是什么意思?

swap是什么分区,怎么关闭?

/tmp目录有什么特殊性?

管道是什么东东?

Linux发行版

接下来热热身,瞧瞧Linux有什么发行版。

将常用脚本加入到PATH中

有些命令组合不好记,频繁输入也觉得烦,可以将这些过程整理成脚本,扔到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 <

给xjj增加可执行权限

chmod a+x ~/.bin/xjj 

这样,使用你的用户,在任何地方,都可以执行xjj了

[root@localhost ~]$ xjj
pleasant taste

真是令人愉悦的味道~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/8093.html

相关文章

  • Linux生产环境上,最常用的套“Sed“技巧

    摘要:替换模式以上是命令的常用匹配模式,但它还有一个强大的替换模式,意思就是查找替换其中的某些值,并输出结果。看两个命令的语法好玩由于正则的关系,很多字符需要转义。注意前半部分的范围是不能使用这种方式的。sed命令应用广泛,使用简单,是快速文本处理的利器。它其实没多少技巧,背诵、使用是最合适的学习渠道,属于硬技能。但它又很复杂,因为高级功能太多。本篇不去关注sed的高级功能,仅对常用的一些操作,进...

    Big_fat_cat 评论0 收藏0
  • 使用Netty,我们到底在开发些什么?

    摘要:比如面向连接的功能包发送接收数量包发送接收速率错误计数连接重连次数调用延迟连接状态等。你要处理的,就是心跳超时的逻辑,比如延迟重连。发生异常后,可以根据不同的类型选择断线重连比如一些二进制协议的编解码紊乱问题,或者调度到其他节点。 在java界,netty无疑是开发网络应用的拿手菜。你不需要太多关注复杂的nio模型和底层网络的细节,使用其丰富的接口,可以很容易的实现复杂的通讯功能。 和...

    DesGemini 评论0 收藏0
  • 使用Netty,我们到底在开发些什么?

    摘要:比如面向连接的功能包发送接收数量包发送接收速率错误计数连接重连次数调用延迟连接状态等。你要处理的,就是心跳超时的逻辑,比如延迟重连。发生异常后,可以根据不同的类型选择断线重连比如一些二进制协议的编解码紊乱问题,或者调度到其他节点。 在java界,netty无疑是开发网络应用的拿手菜。你不需要太多关注复杂的nio模型和底层网络的细节,使用其丰富的接口,可以很容易的实现复杂的通讯功能。 和...

    MSchumi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<