文章目录

  • 关注服务硬软指标
    • 服务器关键指标
      • CPU 负载
      • CPU 使用率
      • 网卡 IN & OUT
      • 内存 & 磁盘
    • Q&A
    • 附录

关注服务硬软指标

在搭建维护服务时,我们经常和服务的性能指标打交道,比如,QPS、耗时、P90/99、等等;然而服务的良好运行依托于服务的部署,离不开机器支撑,所以我们也要去关注服务器的运行指标。

关注服务硬软指标、深耕业务特性、衡量 ROI …也是资深工程师进阶必掌握的技能!

服务器关键指标

有这样的场景,运行良好的服务中有两台机器即将过保,需要从其他服务中的机器中选出两个进行迁移,那么该如何去做选择呢?

首先我们要进行机房粒度的思考,考量每个候选机器的所在机房,和过保机器的机房是否一致。服务需要进行跨机房部署,确保服务灾备及高可用。从候选机中选出与迁移服务所在机房互斥的集合作为首先机器。理论上选择过保机房机器即可。

CPU 负载

然后我们需要观察首先机器的 CPU 负载,确保 CPU 还有余力去支撑新的服务。如果有机房监控可以直接观察最近 5 分钟负载走势观察。没有的话,可以通过 w 命令行进行观察。

  • w 指令

w 命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

我们只需要关注头信息

 16:07:37 up 788 days, 3 min, 16 users,  load average: 3.59, 4.93, 5.48

Load average 为最近 1 分钟、5 分钟、15 分钟内机器的平均负载。

  • 平均负载意味着,CPU 的负荷指数。
    CPU 全负荷指数为 1 ,1.5 CPU 正在全力处理中且还有 一半的负载在等待。
    如果把 CPU 当作一辆车,则 1 是满载, 1.5 是车已经满载了,地上还有半车等着拉…
    可见,负荷指数 1 是个特殊值,一旦超过,就意味着服务任务已经超出 CPU 处理能力。一但负荷指数为 3+,那意味这服务已经接近死机,停服了…

故,这里负载最佳在 0.7-,让 CPU 畅畅快快的运行拉货,超过 0.7 就要考虑是否手动干预降低负载了,防止负荷升级。

  • 长尾解释
    -h:不打印头信息
    -u:当显示当前进程和cpu时间时忽略用户名
    -s:使用短输出格式
    -f:显示用户从哪登录
    -o:老式输出
    -i:显示IP地址而不是主机名(如果可能)

  • 行意义解释
    USER:登陆用户名
    TTY:登陆后系统分配的终端号
    FROM:远程主机名,即从哪里登陆的
    LOGIN@:何时登陆的
    IDLE:用户空闲时间。这是个计时器,一旦用户执行任何操作,该计时器便会被重置
    JCPU:和该终端连接的所有进程占用时间。包括正在运行和后台作业占用时间
    PCPU:当前进程锁占用时间
    WHAT:当前正在运行进程的命令

CPU 使用率

我们要考量 CPU 使用率是否已经满负荷,还有余力支撑新服务。如果有机房监控可以直接观察 CPU 使用率走势观察。没有的话,可以通过 top 命令行进行观察。

top - 16:47:56 up 788 days, 43 min, 16 users,  load average: 5.47, 5.25, 4.89
Tasks: 605 total,  1 running, 600 sleeping,  0 stopped,  4 zombie
%Cpu(s): 22.1 us, 14.6 sy,  0.5 ni, 51.0 id,  9.6 wa,  0.0 hi,  2.3 si,  0.0 st
KiB Mem : 65755892 total, 10136416 free, 15335236 used, 40284240 buff/cache
KiB Swap:  8388604 total,  2480316 free,  5908288 used. 45870540 avail Mem

我们关注第三行

%Cpu(s): 22.1 us, 14.6 sy,  0.5 ni, 51.0 id,  9.6 wa,  0.0 hi,  2.3 si,  0.0 st

其中 51.0 id 为 CPU 空闲百分比,使用率为 100-51.0=49.0;

一般以 CPU 使用率在 65~70%- 为佳。这样的话,资源贴近合理分配:user 空间保持在 65%~70% ,system 空间保持在 30% ,空闲保持在 0%~5% 。

  • CPU 状态解释
    0.0%us【user space】— 用户空间占用CPU的百分比。
    0.3%sy【sysctl】— 内核空间占用CPU的百分比。
    0.0%ni【】— 改变过优先级的进程占用CPU的百分比
    99.7%id【idolt】— 空闲CPU百分比
    0.0%wa【wait】— IO等待占用CPU的百分比
    0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比
    0.0%si【Software Interrupts】— 软中断占用CPU的百分比

网卡 IN & OUT

我们要考虑上下行带宽是否已经全占用,还有带宽支持新服务。我们一般通过监控采集,或者 iftop 等工具协助获得网卡的实时带宽。

这里要衡量服务现占用的带宽上限是否在首先机器的额外带宽阈值区间内。一般服务器都是 千兆 网卡,不会成为服务瓶颈,故这里省略详情。

内存 & 磁盘

我们要考量 内存 & 磁盘是否满载,还有空间支撑新服务。我们可以通过 free 指令观察 内存占用指标。

              total        used        free      shared  buff/cache   available
Mem:          64214       14995        9647        3252       39571       44775
Swap:          8191        5769        2422
  • Free 指令
    free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

不带任何选项运行 free 命令会显示系统内存,包括空闲(free)、已用(used)、交换(swap)、缓冲(buffers)、缓存(cached)和交换(swap)的内存总数。

  • 行意义解释

    • 第一行:表明全部内存、已用内存、空闲内存、共用内存(主要被 tmpfs(/proc/meninfo 中的 Shmem 项)使用)、用于缓冲的内存以及缓存内容大小。

      • 全部:全部已安装内存(/proc/meminfo 中的 MemTotal 项)
      • 已用:已用内存(全部计算 - 空间+缓冲+缓存)
      • 空闲:未使用内存(/proc/meminfo 中的 MemFree 项)
      • 共用:主要被 tmpfs 使用的内存(/proc/meminfo 中的 Shmem 项)
      • 缓冲:被内核缓冲使用的内存(/proc/meminfo 中的 Buffers 项)
      • 缓存:被页面缓存和 slab 使用的内存(/proc/meminfo 中的 Cached 和 SSReclaimable 项)
    • 第二行:表明已用和空闲的缓冲/缓存
    • 第三行:表明总交换内存(/proc/meminfo 中的 SwapTotal 项)、空闲内存(/proc/meminfo 中的 SwapFree 项)和已用交换内存。

内存计算规则

内存使用率(MEMUsedPerc)=100*(MemTotal-MemFree-Buffers-Cached)/MemTotal

通过计算规则,我们可以计算出当前机器内存使用情况,可以对比新服务的情况进行择优处理即可,磁盘情况类似。

Q&A

1、CPU 负载中最近 1 分钟、5 分钟、15 分钟数据以哪个为准呢?

通常以 5 分钟为准,1 分钟可能存在暂时现象,随后可能就恢复;15 分钟已经快凉了,意义不大

2、如果都是通过 Linux 指令查看各个指标,效率也太低了?

对,可以通过运维团队建立的实时监控观察

附录

日升月落,总有黎明

如何评估服务器基础性能 - CPU负载、使用率、内存磁盘使用率、网络带宽......相关推荐

  1. 应用服务器cpu类型,服务器基础知识+CPU分类详细+电源标准讲解

    <服务器基础知识+CPU分类详细+电源标准讲解>由会员分享,可在线阅读,更多相关<服务器基础知识+CPU分类详细+电源标准讲解(17页珍藏版)>请在人人文库网上搜索. 1.服务 ...

  2. java 监控linux服务器cpu使用率、内存使用率、磁盘使用率、java进程是否存活等服务

    java 监控linux服务器cpu.内存.java进程是否存活,发现异常发送邮件提醒 前一段时间在维护一个N年前的项目,这个项目有十几个服务器,每个服务器上有十几个服务.接手后的几个星期天天有事,要 ...

  3. Linux VPS服务器根据CPU负载及内存占用自动重启的bash shell脚本

    Linux VPS服务器根据CPU负载及内存占用自动重启的bash shell脚本 288月2011 0 主要用于监控 linux 服务器负载及内存占用,如 MySQl.php-fpm,当负载或内存占 ...

  4. cpu负载很高而使用率很低的缘故

    cpu负载很高而使用率很低的缘故 可以用#hdparm  -tT   /dev/sda1       来测试 Timing cached reads:   4624 MB in  2.00 secon ...

  5. cpu负载转移内存_为什么将所有工作负载转移到云中是个坏主意

    cpu负载转移内存 正如我们在本系列文章中一直探索的那样,云炒作无处不在,告诉您将应用程序迁移到云(包括混合云和多云)是确保企业数字化未来的一种方式. 这种炒作很少深入到迁移到云的陷阱,也没有考虑提高 ...

  6. 【Linux学习笔记】Linux获取CPU使用率,内存使用率和磁盘使用率

    实现目标: 在Linux上使用shell脚本回显系统当前的CPU使用率.内存使用率和磁盘空间使用率 1.CPU使用率: 使用top命令能够实时显示系统中各个进程的资源占用状况,所以这边可以使用top命 ...

  7. 评估服务基础性能应该参考那些指标?

    当谈到网络服务性能的时候,很多人都会采用一些单一性的指标数据作为性能参考,如支持多少在线,能跑到多少带宽等:实际上这些单一性的指标数据并不能反映服务的基础性能,毕竟应用场景是多样性的:那更好判断一个服 ...

  8. linux cdn服务器,wdcdn系统,CDN缓存系统,CDN加速系统,多节点CDN自架系统,CDN安装配置部署--Linux解决方案,技术支持与培训,服务器架构,性能优化,负载均衡,集群分流...

    WDCDN缓存加速管理系统,CDN软件,CDN管理平台,CDN解决方案 wdCDN是一套基于squid架构开发的CDN缓存加速系统及管理系统,高效,稳定,安全. 可帮助大中小站长或大中小企业低成本,快 ...

  9. Linux系统查看CPU使用率、内存使用率、磁盘使用率

    一.查看CPU使用率 1. top 命令 [root@sss ~]# top top - 16:54:38 up 7 days, 5:13, 3 users, load average: 0.00, ...

最新文章

  1. python基础练习(十)
  2. Centos下gcc的安装、gcc的更新、gcc安装过程中报错:make[1]: *** [stage1-bubble] 错误 2
  3. 动态规划之状态机模型
  4. 爬虫简单入门:第一个简单爬虫
  5. WIN10下ADB工具包安装的教程和总结 --201809
  6. 798B. Mike and strings
  7. 3 .6 .5 优化Ad-Hoc工作负载
  8. 网易NEI在面临前后端分离问题,所提供的完整解决方案
  9. 【AI视野·今日NLP 自然语言处理论文速览 第十六期】Tue, 29 Jun 2021
  10. ajax、axios、fetch之间的详细区别以及优缺点
  11. 633. 平方数之和
  12. python爬取新浪博客_Python爬取韩寒全部新浪博客
  13. latex各类符号(红心、方块、五角星等)集合
  14. 大一python基础编程试卷_大学moocPython编程基础答案
  15. 女程序猿做了个梦,各路大神惊现神级评论!
  16. 【快速幂取模】NOI 7833:幂的末尾
  17. 在Linux和Windows上安装kafka(版本:2.12-2.8.0)
  18. mysql数据库备份方式
  19. pdf以文件流的形式导出乱码问题解决
  20. 我的大二下期学期计划

热门文章

  1. 核电站问题 解题报告
  2. 在word中输入各种公式
  3. 英雄互娱大数据面试题
  4. 破解中兴zxv10 h108b联通定制版全过程
  5. golang cpuprofile分析
  6. 不谈高级原理,只用简单的语言来聊聊机器学习
  7. web設計常用代碼收集
  8. 点击跳出商务通对话框
  9. 如何从dump文件中提取出C#源代码学习通http://www.bdgxy.com/
  10. 面稀土,战码家(二)