Linux 性能分析以及调优介绍
写在前面:计算机要解决的基本问题之一是如何在不增添更多硬件能力的情况下使其能够完成更多工作;而我们应用设计的一项重要伸缩性原则是:随着应用的推广和访问流量的增加,通过相应数量的服务器资源来应对;资源的消耗应该随负载线性(或更佳)上升,负载可由用户流量、数据量等测量;可以参考ebay的架构最佳实践:
http://www.infoq.com/cn/articles/ebay-scalability-best-practices
本节介绍linux性能分析工具;下一节介绍各个层面的可调参数;最后一节介绍一个web性能问题分析案例;
第一节 性能监控
1)整体系统cpu利用率
系统性能的指标之一就是系统对用户的响应速度。在对系统的方法化分析中,首要且最近本的工具之一常常是对系统的cpu利用率进行简单测量。
$ uptime
10:17:40 up 6 days, 59 min, 6 users, load average: 0.00, 0.00, 0.00
主要看load average也就是我们通常说的服务器load(平均负荷值),代表1分钟,5分钟,15分钟
系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中:
- 它没有在等待I/O操作的结果
- 它没有主动进入等待状态(也就是没有调用'wait')
- 没有被停止(例如:等待终止)
(但也有例外,看各个系统的计算方式了,我的debian发布版,从man uptime里System load averages is the average number of processes that are either in a runnable or uninterruptable state,可见它包括等待i/o的线程)
vmstat命令实时监控系统各个方面的数据;例如每隔3秒显示一下系统性能数据:
$vmstat 3
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 192824 93020 317960 770156 0 1 73 79 114 108 20 23 56 2
0 0 192824 93012 317960 770164 0 0 0 0 958 2223 7 10 84 0
procs部分提供了生成报告时正在运行的进程数据(r)以及被阻塞的进程数目(b);
memory部分提供了换出内存(swpd),空闲内存(free),i/o数据结构的缓冲区缓存(buff),以及从磁盘读取文件的内存缓存(cache)的容量,单位为KB;
swap部分提供了从磁盘上换入的内存容量(si)以及换出到磁盘上的内存量(so),单位kB/s;
io部分提供了从设备读入的块数(bi)以及写出到设备上的块数(bo).单位为KB/s;
system部分提供了每秒的中断数目(in)和上下文切换数目(cs);
cpu部分提供了用户(us),系统(sy),真正空闲(id),已经等待I/O完成(wa)在cpu总时间中所占百分比。cpu利用率也许是最常用的量度。若wa过大,则应该检查I/O子系统,
例如,可以判定需要更多的I/O控制器和磁盘以减少I/O等待的时间;
top和gtop命令:提供所有正在运行的进程和系统载荷提供不断更新的概览信息,包括CPU负荷,内存使用以及每隔进程的内存使用情况;
sar是sysstat工具包的组成部分;它收集并报告错哦阿左系统中广泛的系统活动,包括CPU利用率,上下文切换和中断速率,页换入,和页换出速率,共享内存使用情况,
设备性能情况,缓冲区使用情况以及网络使用情况;
2)内存利用率
工作负荷有可能会耗尽所有可用的内存。Linux提供了对物理内存进行合理,高效的访问并可以访问潜在的海量虚存的技术。虚存通常稍多于操作系统实际拥有的内存容量,以便将较少使用的数据卸载到磁盘存储器上,同时又呈现出系统拥有大量物理内存的假象。糟糕的是,卸载内存的开销可能会比应用延迟高出数十甚至上百倍。如果被换出到磁盘上的内存空间是错误的内存页,或者如果应用程序的当前内存印迹大于物理内存容量的话,那么这些过高的延迟会极大的影响应用的响应时间;
通过/proc/meminfo和/proc/slabinfo可以监视系统内存资源的整体利用情况;
可以通过ps aux 查看每个进程消耗系统内存的总体百分比,以及该进程的虚存印迹(VSZ)和当前使用的物理内存量(RSS)。也可以使用top交互式的查看进行列表。然后通过/proc/pid(进行id)/maps查看进行地址空间的所有映射及其大小,等内存分布状况信息。
通过vmstat可以监视内存可用性和交换活动。vmstat可以协助发现异常的系统活动,例如会导致操作系统性能下降的过多的页面错误或上下文切换操作。结合cpu利用率的us,sy,id,wa监视,如果wa的值过大,则要查看I/O系统,结论有可能是需要更多I/O控制器和磁盘以便减少I/O等待时间;
$vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
4 0 306792 159560 228680 298932 0 1 75 84 65 71 19 21 58 2
3)磁盘I/O的利用率和延迟
尽管整体的处理器速度,内存大小以及I/O执行速度在不断提高,但I/O操作的吞吐率和延迟性能仍然要比等价的内存访问操作低多个数量级;另外,由于许多工作负荷都
拥有重要的I/O组件,I/O处理容易成为整体吞吐律和应用整体响应时间的重要瓶颈;以下介绍iostat命令:
$iostat
Linux 2.6.32-5-686 (zhaopeng) 07/07/2010 _i686_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
18.93 0.50 22.80 1.57 0.00 56.21
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 5.63 90.79 99.44 47760868 52308144
iostat报告的CPU利用心里类似于top工具提供的内容;之后给出各个磁盘的利用情况的报告;
tps列表示发至逻辑磁盘的I/O请求数;Blk_read/s 和Blk_wrtn/s 给出分别对应于读写该逻辑驱动器的数据量,以每秒的块数为单位;
iostat 默认显示以块为单位,也可以加参数iostat -k 以KB为单位显示;
4)网络I/O利用率
netstat 是监视linux服务器上网络链接的最常用工具之一;该工具可以显示每种网络协议例如TCP和UDP的活跃socket列表,还提供了关于网络路由信息以及网络接口的累积统计数据,包括输入输出报文数量以及报文冲突次数;
常用的工具:netstat; iftop;ifstat;apache自带的ab测试工具;
参考:《linux服务器性能调整》
《深入理解linux内核》
相关推荐
第1章 mysql5.5介绍 2 1.1 性能上的显著改变 2 1.1.1 mysql5.5默认存储引擎的调整 2 1.1.2 充分利用cpu多核的处理能力 7 1.1.3 提高刷新脏页数量和合并插入数量,改善磁盘i/o处理能力 8 1.1.4 增加自适应刷新...
了解系统的硬件,才能在硬件平台最大限度的发挥我们的软件才能,通过对red hat Linux的系统调优,既能保证我们系统的稳定,又能极致的发挥系统的性能,在高性能下,我们可以通过监控随时了解机器的状态,那么这次的...
第一章 应用程序调优 1.1.1 通用代码调优 1.1.2 减小没有必要的操作 1.1.3 使用合适的类型 1.1.4 尽量使用pool,buffer和cache 1.2 JDBC代码调优 1.2.1 严格资源使用 1.2.2 实用技巧 1.2.3 优化SQL语句 1.3 Web代码...
│ 第54节:性能调优和配置使用建议.avi │ 第55节:Nginx+Varnish组合应用.avi │ 第56节:Varnish对性能的提升和优化.avi │ 第57节:应用上Varnish后的体系结构.avi │ 第58节:Memcached入门和缓存的含义.avi │...
对服务器来说主要的角色是应用服务器或数据库服务器,CPU作为关键资源经常成为性能瓶颈的根源。CPU使用率高并不总是意味着CPU工作繁忙,它有可能是正在等待其他子...在第二章“监控和基准工具”中介绍到,Linux有很多工
由国内著名技术社区联合推荐的2012年IT技术力作:《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》,即将上架发行,此书从Web应用、数据备份与恢复、网络存储应用、运维监控与性能优化、集群高级应用等...
循序渐进Linux:基础知识、服务器搭建、系统管理、性能调优、集群应用 此书最大的特点是注重实践、理论与时间相结合,在讲述完毕一个知识点后,一般都附有很多的例子作为对知识的实践补充,并且每个章节都是一个独立...
循序渐进Linux(基础知识、服务器搭建、系统管理、性能调优、集群应用) 此书最大的特点是注重实践、理论与时间相结合,在讲述完毕一个知识点后,一般都附有很多的例子作为对知识的实践补充,并且每个章节都是一个...
本文主要通过一下几个方面介绍:使用SQL DMV查找慢速查询、通过APM解决方案查询报告、SQLServer扩展事件、SQL Azure查询性能洞察等相关内容。 本文来自博客园,由火龙果软件Anna编辑、推荐。SQLServer的一个重要功能...
循序渐进Linux(基础知识、服务器搭建、系统管理、性能调优、集群应用) 此书最大的特点是注重实践、理论与时间相结合,在讲述完毕一个知识点后,一般都附有很多的例子作为对知识的实践补充,并且每个章节都是一个...
本书主要分为4个部分,第1部分为基础篇,介绍了Nginx服务器的安装与配置方法;第2部分为进阶篇,重点介绍了Nginx的配置优化方法、Nginx与PHP/Ruby/Python/JSP/Perl/Memcached的结合配置方法、Nginx HTTP反向代理与...
一个基于Linux操作系统的服务器运行的同时,也会表征出各种各样参数信息。通常来说运维人员、系统管理员会对...第一行后面的三个值是系统在之前1、5、15的平均负载,也可以看出系统负载是上升、平稳、下降的趋势,当这
, 本书分为三篇:, 准备篇(第1~2章),介绍了Spark的环境搭建、设计理念与基本架构,帮助读者了解一些背景知识。, 核心设计篇(第3~7章),着重讲解SparkContext的初始化、存储体系、任务提交与执行、计算引擎及...
第7 章和第8 章阐述了MySQL 性能相关的内容,如果去监控目前的性能状态,如果去调优以获得最佳的性能指标。在最后一章着重介绍了MySQL 的备份与恢复,这也是运维工程师和DBA 工作的重中之重。 MySQL 目前已经是各大...
, 本书分为三篇:, 准备篇(第1~2章),介绍了Spark的环境搭建、设计理念与基本架构,帮助读者了解一些背景知识。, 核心设计篇(第3~7章),着重讲解SparkContext的初始化、存储体系、任务提交与执行、计算引擎及...
如今,开发人员不断地开发和部署使用 LAMP(Linux?...但是,服务器管理员常常...本文是本系列文章的第三部分,也是最后一部分,将重点讨论为实现最高效率而对数据库层进行的调 优。有3种方法可以加快MySQL服务器的运行速度
本书主要分为4个部分,第1部分为基础篇,介绍了Nginx服务器的安装与配置方法;第2部分为进阶篇,重点介绍了Nginx的配置优化方法、Nginx与PHP/Ruby/Python/JSP/Perl/Memcached的结合配置方法、Nginx HTTP反向代理与...
5、负责大数据平台内部所涉及到的各类数据库、数据存储的搭建、备份、日常维护、性能调优;以及大数据平台系统运维、监控和故障分析与处理。 任职要求: 1、本科及以上学历,计算机相关专业,3年以上相关工作经验;...
服务器运维工程师的主要职责全文共4页,当前为第1页。服务器运维工程师的主要职责全文共4页... 5 职责: 游戏服务器的部署,更新和维护 游戏服务器的性能调优 后台数据统计分析 GM工具开发和维护 任职要求: 一年以上l