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

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

阅读更多

操作系统的剖析

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

 

这部分的操作系统主要是类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
分享到:
评论

相关推荐

    彭渊-如何突破腾讯大数据分析架构瓶颈-发布版.pdf

    综上所述,《彭渊-如何突破腾讯大数据分析架构瓶颈》一文不仅从理论层面对大数据分析架构进行了深入剖析,还提供了大量实用的技术解决方案和实践经验,对于正在面临类似挑战的企业来说,具有极高的参考价值。

    Linux系统瓶颈分析

    ### Linux系统瓶颈分析 #### 一、性能监控与优化概览 在Linux系统环境中,性能优化是一项关键的任务,它能够确保系统的稳定运行和高效利用。性能优化的核心在于识别并解决所谓的“瓶颈”,即那些限制系统整体性能...

    如何打破薪资瓶颈-50W年薪运维岗位技能剖析

    这包括对Linux操作系统有深入的理解,熟悉常见发行版如CentOS、Ubuntu等的管理;熟练使用Shell脚本进行自动化操作;掌握网络基础知识,如TCP/IP协议、DNS解析、负载均衡等;以及对数据库管理有一定了解,如MySQL、...

    性能测试-瓶颈分析方法

    它不仅能够帮助我们了解系统在特定负载下的行为表现,还能通过细致入微的数据分析找出系统存在的瓶颈,进而进行优化。本文将详细介绍在性能测试结果分析阶段如何有效地定位系统的瓶颈所在,特别适用于初中级性能测试...

    N-Step-SCAN-磁盘调度-操作系统课程设计.doc

    N-Step-SCAN 磁盘调度算法在操作系统中的应用详解 N-Step-SCAN 磁盘调度算法是一种高效的磁盘调度算法,它可以有效地解决磁盘 I/O 操作中的瓶颈问题。本文将对 N-Step-SCAN 磁盘调度算法的原理、数据结构和实现技术...

    性能测试--瓶颈分析方法.doc

    ### 性能测试中的瓶颈分析方法 #### 一、内存分析方法 内存分析主要用于判断系统是否存在内存瓶颈,并确定是否需要通过增加内存等手段来提升系统的性能。内存分析主要依赖于以下几种性能计数器: 1. **Memory ...

    行业文档-设计装置-操作系统OS中应急事件的数据采集方法和装置.zip

    总结来说,操作系统OS中应急事件的数据采集是一个综合性的技术领域,涵盖了日志分析、性能监控、异常检测等多个方面。理解和掌握这些知识,对于提升系统的稳定性和安全性,以及进行有效的故障排查和安全审计具有重要...

    loadrunner-linux测试性能瓶颈分析

    对于大多数系统管理员而言,优化往往涉及到对操作系统(OS)各子系统的调整,主要包括CPU、Memory、IO、Network四大核心部分。 #### 二、性能监控的重要性 性能监控是确保系统稳定性和响应性的关键环节。通过持续...

    服务器性能瓶颈分析方法.pdf

    ### 服务器性能瓶颈分析方法详解 #### 一、引言 服务器性能的高效稳定是确保业务顺畅的关键。...在实际操作过程中,需要注意不同操作系统下指标名称的差异,并综合考虑多个相关指标,以确保分析结果的准确性。

    RustChinaConf2020-02.陈渝-《基于Rust语言的操作系统内核》.pdf

    基于Rust语言的操作系统内核是操作系统发展的新方向,基于Rust语言的操作系统内核可以解决当前操作系统的一些问题,如性能瓶颈、安全漏洞等。研究人员正在探索基于Rust语言的操作系统内核的可能性和可行性。

    Radware-AppDirector系统维护.pdf

    监控设备CPU使用情况有助于发现潜在的性能瓶颈。操作步骤如下: - 进入 `Monitor > CPU Usage`。 - 观察CPU使用率是否过高。 - **检查内存使用情况** 内存是影响设备性能的关键因素之一。操作步骤如下: - ...

    找出系统性能的瓶颈:企业级系统性能分析实践

    - 描述环境(软硬件条件):包括服务器配置、操作系统版本、数据库类型等。 - 描述业务:包括业务流程、业务逻辑、业务规则等。 - 描述性能指标:例如响应时间、吞吐量、并发用户数等。 - 描述数据:包括测试...

    Linux实时性能瓶颈分析.pdf

    《Linux实时性能瓶颈分析》这篇文章主要探讨了Linux操作系统在实时性能方面的问题,以及与RT-Linux和VxWorks两款硬实时操作系统的对比。在实时系统中,任务调度、信号量和消息队列的效率对系统性能有着重大影响。 ...

    HPUX操作系统性能分析指南.doc

    ### HPUX操作系统性能分析指南 #### 1. 前言 ##### 1.1 编写目的 本文档旨在为用户提供一个全面且实用的HP-UX操作系统性能分析指南。通过对系统的性能进行定期监测与分析,可以帮助用户及时发现并解决潜在的性能...

    张浩HP-UX操作系统巡检手册

    ### HP-UX操作系统巡检手册知识点详解 #### 一、概述 HP-UX(Hewlett-Packard Unix)是惠普公司开发的一款基于UNIX的操作系统,广泛应用于企业级服务器环境中。《张浩HP-UX操作系统巡检手册》旨在为操作系统维护...

Global site tag (gtag.js) - Google Analytics