企业测试环境05

一、 Linux入门

操作系统(科普)

企业测试环境05

Minix

-因为 AT&T(通用电气) 的政策改变,在 Version 7 Unix 推出之后,发布新的使用条款,将 UNIX 源代码私有化,在大学中不再能使用 UNIX 源代码

  • Andrew S. Tanenbaum(塔能鲍姆) 教授为了能 在课堂上教授学生操作系统运作的细节,决定在不使用任何 AT&T 的源代码前提下,自行开发与 UNIX 兼容的操作系统,以避免版权上的争议
    -以小型 UNIX(mini-UNIX) 之意,将它称为 MINIX

Linux

-1991 年 林纳斯(Linus) 就读于赫尔辛基大学期间,对 Unix 产生浓厚兴趣,尝试着在Minix 上做一些开发工作
-因为 Minix 只是教学使用,因此功能并不强,林纳斯 经常要用他的终端 仿真器(Terminal Emulator) 去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这些在后来成为了 Linux 第一个内核的雏形,当时,他年仅 21 岁
-林纳斯利用GNU的bash 当做开发环境,gcc 当做编译工具,编写了 Linux 内核,一开始 Linux 并不能兼容 Unix
-即 Unix上跑的应用程序不能在 Linux 上跑,即应用程序与内核之间的接口不一致
-一开始 Linux 只适用于 386,后来经过全世界的网友的帮助,最终能够兼容多种硬件

Linux的内核版

**内核(kernel)**是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层
Linux 内核版本又分为 稳定版 和 开发版,两种版本是相互关联,相互循环
-**稳定版:**具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些 bug 或加入一些新的驱动程序
-**开发版:**由于要试验各种解决方案,所以变化很快
-内核源码网址:http://www.kernel.org

Linux发行版

**Linux 发行版(也被叫做 GNU/Linux 发行版)**通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件
常见的发行版本如下:
Ubuntu
Redhat
Fedora
openSUSE
Linux Mint
Debian
Manjaro
Mageia
CentOS
Arch

Linux的应用领域

服务器领域
Linux 在服务器领域的应用是其重要分支
Linux 免费、稳定、高效等特点在这里得到了很好的体现
-早期因为维护、运行等原因同样受到了很大的限制
-近些年来 Linux 服务器市场得到了飞速的提升,尤其在一些高端领域尤为广泛
-此领域是传统 Linux 应用最薄弱的环节
-传统 Linux 由于界面简单、操作复杂、应用软件少的缺点,一直被 Windows 所压制嵌入式领域
-近些年来 Linux 在嵌入式领域的应用得到了飞速的提高
-Linux 运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百 KB 等特点,使其近些年来在嵌入式领域的应用得到非常大的提高

个人桌面领域
此领域是传统 Linux 应用最薄弱的环节
传统 Linux 由于界面简单、操作复杂、应用软件少的缺点,一直被 Windows 所压制
近些年来随着 Ubuntu、Fedora 等优秀桌面环境的兴起,同时各大硬件厂商对其支持的加大,Linux 在个人桌面领域的占有率在逐渐的提高

Linux和Windows区别

企业测试环境05
如果没有权限,就会出现减号[ – ] 从左至右用0-9这些数字来表示:
(1)0首位表示类型
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等
-代表文件
d 代表目录
l 链接文档(link file);
(2)第1-3位确定属主(该文件的所有者)拥有该文件的权限。—User
(3) 第4-6位确定属组(所有者的同组用户)拥有该文件的权限,—Group
(4) 第7-9位确定其他用户拥有该文件的权限 —Other
2.rxw作用文件和目录的不同解释
(1)作用到文件:
[ r ]代表可读(read): 可以读取,查看
[ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
[ x ]代表可执行(execute):可以被系统执行
(2)作用到目录:
[ r ]代表可读(read): 可以读取,ls查看目录内容
[ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
[ x ]代表可执行(execute):可以进入该目录
(2)作用到目录:
[ r ]代表可读(read): 可以读取,ls查看目录内容
[ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
[ x ]代表可执行(execute):可以进入该目录

chmod 改变权限
1.基本语法

企业测试环境05

进程线程类

进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源
定义与区别
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位
(可以理解为进程是可以独立运行的)
线程是进程的一个实体,是cpu调度和分派的基本单位,他是比进程更小的能够独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源。一个线程可以创建撤销另外一个线程(在1个进程中可以有多个线程,多个线程之间可以互相操作)
区别: 一个线程只能属于一个进程,而一个进程可以拥有多个线程。线程是进程工作中的最小单位。一个进程会分配一个地址空间,进程与进程之间不共享地址空间。即不共享内存。同一个进程下的不同的多个线程,共享父进程的地址空间。线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步(中间件、消息队列)线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
进程与线程的优缺点
进程 优点
1.每个进程互相独立、不影响主程序的稳定性,子进程崩溃不影响其他进程。
2.通过增加CPU,就可以扩充性能。
3.可以尽量减少线程加锁与解锁的影响,极大的提高了性能。
进程 缺点
a)逻辑控制复杂,需要和主程序交互。
b)多进程调度开销大。
线程 优点
a)程序逻辑和控制方式简单
b)所有线程可以直接共享内存和变量等
c)线程方式消耗的总资源比进程方式少
线程 缺点
1.每个线程与主程序共用地址空间,最大内存地址受限。
2.线程之间的同步和加锁不易控制。
3.一个线程的崩溃可能影响到整个程序的稳定性

ps 查看当前系统进程状态
ps:process status 进程状态
1.基本语法
ps aux | grep xxx 功能描述:查看系统中所有进程
ps -ef | grep xxx 功能描述:可以查看子父进程之间的关系
2.选项说明
-a 选择所有进程
-u 显示所有用户的所有进程
-x 显示没有终端的进程
3.功能说明
(1)ps aux显示信息说明
USER:该进程是由哪个用户产生的
PID:进程的ID号
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;

VSZ:该进程占用虚拟内存的大小,单位KB;
RSS:该进程占用实际物理内存的大小,单位KB;
TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。
STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台
START:该进程的启动时间
TIME:该进程占用CPU的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
(2)ps -ef显示信息说明
UID:用户ID
PID:进程ID
PPID:父进程ID

C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU时间
CMD:启动进程所用的命令和参数
4.经验技巧
如果想查看进程的***CPU占用率和内存占用率***,可以使用aux;
如果想查看***进程的父进程ID***可以使用ef;

kill 终止进程
1.基本语法
kill [选项] 进程号 功能描述:通过进程号杀死进程
killall 进程名称 功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
2.选项说明
-9 表示强迫进程立即停止

pstree 查看进程树
1.基本语法
pstree [选项]
2.选项说明
-p 显示进程的PID
-u 显示进程的所属用户

top 查看系统健康状态
能够实时监控系统的运行状态,并且可以按照cup及内存进行排序
1.基本命令
top [选项]

2.选项说明
-d 秒数 指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令
-i 使top不显示任何闲置或者僵死进程。
-p 监控指定的进程。当监控多个进程时,进程ID以逗号分隔。这个选项只能在命令行下使用
-h 帮助

3.top任务区命令(操作说明)
P 以CPU使用率排序,默认就是此项
M 以内存的使用率排序
N 以PID排序
q 退出top
z 彩色/黑白显示

4.查询结果字段解释
第一行信息为任务队列信息

12:26:46 系统当前时间
up 1 day, 13:32 系统的运行时间,本机已经运行1天
13小时32分钟
2 users 当前登录了两个用户
load average: 0.00, 0.00, 0.00 系统在之前1分钟,5分钟,15分钟的平均负载值。一般认为小于1时,负载较小。如果大于1,系统已经超出负荷。【特别说明:在单核CUP中load average的值为1时表示满负荷状态。同理在多核CPU中满负载的load average的值为1*CPU核数】假设我们有一个8核cup,load average的值超过8时,说明是满负荷了

第二行为进程信息
Tasks: 95 total 系统中的进程总数
1 running 正在运行的进程数
94 sleeping 睡眠的进程
0 stopped 正在停止的进程
0 zombie 僵尸进程。如果不是0,需要手工检查僵尸进程

第三行为CPU信息
Cpu(s): 0.1%us 用户模式占用的CPU百分比
0.1%sy 系统模式占用的CPU百分比
0.0%ni 改变过优先级的用户进程占用的CPU百分比
99.7%id 空闲CPU的CPU百分比
0.1%wa 等待输入/输出的进程的占用CPU百分比
0.0%hi 硬中断请求服务占用的CPU百分比
0.1%si 软中断请求服务占用的CPU百分比
0.0%st st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比。

第四行为物理内存信息
Mem: 625344k total 物理内存的总量,单位KB
571504k used 已经使用的物理内存数量
53840k free 空闲的物理内存数量,我们使用的是虚拟机,总共只分配了628MB内存,所以只有53MB的空闲内存了

65800k buffers 作为缓冲的内存数量

第五行为交换分区(swap)信息
Swap: 524280k total 交换分区(虚拟内存)的总大小
0k used 已经使用的交互分区的大小
524280k free 空闲交换分区的大小
409280k cached 作为缓存的交互分区的大小

vmstat
可以监控操作系统的进程状态、内存、虚拟内存、磁盘IO、CPU的信息
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。vmstat 工具提供了一种低开销的系统性能观察方式。因为 vmstat 本身就是低开销工具,在非常高负荷的服务器上,需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat 输出结果。
1.命令格式

企业测试环境05
free
能够监控系统的内存使用状态。其中total:总计物理内存的大小;Used:已使用多大;Free:可用有多少;shard:多个进程共享的内存总额;buffers/cached:磁盘缓存大小。
  1. 命令格式
    free [参数]
    2.命令功能
    free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略
    3.常用
    企业测试环境05
    (2)特殊符号
    企业测试环境05

    软件包管理

    RPM

    RPM概述
    RPM(RedHat Package Manager),RedHat软件包管理工具,类似windows里面的setup.exe
    是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但理念是通用的。
    RPM包的名称格式
    Apache-1.3.23-11.i386.rpm
    -“apache” 软件名称
    -“1.3.23-11”软件的版本号,主版本和此版本
    -“i386”是软件所运行的硬件平台,Intel 32位微处理器的统称
    -“rpm”文件扩展名,代表RPM包

    RPM查询命令(rpm -qa)
    1.基本语法
    rpm -qa (功能描述:查询所安装的所有rpm软件包)
    2.经验技巧
    由于软件包比较多,一般都会采取过滤。rpm -qa | grep rpm软件包

    RPM卸载命令(rpm -e)
    1.基本语法
    rpm -e RPM软件包
    rpm -e –nodeps 软件包
    2.选项说明
    -e 卸载软件包
    –nodeps 卸载软件时,不检查依赖。这样的话,那些使用该软件包的软件在此之后可能就不能正常工作了。

    RPM安装命令(rpm -ivh)
    1.基本语法
    rpm -ivh RPM包全名
    2.选项说明
    -i -i=install,安装
    -v -v=verbose,显示详细信息
    -h -h=hash,进度条
    –nodeps –nodeps,不检测依赖进度

    YUM仓库配置

    YUM概述
    YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装

    企业测试环境05
    多次压测后的性能预估(最少要做3~5次的性能测试观察性能损耗到底有多少,比如说你的性能测试环境是8核CPU、16G内存这样的环境、假设说你一开始是3台服务器,他的性能表现是怎么样的,5台服务器,他的性能表现又是怎么样的,8台又是怎么样的们期望的结果是像蓝线那样正常曲线,但是实际结果一定会像红线那样有性能损耗,当你的服务器越多,性能损耗可能就越多、如果说加服务器这种野蛮的方法就一定能无休止的增长我们的性能,一些土豪公司完全不用做性能测试,那还要做性能测试干什么也就说当我们真正把项目上到我们的生产环境的时候,你的测试报告里面要有一个性能预估的体现,体现的依据有一个非常重要的一点,就是***预估性能损耗指标(计算方式:相同脚本+相同场景+相同的并发用户数 然后增加你的服务器大概计算一下性能损耗,不一定说特别准确,所以只能叫预估)

    服务器实时内存监控
    ***top、vmstat、free ***当然 top vmstat 也可以进行一些磁盘IO、CPU的一些监控,任何监控工具实际上底层都有可能是集成这些命令,当这些命令你会使用就,当用其他的工具的时候就对他们的基本运行原理基本也就是了然了

    企业测试环境05

    注意点:
    vmstat 和 mpstat 命令的差别:mpstat 可以显示每个处理器的统计,而 vmstat 显示所有处理器的统计。因此,编写糟糕的应用程序(不使用多线程体系结构)可能会运行在一个多处理器机器上,而不使用所有处理器。从而导致一个 CPU 过载,而其他 CPU 却很空闲。通过 mpstat 可以轻松诊断这些类型的问题

    vmstat 中所有关于 CPU 的总结都适合 mpstat。**当您看到较低的 % idle 数字时,您知道出现了 CPU 不足的问题。**当您看到较高的 % iowait 数字时,您知道在当前负载下 I/O 子系统出现了某些问题

    服务器实时网络监控
    netstat

    服务器实时磁盘监控
    iostat是对系统磁盘IO操作进行监控,它的输出主要显示磁盘的读写操作的统计信息。同时给出cpu的使用情况
    1.命令格式
    iostat[参数][时间][次数]
    2.命令功能
    通过iostat方便查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息。
    3.命令参数
    -C 显示CPU使用情况
    -d 显示磁盘使用情况
    -k 以 KB 为单位显示
    -m 以 M 为单位显示
    -N 显示磁盘阵列(LVM) 信息
    -n 显示NFS 使用情况
    -p[磁盘] 显示磁盘和分区的情况
    -t 显示终端和CPU的信息
    -x [device]显示详细信息 输出指定要统计的磁盘设备名称,默认为所有磁盘设备
    -V 显示版本信息

    cpu属性值说明:
    %user:CPU处在用户模式下的时间百分比。
    %nice:CPU处在带NICE值的用户模式下的时间百分比。
    %system:CPU处在系统模式下的时间百分比。
    %iowait:CPU等待输入输出完成时间的百分比。
    %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
    %idle:CPU空闲时间百分比。

    注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

    disk属性值说明:
    rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
    wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
    r/s: 每秒完成的读 I/O 设备次数。即 rio/s
    w/s: 每秒完成的写 I/O 设备次数。即 wio/s
    rsec/s: 每秒读扇区数。即 rsect/s
    wsec/s: 每秒写扇区数。即 wsect/s
    rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节
    wkB/s: 每秒写K字节数。是 wsect/s 的一半
    avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)
    avgqu-sz: 平均I/O队列长度
    await: 平均每次设备I/O操作的等待时间 (毫秒)
    svctm: 平均每次设备I/O操作的服务时间 (毫秒)
    %util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比(繁忙程度)

    备注:如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果avgqu-sz比较大,也表示有当量io在等待。

    万能的sar命令

    简介: sar(System Activity Reporter, 系统活动情况报告): 是用于监控Linux系统各个性能的最优秀、最全面的工具之一,可以从多方面对系统的活动进行报告。
    监控范围: 文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。

    常用格式
    sar [ options ] [ [ ] ]
    interval: 采样周期,单位是秒;
    count:采样次数,默认值是连续采样;
    options:命令行选项。

    sar命令的选项很多,下面只列出常用选项

    -A:所有报告的总和
    -u:输出整体CPU使用情况的统计信息
    -v:输出inode、文件和其他内核表的统计信息
    -d:输出每一个块设备的活动信息
    -r:输出内存和交换空间的统计信息
    -b:显示I/O和传送速率的统计信息
    -a:文件读写情况
    -c:输出进程统计信息,每秒创建的进程数
    -R:输出内存页面的统计信息
    -y:终端设备活动情况
    -w:输出系统交换活动信息

    如何使用sar获取以下性能分析数据:
    整体CPU使用统计
    各个CPU使用统计
    内存使用情况统计
    整体I/O情况
    各个I/O设备情况
    网络统计

    企业测试环境05
    企业测试环境05
    输出项说明:
    tps: 每秒向磁盘设备请求数据的次数,包括读、写请求,为rtps与wtps的和。出于效率考虑,每一次IO下发后并不是立即处理请求,而是将请求合并(merge),这里tps指请求合并后的请求计数。
    rtps: 每秒向磁盘设备的读请求次数
    wtps: 每秒向磁盘设备的写请求次数
    bread/s:每秒钟从物理设备读入的数据量,单位为 块/s
    bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s

企业测试环境05
输出 说明
IFACE 网络设备名
rxerr/s 每秒接收的坏包总数
txerr/s 传输包时每秒发生错误的总数
coll/s 传输包时每秒发生冲突(collision)的总数
rxdrop/s 接收包时,由于缺乏缓存,每秒丢弃(drop)包的数量
txdrop/s 传输包时,由于缺乏缓存,每秒丢弃(drop)包的数量
txcarr/s 传输包时,每秒发生的传输错误(carrier-error)的数量
rxfram/s 接收包时,每秒发生帧校验错误(frame alignment error)的数量
rxfifo/s 接收包时,每秒发生队列(FIFO)一出错误的数量
txfifo/s 传输包时,每秒发生队列(FIFO)一出错误的数量

***总结:
要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来
怀疑CPU存在瓶颈,可用 sar -u和 sar -q 等来查看
怀疑内存存在瓶颈,可用 sar -B、sar -r和 sar -W 等来查看
怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d等来查看


来源:原来_serendipity

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年10月23日
下一篇 2019年10月23日

相关推荐