理解Linux操作系统——分析性能瓶颈

标签: 理解 linux 操作系统 | 发表时间:2015-04-29 08:00 | 作者:
出处:http://blogkun.com

学习自《Linux性能分析》

识别瓶颈


快速调优策略:

  1. 认识你的系统。
  2. 备份系统。
  3. 监控和分析系统性能。
  4. 缩小瓶颈范围,找到根源。
  5. 通过每次只修改一个地方来解决瓶颈问题。
  6. 回到第3步直到对系统的性能满意为止。

应该记录下调优的操作,特别是对性能有影响的操作。

收集信息


通常,你能得到的第一手信息就是关于问题的描述。对问题进行探索性地提问和记录是非常重要的。这里有一些问题有助于你对系统有一个更好的了解:

  • 服务器系统类型、版本、配置是什么?
  • 问题的症状,给出了哪些错误信息,日志记录?
  • 谁遇到了这个问题?
  • 问题是否能被重现?重现的步骤、定期出现还是不定期
  • 之前对系统做了哪些更改可能导致问题的发生?
  • 问题的紧急程度如何,需要何时解决?

分析系统性能


如果是应用程序本身的问题:

  • 自己开发的?debug吧
  • 开源软件?看是否配置不正确、需要升级,或提issue
  • 商业软件?看是否配置不正确、需要升级,或找售后服务

如果是系统本身或硬件问题:

CPU瓶颈

查找瓶颈

  • uptime 查看负载。
  • top 查看CPU使用率,以及哪个进程占用高。
  • sar 需要安装sysstat,可查看系统一段时间内的运行情况。

通常以上命令的输出信息可以从运维平台获取到。

调优

  • 确保没有运行不需要的程序。 ps -ef,停止或将其改为定时任务,在非峰值时间运行。
  • 通过renice调整进程priority。
  • 绑定进程到CPU上。
  • 考虑纵向扩展CPU(适合单线程程序)还是横向扩展(适合多线程程序)。

内存瓶颈

Memory available

还有多少内存可以使用,执行 free -l -t -o查看。

Page faults

两种类型:soft page faults(在内存中找到page)和hard page faults(内存中找不到page,必须从磁盘中获取)。 执行 sar -B可查看页面交换情况。

File system cache

用于文件系统缓存的内存,执行 free -l -t -o查看。

Private memory for process

进程占用的内存,执行 pmap查看。

调优

  • 调优swap space。
  • 增加或减少页面大小。
  • 改善对active和inactive内存的处理。
  • 调整page-out rate。
  • 停止不需要的程序。
  • 增加内存。

磁盘瓶颈

查找瓶颈

如果服务器表现出如下症状,很可能是遇到磁盘瓶颈:

  • 低速磁盘可能会导致:

Memory buffers充满了write data(或waiting for read data),这将会使write request(或the response is waiting for read data in the disk queue)。 在内存不足的情况下,在没有足够的内存提供给network requests的情况下,会导致同步的磁盘I/O。

  • Disk utilization,controller utilization之一或都会非常高.
  • 在磁盘I/O完成之后,许多LAN传输才会发生,导致非常长的响应时间和较低的network utilization。
  • 磁盘I/O会花费许多时间,并且磁盘队列也会变得饱满,所以CPU将会空闲,或者较低的使用率。

磁盘访问是随机还是顺序?是large I/O还是small I/O?这些问题的答案有助于磁盘子系统的调优。

disk I/O

随机读写通常需要多块磁盘更好,例如大型数据库。

顺序读写通常需要关注磁盘子系统的bus bandwidth。

vmstat和iostat可用于查看磁盘I/O情况。

调优

  • 如果是随机读写,考虑加磁盘;如果是顺序读写,考虑增加更快的磁盘控制器。
  • 合理的使用RAID,以及选择文件系统。
  • 增加RAM。

网络瓶颈

  • Packets received、Packets sent:网络接口上的收发包
  • Collision packets:当一个域里有太多系统时会发生冲突。Hub的使用可能导致过多的冲突。
  • Dropped packets:被丢弃的包。
  • Errors:通信线路质量不好。
  • Faulty adapters:网络硬件出问题了。

调优

  • 确保网卡配置跟路由器、交换机配置吻合(例如frame size)。
  • 调整网络拓扑。
  • 使用更快的网卡。
  • 调整IPV4 TCP内核参数。

相关 [理解 linux 操作系统] 推荐:

理解Linux操作系统——分析性能瓶颈

- - 小火箭
通过每次只修改一个地方来解决瓶颈问题. 回到第3步直到对系统的性能满意为止. 应该记录下调优的操作,特别是对性能有影响的操作. 通常,你能得到的第一手信息就是关于问题的描述. 对问题进行探索性地提问和记录是非常重要的. 这里有一些问题有助于你对系统有一个更好的了解:. 服务器系统类型、版本、配置是什么.

基于Linux的新移动操作系统泰泽

- satan - Solidot
由Linux基金会主管、英特尔和三星支持的新移动/设备操作系统泰泽(Tizen)正式宣告成立. 泰泽是基于Linux的开源软件平台,可运行在智能手机、平板、上网本、车载信息系统和智能电视上. 它将由一个技术指导委员会管理,成员包括了英特尔和三星. 泰泽的应用程序接口是基于HTML5和其它web开放标准.

精品Linux操作系统学习宝典

- - Linux - 操作系统 - ITeye博客
为了方便大家的学习,我们特别整理了操作系统Linux相关精品资源>>>>. 1.Linux教程:教你从入门到精通. Linux是一类Unix计算机操作系统的统称. 本专题精选Linux经典命令、各种基础入门教程、经典学习教材、企业培训资料和有价值的电子书资料汇集,是自学幵提高Linux水平的必备资料,是Linux初学者的宝典.

Linux操作系统tcpdump抓包分析详解

- - CSDN博客互联网推荐文章
PS:tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具. tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具.

如何选择服务器操作系统(Linux/Unix)

- - 标点符
Linux的发行版有上百种,如何选择也是一种难题. 一、Ubuntu Desktop 和 Ubuntu Server. 这个是最方便,也是最快捷的方式. 如果刚开始使用Ubuntu,且不太熟悉命令行的可以选用Ubuntu Desktop来学习. 继而转为Ubuntu Server. 对于初学者,Ubuntu可以更好地上手,并且提供了很好提供了apt软件管理方式(这个是目前最好的软件管理方式),使用起来非常方便,同事Ubuntu的社区也非常的活跃,使用的人数也较多.

Linux 将成为 21 世纪汽车的主要操作系统

- - 开源中国社区最新新闻
当然了,没人会因为某个车载系统而去买辆车. 但是 Linux 已经为像丰田、日产、捷豹路虎这些大型汽车制造商提供了信息娱乐系统、平视显示以及其联网汽车的 4G 与 Wi-Fi 系统,而且 Linux 即将登陆福特汽车、马自达、三菱、斯巴鲁. 传统软件公司也进入了移动物联网领域. Movimento、甲骨文、高通、Texas Instruments、UIEvolution 和 VeriSilicon 都已经加入 Automotive Grade Linux(AGL)项目.

[来自异次元] CentOS 6.0 正式版下载 – 最受瞩目的免费企业级 Linux 服务器操作系统

- Mencius - 异次元软件世界
        如果说 Ubuntu 是现今最受桌面用户欢迎的 Linux 操作系统,那么 CentOS 就是最受公司、企业、IDC等喜爱的 Linux 发行版了. 得益于 CentOS 极为出色的稳定性,目前在全球范围内,无数著名的网站均选用它作为操作系统. 那个,异次元的服务器也正是使用它.         CentOS 是基于 Red Hat Enterprise Linux (收费昂贵但口碑极佳) 的源代码再编译出来的免费版,继承了 Red Hat 优越的稳定性,而且又提供免费更新,因此在服务器提供商、中小型公司中装机量几乎是最大的一个 Linux.

理解Linux系统负荷

- Adam - 阮一峰的网络日志
如果你的电脑很慢,你或许想查看一下,它的工作量是否太大了. 在Linux系统中,我们一般使用uptime命令查看(w命令和top命令也行). (另外,它们在苹果公司的Mac电脑上也适用. 你在终端窗口键入uptime,系统会返回一行信息. 这行信息的后半部分,显示"load average",它的意思是"系统的平均负荷",里面有三个数字,我们可以从中判断系统负荷是大还是小.