最近在做的项目进入到了测试阶段,首先本地测试性能水平还可以,于是很乐观的提交了alpha测试,但是很快测试人员反馈性能测试未过。从应用服务器所在硬件环境来说,两者都是差不多的性能,而且分别都是连接到独立mysql数据库。凭什么有如此测试结果呢?
从现象来看,排除本身业务逻辑算法的问题外,影响性能指标的因素不外乎数据库或大文件的I/O操作,CPU计算,网络传输耗时等三大关键点。首先CPU负载被排除在外,因为是后台应用服务,请求压力并不是很大,CPU资源非常充足。其次网络传输也被排除,因为站点本身的业务逻辑比较独立,并不需要访问外部的系统,所以最后的嫌疑就是I/O操作了,就是数据库的I/O操作。
分析到此之后,立马联系DBA分析原因,得知在alpha环境下使用的数据库服务器物理内存总共16G,启动了三个数据库实例,每个实例划分了4G的内存用作页面缓存,对于我开发的应用程序使用的数据库实例分到了4G的内存,但是由于这个数据库实例管理的是主库,数据量特别大,远远超过了分配的内存,而且由于有许多应用服务访问与我相同的主库,导致热点数据很分散,频繁的进行页面交换,不利于进行热点数据的缓存。
那现在回过头来看我们的本地环境链接的数据库为什么会没有这种情况呢,原来本地数据库环境内存虽然比alpha环境小,并且使用的实例却只有一个,当时测试的时间段,来自其他应用的请求也比较小,所以对于我们团队开发的应用所涉及到的热点数据能够很好的缓存起来,在大量的预热测试之后,数据可以直接从内存中访问,而节省了耗时的磁盘I/O操作。
根本原因大致如此。
在寻求答案过程,渐渐的发现,系统调优的工作其实就是一门如何在有关系统性能指标之间的达到平衡的艺术。
系统指标一般来讲CPU占用率,内存使用率,磁盘IO, 网络IO。
而评价系统性能一般可从两个数据:响应时间和吞吐量。
如果需要对系统调优的话,我一般会从三个维度来看:
第一种是横向维度,说白了就是增加服务器,分流请求使流量平衡,目的就是将把平衡机器站点的四大系统指标。
第二种是纵向维度,使内部系统在CPU,网络传输,I/O负载等指标找到平衡点,一个软件系统性能不佳,往往就是没有处理好这个四大指标之间的关系,对于CPU来说,显而易见的就是设置线程数量,多少是合适的,这个又取决于IO的时间和内核数,那最快捷的手法就是把将可能多的数据放到内存里去做计算,那么就需要在IO和内存之间寻找的一个好的平衡点。
第三种是时间维度,这个维度特别容易被忽略,因为往往出问题并不是出现白天哪几个高访问量的时刻,而是在半夜三更没有多少访问量的时间,因为许多团队或者项目习惯性将一些繁重的统计作业或者同步工作放在那几个点, 磁盘IO和CPU消耗特别大,而一旦有一些访问的请求,就经常都会遇到奇奇怪怪的问题。
平衡并不是对半开,不是1:1的问题,那是系统达到最佳状态的一个点,在平衡的过程中,更像能量守恒定律,在某一块指标降了,必然在另外一个地方涨了。
相关推荐
### Unix编程艺术 #### 一、Unix哲学与...通过以上内容的学习,我们可以深刻理解Unix编程艺术的核心理念以及其实现方式。无论是对于新手还是有经验的程序员来说,《Unix编程艺术》都是一门值得深入研究的重要课题。
Swan经过了一个非常漫长的beta期(其实是VAL没空更新),现在大家终于能用上正式版了。这个版本并没有加入新功能,是对beta版本功能的完善以及程序结构的调整。其中也精简了部分功能,比如SwanId等等。 Change ...
数字信号处理技术允许对音频信号进行复杂的运算,包括均衡、压缩、延时、混响等,以优化音频系统的性能。4路和8路的区分主要在于输入和输出通道的数量,适应不同规模和复杂度的音响系统需求。4路适用于小型到中型...
在实际应用中,RIFE的优势在于其实时性能和高质量的插值结果。它可以在高分辨率视频(如720p和1080p)上以实时速度运行,对于播放高帧率视频、为计算资源有限的用户提供视频编辑服务等场景具有巨大潜力。相比于现有...
### PID控制口诀详解 PID控制,作为自动化领域不可或缺的一部分,其原理...记住,PID控制的关键在于“平衡”,只有在不断的调试与优化中,才能找到最适合特定应用场景的参数组合,实现精准控制,提升整体效率与性能。
一个显著的优势是其实时预览功能,这使得艺术家能够在编辑过程中快速看到结果,提高了工作效率。此外,Plexus还具有强大的交互性,允许用户在场景中直接选择和操作粒子,进行实时调整。 **3. 图形生成器:** Plexus...
1. **性能提升**:通过改进算法和优化内存管理,2.5F版本在渲染速度和稳定性上都有所提升,减少了处理大型场景时的卡顿问题。 2. **用户界面改进**:更新后的用户界面更加友好,使得参数调整更为直观,降低了学习...
### MySQL必知必会常识技巧实战宝典 #### 1. 数字类型:避免自增踩坑 ...以上内容详细介绍了MySQL在实际应用中的一些常见技巧和注意事项,旨在帮助开发者更好地理解和运用MySQL,从而提高数据库系统的性能和稳定性。
在IT行业中,虽然装修材料可能看似与技术关联不大,但它们其实涉及到了技术和工程的交叉领域,特别是当我们在讨论智能化建筑、智能家居系统或是酒店管理系统的集成时。复式客厅、KTV和酒店的装修材料选择对于环境的...
- **性能与功能的选择**:在软件架构设计中,架构师需要决定是在性能优化、安全性提升还是新功能开发上投入更多资源。 - **优先级排序与调整**:在日常工作中,架构师需要不断评估项目的需求,确定哪些任务更为关键...
9. **系统需求**:KeyShot 9对硬件有一定要求,通常需要高性能的GPU和足够的RAM来实现流畅的实时渲染。具体配置应参考官方系统需求指南。 10. **学习资源**:KeyShot提供了丰富的在线教程、视频指南和社区支持,...
这份文档对于理解如何将IT技术应用于包装设计,提升产品保护性能,以及优化供应链管理具有重要的参考价值。 总的来说,虽然这个主题看似远离了传统的IT领域,但其实它展示了信息技术如何渗透到各个行业中,创新和...
在IT行业中,尽管“书画装裱用粘结剂的剥离强度的测试方法”看似与传统艺术工艺相关,但其实这个话题也与计算机辅助设计(CAD)、自动化测试、数据分析以及物联网(IoT)设备等技术应用有所交集。下面将详细讨论这个...
合理的缓冲区设计有助于优化数据流管理,减少CPU负载,并提高整体系统性能。缓冲区的大小和管理机制对于确保连续、无失真的音频处理至关重要。 #### 四、结论 基于LabVIEW的声卡数据采集系统的开发不仅展示了声卡...
在RF电路板设计中,降低信号耦合是提高系统性能和稳定性的关键。首先,需要考虑的是将高功率RF放大器(HPA)与低噪声放大器(LNA)隔离。理想情况下,高功率发射部分应远离低功率接收部分,以减少干扰。然而,在空间...
分形理论在计算机图形学中的应用是一个广泛的领域,它利用分形几何的特性来创建、渲染和处理图像,尤其在模拟自然现象、提高图像真实感和优化计算效率方面展现出巨大潜力。分形理论是由数学家Benoit Mandelbrot提出...
主要是介绍各种格式流行的软件设计模式,对于程序员的进一步提升起推进作用,有时间可以随便翻翻~~ 23种设计模式汇集 如果你还不了解设计模式是什么的话? 那就先看设计模式引言 ! 学习 GoF 设计模式的重要性 ...
- **核心价值**:对于希望提高C++编程水平的专业人士来说,这两本书是不可或缺的资源,它们有助于优化代码结构,减少错误,提高性能。 以上书籍不仅涵盖了编程语言本身的知识,还涉及到了软件工程、算法、设计模式...
通过深入学习以上知识点,并结合实际项目如LineVisualizer进行实践,可以进一步提高Python编程技能,也许你会发现那些看似“不值得回购”的脚本其实拥有巨大的潜力和价值。无论是个人学习还是团队合作,Python和它的...
这种基于文本的交互方式,虽然看似简单,但其实非常直观,尤其适合那些熟悉Linux或者Unix系统的用户。用户可以通过简单的键盘输入来执行各种操作,大大提高了工作效率。 moll不仅限于gdbm,它还兼容Berkeley DB,这...