xin电影之争暴露了中国xin的问题,我和其他coder束手无策;而在操作系统方面,成绩同样乏善可陈;如今炫酷的Web监控工具,让很多研发失去了真正处理问题的能力。越往下,越接近真相,在计算机世界里,也是如此。我们的目的就像《荒岛余生》:在最残酷的环境中找到生存的信念。说的比较隐晦,其实是:你换了公司,你的新公司更尊重devops,所以你要自己面对问题。好高大上,有点拯救世界的感觉,不过这个系列文章的知识点并不深,很多在大学的时候操作系统就已经看过了,虽然看课本的召唤兽并没有引起你的共鸣一点兴趣都没有。如果这个系列能够引起你哪怕一丁点的兴趣,那么它的目的就达到了。本来想细细讲讲的,但是由于时间有限又不是写书,原理就不多说了。内容文章会尝试排查简单的Cpu、Mem、Net、Disk、IO问题,然后结合各种要素解决一些棘手的问题,也就是一些常用命令的组合。当然我们是java系的,所以对java的讨论会比较多。不知道文风的可以先看下:《Java堆外内存排查小结--小姐姐味道》为什么Linux系统会出现这样那样的问题?主要原因是电脑各部分速度不均。CPU在等待缓存行,缓存在等待内存,内存在等待设备。就好比在17公里的连续高速下坡路口设置收费站。一不小心,车就会撞,人就会死。设备五花八门,我们平时接触的设备就是硬盘和网卡。整个业务系统和操作系统都充满了各种缓冲区,CPU通过中断负责它们之间的协调。这样就会在很多地方出现瓶颈。还有一个对监控值进行故障排除的过程。通常我们在关注CPU等硬件资源时,会关注以下几个基本要素:1)利用率一般是一个瞬时值,属于采样范围,用来判断是否有峰值。例如cpuutilization2)饱和一般表示资源已经被完全使用,新的请求在特定的队列中排队。例如cpu负载过高3)错误信息硬件或驱动错误,如dmesg命令显示OOM4)联想信息猜测原因,使用更多工具验证猜测。比如系统响应慢,猜测使用了大量swap。监测值只是表象,具体原因才是关键。我们通常希望单纯的资源限制导致的故障是比较容易定位的。在大多数情况下并没有那么幸运,因此广泛的信息共享可以提供很大帮助。流程如下:1)信息采集问题开始时间、上下文2)采集问题发生前所有变化的变化列表3)问题抽象将描述抽象为具体的资源问题4)Troubleshooting信息整理后,真人荒野可以进行这个测试,用来判断你是否是本文的目标受众。如果您无法回答以下问题,建议您先阅读一些Linux基础知识,这样可以节省您的时间,因为本文不会过多提及。iowait是什么意思?swap的分区是什么,如何关闭?/tmp目录有什么特别之处?什么是管道?接下来我们来预热一下Linux发行版,看看Linux都有哪些发行版。我在这里挑选了6个有代表性的版本,版本所侧重的功能都在向专业化、个性化方向发展。其中,Centos作为最常见的服务器版本,占据了较大的市场份额;Ubuntu在GUI和易用性方面赢得了桌面用户;Kali代表专业发展的一个分支。个人使用时间最长的是archlinux,特别喜欢它的滚动升级功能。但是由于Centos在服务器端的市场占有率巨大,所以我们下面的讨论都是基于Centos的。据不完全统计,linux的版本已经有上千种,如下图(高清大图见https://distrowatch.com/image...)。快来告诉我哪里有红旗和独角兽。将常用的脚本添加到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"exportPATH=\$PATH:~/.bin/">>~/.bashrc在.bin中创建一个文件xjj,内容是echo"pleasanttaste"cat>~/.bin/xjj<
