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

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

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 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    923 引用 • 936 回帖

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    131 引用 • 1114 回帖 • 137 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    4 引用 • 91 回帖
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖 • 1 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    281 引用 • 716 回帖
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    76 引用 • 37 回帖
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 555 关注
  • 又拍云

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

    21 引用 • 37 回帖 • 523 关注
  • 导航

    各种网址链接、内容导航。

    37 引用 • 168 回帖
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    21 引用 • 140 回帖 • 12 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 714 关注
  • Linux

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

    923 引用 • 936 回帖
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    285 引用 • 4482 回帖 • 658 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 7 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    7017 引用 • 31714 回帖 • 220 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 446 关注
  • 持续集成

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

    14 引用 • 7 回帖 • 5 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    71 引用 • 1737 回帖 • 2 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 2 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    106 引用 • 152 回帖
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    7 引用 • 26 回帖
  • SSL

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

    69 引用 • 190 回帖 • 474 关注
  • OkHttp

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

    16 引用 • 6 回帖 • 48 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖
  • Sillot

    Insights(注意当前设置 master 为默认分支)

    汐洛彖夲肜矩阵(Sillot T☳Converbenk Matrix),致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点。其中汐洛绞架(Sillot-Gibbet)基于自思源笔记(siyuan-note),前身是思源笔记汐洛版(更早是思源笔记汐洛分支),是智慧新录乄终端(多端融合,移动端优先)。

    主仓库地址:Hi-Windom/Sillot

    文档地址:sillot.db.sc.cn

    注意事项:

    1. ⚠️ 汐洛仍在早期开发阶段,尚不稳定
    2. ⚠️ 汐洛并非面向普通用户设计,使用前请了解风险
    3. ⚠️ 汐洛绞架基于思源笔记,开发者尽最大努力与思源笔记保持兼容,但无法实现 100% 兼容
    29 引用 • 25 回帖 • 53 关注