Linux之《荒岛余生》(一)准备篇
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有什么发行版。
我这里挑选了6个代表性的版本,版本聚焦的功能向专业化和个性化发展。其中,Centos作为最常见的服务器版本,占据了大量的市场份额;Ubuntu在GUI和易用性上赢得了桌面用户;Kali代表了向专业化发展的一个分支。
个人使用时间最长的是archlinux,尤其喜欢它的滚动升级功能。但由于Centos在服务器端的市场份额实在太大,我们以下的讨论都基于Centos。
据不完全统计,已经有上千个linux版本,见下图(高清大图见 distrowatch.com/images/othe… )。你来告诉我,红旗、麒麟的位置在哪里。
将常用脚本加入到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 <<EOF
echo "pleasant taste"
EOF
复制代码
给xjj增加可执行权限
chmod a+x ~/.bin/xjj
复制代码
这样,使用你的用户,在任何地方,都可以执行xjj了
[root@localhost ~]$ xjj
pleasant taste
复制代码
真是令人愉悦的味道~
Linux之《荒岛余生》(一)准备篇的更多相关文章
- Linux 设备模型浅析之 uevent 篇(2)
Linux 设备模型浅析之 uevent 篇 本文属本人原创,欢迎转载,转载请注明出处.由于个人的见识和能力有限,不可能面 面俱到,也可能存在谬误,敬请网友指出,本人的邮箱是 yzq.seen@gma ...
- linux学习心得之vim/Cvim篇
linux学习心得之vim/Cvim篇 在linux 下,vim 时一种最常见的编辑器,很多linux的发行版就自带了.我的是CentOS 6.3. 基本上Vim共分为3种模式,分别是一般模式,编辑模 ...
- 【转】一文掌握 Linux 性能分析之 I/O 篇
[转]一文掌握 Linux 性能分析之 I/O 篇 这是 Linux 性能分析系列的第三篇,前两篇分别讲了 CPU 和 内存,本篇来看 IO. IO 和 存储密切相关,存储可以概括为磁盘,内存,缓存, ...
- linux学习:【第3篇】远程连接及软件安装
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! linux学习:[第3篇]远程连接及软件安装 远程连接 xshell , xftp软件官网 : ...
- linux学习:【第2篇】常用命令
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! linux学习:[第2篇]常用命令 基本命令 //打开终端: CentOS:在任何地方,右键-- ...
- linux学习:【第1篇】初识Linux及安装
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! linux学习:[第1篇]初识Linux及安装 写在前面 学习之初看了一段文章,很有感触,所以也 ...
- Linux服务器部署系列之八—Sendmail篇
Sendmail是目前Linux系统下面用得最广的邮件系统之一,虽然它存在一些不足,不过,目前还是有不少公司在使用它.对它的学习,也能让我们更深的了解邮件系统的运作.下面我们就来看看sendmail邮 ...
- Linux服务器部署系列之七—OpenLDAP篇
LDAP(轻量级目录访问服务),通过配置这个服务,我们也可以在linux下面使用目录的形式管理用户,就像windows下面的AD一样,方便我们管理.下面我们就一起来配置openldap服务.本文运行环 ...
- Linux服务器部署系列之一—Apache篇(下)
接上篇 linux服务器部署系列之一—Apache篇(上) 四.管理日志文件 Apache日志分为访问日志和错误日志两种: 1)访问日志 用于记录客户端的访问信息,文件名默认为access_lo ...
随机推荐
- spark rdd元素println
1.spark api主要分两种:转换操作和行动操作.如果在转化操作中println spark打印了 我也看不到. val result = sqlContext.sql(sql) val resu ...
- 04 jmeter使用方式3种
1.手工添加配置元件编写 2.jmeter+badboy 工具录制---不建议使用 3.设置代理服务器(jmeter添加‘非测试元件-http代理服务器’,再添加一个线程组用来保留代理抓取的url,设 ...
- AJ学IOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题
AJ分享,必须精品 一:效果 二:项目代码 这个Demo用的几个控制器分别画了不通的xib,随便拖拽了几个空间,主要是几个按钮的切换,主要代码展示下: // // NYViewController.m ...
- 你只要5行代码,拥有你的个性二维码,用Python生成动态二维码
如果想了解更多关于python的应用,可以私信我,或者点击下方链接自行获取,里面到资料都是免费的(http://t.cn/A6Zvjdun) 二维码满天飞,但是有没有想过Python也能制作出专属于自 ...
- Java实现链表(个人理解链表的小例子)
1.单链表和数组的区别 数组:数组的存储空间是连续的,需要事先申请空间确定大小,通过下标查找数据,所以查找速度快,但是增加和删除速度慢 链表:离散存储,不需要事先确定大小,通过头指针加遍历查找数据,查 ...
- Springboot:配置文件位置以及多环境配置(六)
配置文件位置 Springboot配置文件可以加载以下四个位置: file:./config/ #第一加载位置 file:./ #第二加载位置 classpath:/config/ #第三加载位置 c ...
- pytorch 中HWC转CHW
import torch import numpy as np from torchvision.transforms import ToTensor t = torch.tensor(np.aran ...
- 线程Event
版本一: from threading import Event,current_thread,Thread import time event=Event() #造一个对象,内部维护一个全局变量,状 ...
- Hbase的安装与基本操作
简介: 1安装 HBase 本节介绍HBase的安装方法,包括下载安装文件.配置环境变量.添加用户权限等. 1.1 下载安装文件 HBase是Hadoop生态系统中的一个组件,但是,Hado ...
- 萌新带你开车上p站(番外篇)
本文由“合天智汇”公众号首发,作者:萌新 前言 这道题目应该是pwnable.kr上Toddler's Bottle最难的题目了,涉及到相对比较难的堆利用的问题,所以拿出来分析. 登录 看看源程序 程 ...