linux 系统性能评估与优化方案

本贴最后更新于 2066 天前,其中的信息可能已经事过境迁

cpu 性能评估

grep "processor" /proc/cpuinfo|wc -l《=查看 cpu 个数

vmstat 3 5

r b swpd free buff cache si so bi bo in cs us sy id wa st

0 0 0 79636 145384 182388 0 0 9 19 99 119 3 1 95 0 0

0 0 0 79184 145392 182404 0 0 0 25 139 124 6 2 92 0 0

0 0 0 79440 145392 182412 0 0 0 3 275 145 15 7 78 0 0

2 0 0 79448 145400 182408 0 0 0 17 128 126 5 2 93 0 0

0 0 0 79480 145400 182404 0 0 0 19 136 118 6 2 92 0 0

r 表示运行或等待 cpu 时间片的进程数,如果该值长时间大于 cpu 个数说明 cpu 资源不足。

bi+bo 参考值为 1000,如果大于 1000,而且 wa 值较大,说明 i/o 有问题,要想办法提高磁盘读写性能。

si 、 so 长时间不为 0 说明内存不足。

us 大于 50 说明用户进程占用过大的 cpu 资源,要优化应用程序。

us+sy 参考值 80,如果大于 80 说明 cpu 资源可能不足。

wa 参考值为 20,如果大于 20 说明磁盘读写性能有问题。

id 表示 cpu 空闲值。

sar -u 3 5 对某个系统 cpu 的统计

16:13:43 CPU %user %nice %system %iowait %steal %idle

16:13:46 all 6.08 0.00 6.08 0.00 0.00 87.84

16:13:49 all 13.27 0.00 9.18 0.00 0.00 77.55

16:13:52 all 14.97 0.00 5.78 0.00 0.00 79.25

16:13:55 all 6.73 0.00 6.06 0.00 0.00 87.21

16:13:58 all 4.05 0.00 4.73 0.34 0.00 90.88

Average: all 9.00 0.00 6.36 0.07 0.00 84.56

%nice 正常运行进程占用 cpu 时间的百分比。

%steal 表示内存紧张时 pagein 强制对不同页面做 steal。

注意的是第一行的统计信息包含使用 sar 命令消耗的统计。

sar -P 0 3 5 针对某个 cpu 进行统计,cpu 是从 0(表示第一颗 cpu)开始计数。由于有些程序是单线程导致整体 cpu 占用不高,某个使用了百分之百,其他空闲着,导致程序很慢。

uptime 命令的输出,load average 三个值的大小一般不能大于 cup 个数,大于 cpu 个数说明 cpu 很忙忙负载很高,偶尔大于也不用太担心。

iostat -c 只显示 cpu 信息。

内存性能评估

free -m -s 5(m 表示以 mb 为单位显示,5 表示每隔 5 秒输出一次)

total used free shared buffers cached

Mem: 981 905 75 24 145 179

-/+ buffers/cache: 581 400

Swap: 2047 0 2047

一半情况可用内存(used +buffer+cached)/总的物理内存 >70% 说明内存重装,大于 20% 小于 70% 说明勉强够用,小于 20% 表示内存资源紧缺。

可用内存计算脚本如下:

free -m|sed -n '2p'|awk '{print ($4+$6+$7)/$2*100"%"}'

watch 是个非常有用的命令即在 watch 后面数据需要执行的命令,默认每隔 2 秒重新执行一次这个命令,watch -n 3 -d free -m,n 表示重复执行的时间间隔,d 表示高亮显示变化。

vmstat 命令也可关注内存,重点关注 swpd、si、so 参数。

sar -r 2 3 也可统计内存。不仅输出使用量还输出使用的百分比。现在内存很便宜,一般内存都很大,一半都满足要求,如出现不足都是应用程序本身造成的。

磁盘 I/O 性能评估

首先对 raid 了解不同的场景使用不同的 raid 组合方式或考虑使用裸设备(缺点是数据管理、空间管理不灵活,需要很专业的人士操作)。

sar -d 2 3

Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

Average: dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

Average: dev8-0 2.36 0.00 32.38 13.71 0.00 2.00 0.71 0.17

Average: dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

%util 表示 1 秒中有百分之几的时间用来 i/o 操作。

tps 表示每秒到物理磁盘的传送数,也就是每秒的 I/O 流量。一个传送就是一个 I/O 请求,多个逻辑请求可以合并为一个物理 I/O 请求。

iostat -d 2 3

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

scd0 0.00 0.01 0.00 264 0

sda 1.87 15.05 39.30 561380 1466250

sdb 0.01 0.12 0.00 4586 64

iostat -x /dev/sda 2 3 对每个磁盘的单独统计。

要解决 I/O 的瓶颈,关键是要提高 I/O 子系统的执行效率。首要,要从应用程序上对磁盘读写进行优化,能够放到内存中执行的操作,尽量不要放到磁盘上。其次,对磁盘存储方式进行合理规划,选择适合自己的 RAID 存取方式。最后,在系统级别上,可以选择适合自身应用的文件系统类型,必要时使用裸设备提高读写性能。

网络性能评估

首先用 ping 检查联通性 ping 192.168.179.130

PING 192.168.179.130 (192.168.179.130) 56(84) bytes of data.

64 bytes from 192.168.179.130: icmp_seq=1 ttl=64 time=0.306 ms

64 bytes from 192.168.179.130: icmp_seq=2 ttl=64 time=0.191 ms

64 bytes from 192.168.179.130: icmp_seq=3 ttl=64 time=0.194 ms

9 packets transmitted, 9 received, 0% packet loss, time 8530ms

time 显示两台主机之间的网络延时情况,单位为毫秒,此值越大表示网络延时很大。

packet loss 表示丢包率,此值越小表示网络质量越好。

[root@ppzCentos1 ~]# netstat -i 提供网络接口的详细信息

Kernel Interface table

Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg

eth0 1500 0 54998 0 0 0 73183 0 0 0 BMRU

lo 65536 0 47231 0 0 0 47231 0 0 0 LRU

通信术语 最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。

netstat -r/route 检查系统的路由表信息。

sar -n DEV 2 3 显示网络的运行状态。

统计网络连接数:

netstat -n|grep "ESTABLISHED"|wc -l

统计 ip 的连接数:

netstat -n|grep "ESTABLISHED"|awk -F"[ :]+" '{print $6}'|sort|uniq -c

来自 [http://blog.panwei.org/wp-admin/post.php?post=402&action=edit](http://blog.panwei.org/wp-admin/post.php?post=402&action=edit)

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    915 引用 • 931 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    82 引用 • 122 回帖 • 620 关注
  • Sillot

    Sillot (汐洛)孵化自思源笔记,致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点
    Github 地址:https://github.com/Hi-Windom/Sillot

    15 引用 • 6 回帖 • 28 关注
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 687 关注
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 290 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 383 回帖 • 5 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    324 引用 • 1395 回帖
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 693 关注
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    40 引用 • 24 回帖
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    21 引用 • 37 回帖 • 512 关注
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 89 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    69 引用 • 190 回帖 • 495 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    189 引用 • 1056 回帖
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 40 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    126 引用 • 1699 回帖 • 1 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 54 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖 • 1 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 741 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    14 引用 • 7 回帖 • 1 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 618 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    1 引用 • 11 回帖 • 2 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    9 引用 • 32 回帖 • 166 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 9 关注