刚好项目快要上线,怎么查找系统的瓶颈?性能问题比崩溃这类问题来得复杂得多,作为以后查找问题的一个摘要,好好梳理一下。我们的系统一般都是bs系统,就以bs系统为例子。
客户反映慢,第一反应先检查网络,以前还真遇到网络原因造成某个客户慢的情况,先找个机器连接上去,检查一下网络状况。ping一下服务器。
接着检查一下,是否为系统的瓶颈。
系统的瓶颈主要是cpu、内存、io等。下面以linux系统为例。
1、首先检查是否为cpu瓶颈
采用vmstat 1查看一下cpu和内存使用情况,注意里面的运行队列项r项,如果r项经常超过机器的cpu数,则要考虑关注是否是cpu瓶颈。si、so项经常不为0,则意味着系统大量使用swap,则要考虑内存瓶颈了。
接着采用mpstat -P ALL,检查各个CPU的%usr、%sys使用率,看是核心态还是用户态的使用率高。是单个CPU使用率高,还是都高,如果一个CPU使用率高,而其他的CPU使用率低,则有可能这个CPU是瓶颈。
如果初步断定为cpu瓶颈,则要找出引起瓶颈的程序,重点想办法优化,可以使用top、ps、pidstat等找出最耗cpu的进程,查找最耗cpu的线程ps Hh -eo pid,tid,pcpu | sort -nk3 | tail,可以用pstack大概分析一下进程在干什么,再进一步用perf、oprofiler工具进行采样跟踪,如果有源代码,perf将是一把性能分析的屠龙宝刀。
2、如果内存和cpu使用不多,系统表现慢,则需要进一步考虑其他原因了,可能是竞态条件争用、io、网络等原因。像我们的服务器一般来说,上面的跑的应用就是我们的程序,可以用latencytop检查一下程序延迟的原因。
从latencytop输出可以大概分析一下主要延迟在何处。
3、磁盘和网络方面。
iostat 1检查一下磁盘使用程度,iostat -x检查磁盘的读写队列的长度,systemtap中的disktop.stp和iotop.stp、nettop.stp这几个东西也比较有用,可以让你很快找出耗磁盘和网络设备的最多的程序。
netstat -s也可以检查网络的繁忙状态、网络丢包统计等。磁盘的优化手段主要有顺序读写和随机读写分开不同的物理盘,读写热点分开不同物理盘,磁盘条带化等。
4、如果是竞态条件引起系统等待,或者系统上下文切换过多。在一般的应用系统上,很多是因为连接数据处理不过来导致,如果能知道程序现在在做什么,对分析就很有帮助了,此时strace、gdb、perf就很有帮助了,如果是java,也可以采用java dump,像jstack、jmap等重点是找出引起系统忙和等待的代码,这需要经验和具体分析了。java的profiler也是个很好的选择。
系统调优,不同的子系统有不同的工具分析,懂得越多,分析问题的思路越广,问题定位就越准确。下面的针对不同的子系统的不同工具。
调优是一个很有技术含量的活,佩服充分利用硬件的每一点资源的技术人员,吾等用着让硬盘灯狂闪、内存狂飙的工具干活,越来越沦为码奴了。
相关推荐
微信小程序的渲染性能调优涉及到页面架构设计和性能优化的多个方面。首先,微信小程序采用的是一种页面双线程模型的架构,这种模型与传统的H5应用有所不同。在这种模型下,小程序的渲染层使用WebView进行渲染,而...
### Hive工作调优小结 #### 一、Map阶段的优化(Map Phase) 在Hive中,Map任务的数量直接影响到整个Hive作业的性能。Map任务的数量由以下公式计算得出: \[ \text{num_Map_tasks} = \max[\text{Mapred.min.split...
1.4 小结 第2章 MySQL架构组成 2.0 引言 2.1 MySQL物理文件组成 2.2 MySQL Server系统架构 2.3 MySQL 自带工具使用介绍 2.4 小结 第3章 MySQL存储引擎简介 3.0 引言 ...
2.6 小结 70 第二部分 故障诊断与性能优化篇 第3章 故障诊断 72 3.1 影响mysql性能的因素 72 3.2 系统性能评估标准 73 3.2.1 影响linux服务器性能的因素 73 3.2.2 系统性能评估指标 74 3.2.3 开源监控和评估...
MySQL性能调优是数据库管理员和开发人员关注的重要领域,尤其是对于大规模Web应用和高并发场景。以下是关于MySQL性能调优15个重要变量的详细解释: 1. **DEFAULT_STORAGE_ENGINE**: MySQL中的默认存储引擎影响...
以MySQL数据库的基础及维护为切入点,重点介绍了MySQL数据库应用系统的性能调优,以及高可用可扩展的架构设计。 ●基础篇介绍了MySQL软件的基础知识、架构组成、存储引擎、安全管理及基本的备份恢复知识 ●性能优化...
本测试报告详尽地介绍了性能测试的策略、测试计划以及性能调优的过程,旨在确保系统的稳定性和效率。 1. 测试目标 测试目标通常包括评估系统在预期负载下的响应时间、吞吐量、并发用户数以及系统资源(如CPU、内存...
Spark性能优化是一个重要的主题,尤其是在大数据处理领域,它直接影响到应用程序的运行速度和资源利用率。以下是一些关于Spark性能优化的关键点...在实际应用中,还需要结合具体业务需求和资源限制,进行针对性的调优。
视频目录 第1节说在前面的话 [免费观看] 00:05:07分钟 | 第2节整个部分要讲的内容说明 [免费观看] 00:06:58分钟 | 第3节环境搭建以及jdk,...第104节字节码执行引擎小结00:03:38分钟 | 第105节总结与回顾00:10:55分钟
第1章 性能调优策略概述 1.1 为什么需要调优 1.2 性能优化的参考因素 1.3 性能调优分类方法 1.4 本章小结 第2章 优化前的准备知识 2.1 服务器知识 2.2 新兴技术 第3章 Java API调用优化建议 3.1 面向对象及...
#### 四、小结 性能监测是Linux系统管理中不可或缺的一部分。通过合理使用上述提到的工具,不仅可以帮助我们更好地理解系统资源的使用情况,还可以有效地定位和解决性能问题,确保系统的高效稳定运行。希望本文档...
SQL Server 2016查询存储性能优化小结聚焦于SQL Server 2016引入的一个重要特性——查询存储(Query Store),这是一个用于诊断和管理查询执行计划的工具,特别适用于识别和解决性能问题,尤其是计划回归。...
#### 小结 性能调优是一个复杂且持续的过程,涉及多个层面和技术领域。通过综合分析并针对性地优化各关键环节,可以显著提升系统的整体性能。在实际操作中,建议结合具体应用场景和业务需求,采取科学合理的调优策略...
### Oracle性能优化建议小结 在Oracle数据库管理与性能调优的过程中,理解并掌握一系列的优化技巧至关重要。本文将从给定的文件标题、描述、标签以及部分内容中提炼出的关键点进行深入解析,旨在帮助数据库管理员及...
6.6.1 性能调优原理 6.6.2 前端性能分析 6.6.3 后端性能分析 6.7 性能测试报告 6.7.1 平台对比性能测试报告 6.7.2 Phpwind85性能分析报告 6.7.3 DiscuzX2 VS Phpwind85性能对比报告 6.7.4 Phpwind85验收指标性能测试...
书中也对性能测试的应用领域进行了分析,指出了性能测试在能力验证、规划能力、性能调优、发现缺陷等方面的重要作用,并总结了性能测试的最终目标。 在性能计数器及性能分析方法这一章节中,作者详细讨论了操作系统...
6.6.1 性能调优原理 6.6.2 前端性能分析 6.6.3 后端性能分析 6.7 性能测试报告 6.7.1 平台对比性能测试报告 6.7.2 Phpwind85性能分析报告 6.7.3 DiscuzX2 VS Phpwind85性能对比报告 6.7.4 Phpwind85验收指标性能测试...
6.6.1 性能调优原理 6.6.2 前端性能分析 6.6.3 后端性能分析 6.7 性能测试报告 6.7.1 平台对比性能测试报告 6.7.2 Phpwind85性能分析报告 6.7.3 DiscuzX2 VS Phpwind85性能对比报告 6.7.4 Phpwind85验收指标性能测试...