24-性能分析-基础

2021-07-06 09:39:01 浏览数 (1)

服务器

组成

  • 硬件
  • 软件

硬件

  • cpu
  • 内存
  • 磁盘
  • 网卡

软件

操作系统
  • windows
  • Linux

Linux本身就是一个多用户的系统

Linux作为服务器,无图像,所有的操作,都是通过命令

其他
  • jre
  • 容器
  • 中间件
  • docker
  • 项目

服务

一个能力的输出体,一定会有端口

一台服务器,可以有多个服务

Linux发行版本

发行家族

  • Debian
  • Fedora
  • SUSE
  • 其他

同一发行家族的安装软件的工具是相同的

服务器架构演进第一阶段

服务器性能的提升

单一服务器架构

单一服务器架构

应用与数据库服务器分离

应用与数据库服务器分离

应用与数据库和文件服务器分离

应用与数据库和文件服务器分离

Linux基础

文件

代码语言:javascript复制
$ yum install tree -y

重要文件

代码语言:javascript复制
$ ls /
  • /boot:linux的核心文件
  • /bin:存放系统中的可直接执行的命令
  • /etc:系统管理所需要的所有配置文件
  • /usr:unix shared resource 用户共享程序文件夹(类似windows中的program files目录)
  • /opt:optional给主机额外安装的软件目录(类似window的d盘)
  • /home:用户(非root)的根目录
  • /sys:系统文件,记录内核设备树
  • /media:自动识别的外设
  • /mnt:给用户临时挂载外部文件系统
  • /proc:process进程,虚拟文件系统,存储当前内核运行状态的特殊文件。这个内容不在磁盘上,而在内存,可以直接查看、修改系统信息
  • /root:超级权限者的主目录
  • /run:临时文件,系统启动的信息
  • /srv:服务启动后,需要提取的数据
  • /var:不断扩充的动力,如日志
  • /tmp:临时文件
  • /dev:device linux的外部设备
linux文件权限

查看文件权限信息

代码语言:javascript复制
root@zx:/# ls -l
total 970036
lrwxrwxrwx   1 root root         7 Nov 20  2020 bin -> usr/bin
drwxr-xr-x   3 root root      4096 Nov 20  2020 boot
drwxr-xr-x  18 root root      3880 Dec 29 09:55 dev
drwxr-xr-x  92 root root      4096 Dec 29 11:39 etc
drwxr-xr-x   4 root root      4096 Jan  2 19:32 home
lrwxrwxrwx   1 root root         7 Nov 20  2020 lib -> usr/lib
lrwxrwxrwx   1 root root         9 Nov 20  2020 lib32 -> usr/lib32
lrwxrwxrwx   1 root root         9 Nov 20  2020 lib64 -> usr/lib64
lrwxrwxrwx   1 root root        10 Nov 20  2020 libx32 -> usr/libx32
drwx------   2 root root     16384 Nov 20  2020 lost found
drwxr-xr-x   4 root root      4096 Nov 20  2020 media
drwxr-xr-x   2 root root      4096 Apr 23  2020 mnt
drwxr-xr-x   3 root root      4096 Dec 29 10:06 opt
dr-xr-xr-x 120 root root         0 Dec 29 09:55 proc
drwx------   6 root root      4096 Jan  2 19:45 root
drwxr-xr-x  23 root root       780 May 26 20:35 run
lrwxrwxrwx   1 root root         8 Nov 20  2020 sbin -> usr/sbin
drwxr-xr-x   2 root root      4096 Apr 23  2020 srv
-rw-------   1 root root 993249280 Nov 20  2020 swapfile
dr-xr-xr-x  13 root root         0 Dec 29 17:55 sys
drwxrwxrwt  11 root root      4096 May 26 20:35 tmp
drwxr-xr-x  14 root root      4096 Dec 29 10:02 usr
drwxr-xr-x  12 root root      4096 Dec 29 11:39 var
第1个
  • d:目录
  • l:链接
  • -:文件
第2/3/4个

归属User权限

  • r:读
  • w:写
  • x:执行
  • -:无权限
第5/6/7个

归属Group权限

  • r:读 = 4
  • w:写 = 2
  • x:执行 = 1
  • -:无权限
第8/9/10个

其他Other用户权限

  • r:读
  • w:写
  • x:执行
  • -:无权限

一般使用chmod 777 文件名来修改权限

  • 7 = 4 2 1
第11个

文件硬链接数

第12个

归属用户Username 使用chown修改

第13个

归属用户Groupname 使用chgrp修改

第14个

文件大小

第15个

日期时间

最后1个

文件名称

安装命令

Fedora家族
  • Fedora
  • redhat
  • centos

使用yum或者dnf

使用rpm包安装

代码语言:javascript复制
rmp -ivh **.rpm 安装过程中显示正在安装的文件信息及安装进度
rpm -e pkgname 卸载软件,不要.rpm结尾
rpm -Uvh **.rpm 升级包
Debain家族
  • debain
  • ubuntu

使用aptapt-get

使用deb包安装

代码语言:javascript复制
sudo dpkg -i ***.deb 安装
sudo dpkg -r 卸载
Suse家族
  • suse

使用zypper或者yast

使用tar.gz文件

可以在任意linux发行版本中安装

  1. 解压
代码语言:javascript复制
tar -xzvf **.tar.gz
  1. 进入解压的文件夹
代码语言:javascript复制
cd **
  1. 检查编译
代码语言:javascript复制
./configure
  1. 依赖gcc
代码语言:javascript复制
yum install gcc -y 
yum install make -y 
sudo apt install build-essential
  1. 生成编译文件
代码语言:javascript复制
make
  1. 安装
代码语言:javascript复制
make install
  1. 卸载
代码语言:javascript复制
make uninstall

查看帮助

man

显示系统手册页中的内容,会展示更多程序相关信息

help

获取某个命令的相关帮助

info

能提供比man更详细的帮助信息

top

默认间隔3秒刷新一次数据

代码语言:javascript复制
top - 21:05:34 up 148 days, 11:09,  1 user,  load average: 0.05, 0.04, 0.00
Tasks: 107 total,   1 running, 106 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  6.5 sy,  0.0 ni, 93.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   3936.1 total,    144.1 free,    463.7 used,   3328.4 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   3192.1 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME  COMMAND                                                     
  10776 root      20   0   66308  59924   6088 S   6.2   1.5   1955:39 gunicorn                                                    
3504779 root      10 -10  206656 113420  14868 S   6.2   2.8   1139:36 AliYunDun                                                   
      1 root      20   0  168500  12776   8480 S   0.0   0.3   2:10.17 systemd                                                     
      2 root      20   0       0      0      0 S   0.0   0.0   0:01.55 kthreadd                                                    
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp                                                      
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp                                                  
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-kblockd
代码语言:javascript复制
top - 21:05:34 系统时间
up 148 days, 11:09,  当前系统启动了多长时间
1 user,  有多少个用户连接
load average: 0.05, 0.04, 0.00 系统负载值 
第1个值:过去1分钟系统平均负载
第2个值:过去5分钟系统平均负载
第3个值:过去15分钟系统平均负载

按下1可以查看cpu个数

代码语言:javascript复制
top - 21:11:30 up 148 days, 11:15,  1 user,  load average: 0.04, 0.03, 0.00
Tasks: 109 total,   1 running, 108 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.7 us,  0.0 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  1.0 us,  0.7 sy,  0.0 ni, 98.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   3936.1 total,    145.5 free,    463.9 used,   3326.8 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   3191.9 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME  COMMAND                                                     
3504779 root      10 -10  206656 113420  14868 S   2.7   2.8   1139:45 AliYunDun                                                   
  10776 root      20   0   66308  59924   6088 S   1.0   1.5   1955:43 gunicorn                                                    
4059383 root      20   0  805192  12000   7748 S   0.7   0.3  28:01.19 aliyun-service                                              
   6095 root      20   0 1021072  73124  28384 S   0.3   1.8 150:37.80 dockerd    
  • 一般来说,当系统负载值的第二个数值大于cpu核数的50%时,就认为系统负载比较高
  • 当系统负载值的第一个数值很大,系统负载值的第二个数值很小。说明 现在系统的压力很大,可能还会继续上升
  • 当系统负载值的第一个数值很小,系统负载值的第二个数值很大。说明系统正在释放压力,压力在逐渐减少。

load average的计算:所以cpu使用时间之和 io使用时间之和 与 空闲时间之和 进行比较

代码语言:javascript复制
Tasks: 107 total,   
当前运行的进程数
按下H 会变成Threads: 236 total,   1 running, 235 sleeping,   0 stopped,   0 zombie 也就是当前运行的线程数
1 running, 正在运行
106 sleeping,   休息的
0 stopped,   停止的
0 zombie 僵尸进程
对应下面列中的S列:
R = running
S = sleeping
T = stopped
Z = zombie
代码语言:javascript复制
%Cpu(s):  CPU的使用情况
0.0 us,  user space用户态cpu使用率
6.5 sy,  sysctl 系统内核态cpu使用率
0.0 ni, nice 进程优先级切换cpu使用率
93.5 id,  idolt 空闲
0.0 wa,  wait等待
0.0 hi,  hardware IRQ 硬中断
0.0 si,  software IRQ 软中断(自主切换)
0.0 st 管理程序占用

0 人点赞