`
风雪涟漪
  • 浏览: 497396 次
  • 性别: Icon_minigender_1
  • 来自: 大连->北京
博客专栏
952ab666-b589-3ca9-8be6-3772bb8d36d4
搜索引擎基础(Search...
浏览量:8778
Ae468720-c1b2-3218-bad0-65e2f3d5477e
SEO策略
浏览量:17714
社区版块
存档分类
最新评论

发现瓶颈 - 操作系统的剖析

阅读更多

操作系统的剖析

查看操作系统统计信息是非常有用的,这样可以发现操作系统和硬件的工作情况。它不仅仅能帮助剖析整个应用,也可以帮助解决修复一些问题。

 

这部分的操作系统主要是类UNIX的系统,因为大部分服务器都是用它们。然而,你也可以使用其中的一些技术用于其他的操作系统,只要它们都提供信息就行。

 

我们经常使用的工具是vmstat,iostat,mpstat以及strace.这些工具在结合进程,CPU,内存以及I/O活动上,有着稍微不同的角度。这些工具对于类UNIX系统都基本可用。我们将教你使用这些工具,贯穿于本教程。

 

 

解决MySQL连接和进程的疑难杂症

 

有一组工具是用来发现网络活动以及解决基本的问题(先不讨论它们其他的细节)。一个例子,我们教你怎样跟踪一个MySQL的连接从另一个服务器返回到起点服务器。

 

先从MySQL的SHOW PROCESSLIST开始,要注意的是一个进程的HOST列。我们使用如下的例子:

 

*************************** 21. row ***************************

Id: 91296

User: web

Host: sargon.cluster3:37636

db: main

Command: Sleep

Time: 10

State:

Info: NULL

 

HOST这列显示了连接的起源,重要的是TCP的端口。你可以从这些信息得知哪个进程开放了连接。如果你有root访问sargon权限,你可以用netstat以及端口号找到哪个进程开放了连接。

 

 

root@sargon# netstat -ntp | grep :37636

tcp 0 0 192.168.0.12:37636 192.168.0.21:3306 ESTABLISHED 16072/apache2

 

最后两个字段是进程号和进程名称:这个例子中进程号为16072的进程开放了链接,它是来自APACHE的。一旦你知道了进程号16072,你能知道关于这进程的许多信息。比如其他的网络连接到了这个进程:

 

 

root@sargon# netstat -ntp | grep 16072/apache2

tcp 0 0 192.168.0.12:37636 192.168.0.21:3306 ESTABLISHED 16072/apache2

tcp 0 0 192.168.0.12:37635 192.168.0.21:3306 ESTABLISHED 16072/apache2

tcp 0 0 192.168.0.12:57917 192.168.0.3:389 ESTABLISHED 16072/apache2

 

看起来有apache工作进程有两个MySQL连接开放,以及还有一个其他的连接。什么是389端口。不能确定,有许多应用程序都用到了这个端口。比如MySQL的默认端口就是3306。在/etc/services有个列表,让我们看看:

 

 

root@sargon# grep 389 /etc/services

ldap 389/tcp # Lightweight Directory Access Protocol

ldap 389/udp

 

我们发现这个服务器使用了LDAP认证。因此LDAP才有意义。让我们再看看还能找到进程16702其他的信息。可以使用PS很容易查看进程正在做什么。命令如下:

 

root@sargon# ps -eaf | grep 'UID\|16072'

UID PID PPID C STIME TTY TIME CMD

apache 16072 22165 0 09:20 ? 00:00:00 /usr/sbin/apache2 -D DEFAULT_VHOST...

 

你可以用潜在的信息找出其他的问题。不要惊讶,比如,对于APACHE要找出一个LDAP或者NFS服务所引起的问题以及显示页面生成时间(page-generation)。

 

你也能用lsof命令查看那些线程打开的文件。这是对于查找所有信息排序是非常有用的,因为在Unix中所有的都是文件。我们不会把输出在这全部显示,因为信息量太大,但是你可以lsof|grep 16072找到这个进程所打开文件。当netstat不好用的时候,你也可以使用lsof找出网络连接。比如,如下的lsof命令显示的信息和netstat信息一样。我们把信息重写排下格式:

 

root@sargon# lsof -i -P | grep 16072

apache2 16072 apache 3u IPv4 25899404 TCP *:80 (LISTEN)

apache2 16072 apache 15u IPv4 33841089 TCP sargon.cluster3:37636->

hammurabi.cluster3:3306 (ESTABLISHED)

apache2 16072 apache 27u IPv4 33818434 TCP sargon.cluster3:57917->

romulus.cluster3:389 (ESTABLISHED)

apache2 16072 apache 29u IPv4 33841087 TCP sargon.cluster3:37635->

hammurabi.cluster3:3306 (ESTABLISHED)

 

在GNU/Linux,/proc能提供其他未知错误解决方法的帮助。每个进程在/proc下都有自己的目录。你可以查看到很多信息,比如当前工作的目录,内存的使用以及等等。

 

Apache有类似PS命令的功能:/server-status/ URL.举个例子,如果你内网运行APACHE在http://intranet/.你可以查看http://intranet/server-status/查看APACHE的情况。这个功能能帮助你查看这个进程提供了什么URL。这个页面有个图例来解释这些输出。

 

 

高级的剖析和解决问题

如果你需要更深层次的分析进程。一个例子,为什么它在不间断休眠状态-你可以使用trace -p 和/或者 gdb -p.这些命令可以显示系统调用以及回溯(backtraces)。当进程停住的时候也可以用它查看更多的信息。许多原因都可以导致进程停住,比如NFS锁住了服务而崩溃了,一个web远程调用没有相应,等等。

 

你也可以剖析系统或者系统的一部分的更多细节,以查看系统的工作情况。如果你需要更高的性能和已经出现了问题,你甚至可能要剖析MySQL内部。虽然这可能不是你的工作(这是MySQL开发人员的工作?),但是它能帮助你避免由系统引起的问题。你可能不想解决它,但是至少你设计应用的时候避免一些弱点。

 

下面的一些工具可能用的到:

OProfile

OProfile (http://oprofile.sourceforge.net)是个对于Linux的系统剖析工具。它包括了一个内核的驱动以及一个后台程序用于收集示例数据,以及许多工具帮你分析剖析的数据。它剖析了所有的数据,包括了中断的操作,内核,内核模块,应用,以及共享库。如果使用了DEBUG元件编译了一个应用,OProfile能注释代码,但是这不是必须的。你可以使用OProfile而不必重新编译。它相对来说是低消耗的,通常的范围为几个百分点。

 

gprof

gprof是个GNU的剖析器,你可以生成一个可执行的用-pg参数编译的程序的剖析。它能计算每次例行程序花费的总时间。gprof也能提供生成如下信息的报表,调用函数的次数和执行时间,一个调用的图形,注释源码的列表。

 

其他工具

还有许多其他的工具,包括了特殊的和专用的应用。这些包括了Intel VTune,Sun Performance Analyzer,DTrace以及其他系统。

 

 

1
0
分享到:
评论

相关推荐

    性能需求分析案例

    服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)-〉服务器操作系统瓶颈(参数配置)-〉中间件瓶颈(参数配置,数据库,web服务器等)-〉应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等) 注:以上过程并...

    性能测试分析方法详解

    服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)-〉服务器操作系统瓶颈(参数配置)-〉中间件瓶颈(参数配置,数据库,web服务器等)-〉应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等) 注:以上过程并不是...

    操作系统入门与实践-参透技术本质完结9章

    我将从以下三方面深度剖析操作系统入门理论与实战要点: 1、深刻理解计算机—掌握优秀编码能力 理解操作系统可以深刻理解自己所写的程序会对计算机系统产生的影响,有助于编写出正确的、质量更高的程序,同时可以...

    Linux实时性能瓶颈分析.pdf

    Linux实时性能瓶颈分析.pdf

    软件测试中性能测试-系统调整的步骤

    l操作系统配置-操作系统参数配置。硬件设置-磁盘速度,内存大小(分析重点)。网络-检查网络负载是否导致网络冲突和 软件测试中性能测试-系统调整的步骤确认问题应用程序代码-针对瓶颈的模块,首先检查代码。...

    软件测试中性能测试结果分析

    服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)-〉服务器操作系统瓶颈(参数配置)- 软件测试中性能测试结果分析 软件测试 分析原则: 具体问题具体分析(这是由于不同的应用系统,不同的测试目的,不同的性能...

    性能测试结果分析的几点原则

    服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)-〉服务器操作系统瓶颈(参数配置)-〉中间件瓶颈(性能测试结果的分析原则:具体问题具体分析(这是由于不同的应用系统,不同的测试目的,不同的性能关注点)...

    性能测试诊断分析与优化

    第3篇是性能问题诊断分析篇,主要介绍如何分析、定位性能瓶颈,涵盖Web服务器、应用服务器、数据库、应用代码、操作系统等层面的诊断分析。 《性能测试诊断分析与优化》结合主流性能测试工具LoadRunner,讲解性能...

    系统瓶颈分析举例

    系统瓶颈分析举例软件测试经验举例1交易的响应时间如果很长,远远超过系统性能需求,表示耗费CPU的数据库操作,例如排序,执行aggregatefunctions(例如sum、min、max、count)等较多,可考虑是否有索引以及索引建立的...

    人工智能-项目实践-信息管理系统-舆情信息管理系统

    舆情信息管理系统 内置功能 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 部门管理:配置系统组织机构(公司、部门、...连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。

    常用的软件测试工具,不妨试一下WinRunner-----功能:1.插入检查点;2.检验数据;3.增强测试;4.分析结果;5.维护测试;6.为无线应用作准备。

    Rational Quantify(性能检测工具,查出系统瓶颈以便改进运行速度); Rational TestManager (测试管理); Robot (软件测试用,通过Script自动模拟输入输出); LoadTest (负载测试); TestFactory (软件测试...

    软件性能测试分析

    软件性能测试分析性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对...服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)-〉服务器操作系统瓶颈(参数配置)-〉中间件瓶颈(参数配置,数据库,w

    朋科PECU-ERP企业资源管理系统 v14051701.zip

    而且不需安装任何服务(SERVER)操作系统,只需普通的XP家庭版操作系统即可,成本非常低廉。在互联网环境上,通过借助远程接入技术可实现外网高效、安全访问内网的ERP数据,使您无论身处何处,仍能随时随地操作您的ERP...

    论文研究-透明计算中用户访问行为特征分析与预测.pdf

    在透明计算中,服务端存储并管理着所有用户所需的操作系统、应用软件和个性化数据,并高效处理来自透明网络的用户资源请求服务。因此,服务端是透明计算系统性能的瓶颈。为制定更高效的缓存策略提供有效的依据,基于...

    Linux系统的性能测试与性能分析

     性能测试(包括分析和调优)的过程是在操作系统的各个子系统之间取得平衡的过程。  操作系统的各个子系统包括:  CPU  Memory  IO  Network  他们之间高度依赖,互相影响。比如:  1. 频繁的...

    Nmon+nmon_analyser

    nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,相对于其它一些系统资源监控工具来说,nmon所记录的信息是比较全面的,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文件...

    google-perftools 源码 (一款针对 C/C++ 程序的性能分析工具)

    google-perftools 简介 google-perftools 是一款针对 C/C++ 程序的性能分析工具,它...本文介绍了一个 Linux 平台上的性能剖析工具 google-perftools,并结合实例向读者展示了如何使用该工具配置、使用及分析性能瓶颈。

    Linux性能优化大师.pdf

    本书首先对 Linux 操作系统进行了深入剖析,并对最常用的企业监控工具Benchmark 及其他监控工具进行了详细的介绍,此外分析了系统中识别和分析瓶颈的过程,最后阐述如何使用性能衡量工具,以及如何对系统4 大子系统...

Global site tag (gtag.js) - Google Analytics