序言
本文所涉及的全国产环境特指服务器/客户机采用国产CPU处理系统(龙芯(MIPS)、飞腾(ARM)、申威(ALPHA))、操作系统和基础软件等全国产产品。
随着计算机科学与技术的快速发展,应用、数据和终端用户正在无限激增,企业需要实现端到端应用可视化、优化和控制,以缩小性能差距。
而在全国产环境下,国产CPU的性能相较于Intel/AMD有一定的距离,这就需要我们从软件层面对业务应用系统的性能进行优化,缩短系统的响应时间,提高系统稳定性,以保障业务应用系统正常运行,为用户带来良好的体验效果......接下来,笔者将详细讲述面对的问题和调优方法。
P1
高爆发用户量对应用系统的性能有哪些要求?
当我们打开某网页查看信息,多长时间显示出来我们能接受?
系统响应时间的准确度决定了用户对企业的依存度,一般情况下单个用户会按照点击响应时间1、3、5秒三个档次来要求应用系统,超过此数据值,则意味着用户会感觉有延迟,而对于并发用户方面的极限要求是支撑500并发用户,在无步长、无思考时间的情况下达到上述响应时间要求,同时不允许出现事务失败的情况。即使在硬件设备最低配的情况下,至少要满足100并发用户达到上述要求。
然而,要达到上述性能指标的要求在当前技术背景下是非常困难的,这就需要对业务应用系统的性能进行全面的优化提升。
P2
应用系统性能调优“双重奏”!
在应用操作过程中影响系统响应时间主要包含两方面:1、服务器端运算逻辑消耗时间过长;2、客户端浏览器获取HTML及各类资源文件网络传输和渲染生成页面所消耗的时间过长。我们从服务器端和客户端为大家列举以下常见问题和优化方法:
服务器端:缩短数据库访问时间
在一般的B/S应用中,服务器主要负责呈现和处理各类数据逻辑,其中事务操作主要是依托数据库来完成,由于应用访问数据库在操作中占据了绝大部分时间,导致服务器端的运算逻辑耗时增大,所以缩短数据库访问时间是重中之重。
目前,我们一般采用Java作为主要的应用开发技术路线,因此可使用性能分析工具JProfiler在开发环境中压测(Jmeter)来对业务应用性能瓶颈进行跟踪分析。首先梳理出导致系统耗时多的SQL语句,然后对SQL语句本身进行分析,如下:
01
减少低效且高频访问的SQL语句
这是应用优化中最常见的问题,一个低效且频繁重复使用的SQL语句有可能拖垮整个应用系统,造成数据库资源被长时间占用而得不到释放,许多out of memory现象通常都是此类SQL语句造成。此情况可利用SQL优化工具或结合经验对SQL进行重写,并更新应用代码。
02
减少重复执行结果集无变化的SQL语句
在应用系统中,有大量基本无变化的基础数据被频繁的重复访问,如果在高并发情况下这类重复访问会不断的占用数据库系统资源加重数据库的负担。此状态下可以利用缓存技术,将一次执行后的结果集缓存到Cache中,下一次执行时从Cache中直接取出来提高性能。
当然除以上方法外,还可以优化一些数据库的相关配置参数,但从实际效果来看,只要经过以上优化过程,再进行压测并使用JProfiler进行性能分析,找到新的瓶颈点再次优化,循环操作直至无明显的瓶颈点,系统性能就可以得到数量级的提升。通过上述方法,笔者曾经将一个业务应用从300并发访问操作的响应时间从30秒优化到2秒左右,响应时间缩短了15倍!
客户端:减少网络传输开销和页面渲染时间
国内目前使用的浏览器大多是Firefox,通过此浏览器自带的开发者工具对前端页面下载和渲染所消耗的时间进行分析,得到以下结论:
01
大量JS文件分别下载带来的开销
由于前端JS框架众多,往往引入一个功能连带出一堆的JS,在页面加载时大量的JS会增大耗时。此情况可使工具将多个JS文件进行合并成为几个JS文件。
02
资源文件未压缩带来的开销
CSS文件及JS文件通常有压缩版和未压缩版本,为降低网络开销,在生产环境中尽量使用压缩版本。
03
未开启资源缓存
开启页面缓存机制,尽量保障资源文件仅下载一次,避免重复下载增大系统损耗。
P3
笔者结语
总而言之,业务应用系统的运行效率与稳定性,是企业信息化发展的基础,为了能够真正发挥投入巨大的信息化系统的优势,性能优化提升是必不可少的重要环节,而性能优化工作并非业务研发团队的主业对其而言确有一定难度。
鉴于此,我们试图寻找更加有效,且不依赖于开发人员经验和水平的解决之道,希望在未来能够利用机器学习和机器人技术帮助应用研发团队解决类似的问题,从而降低系统性能优化的难度和成本。在此之前,如果应用厂商需要性能优化方面的帮助和指导,可以联系人大金仓,我们将竭尽所能提供支持和帮助。
后续我们将从数据库优化角度讲述系统性能提升的方法,双管齐下,让业务应用在全国产环境下高速奔跑,以满足用户的使用要求。
做中国最优秀的数据管理软件与服务提供商!
——人大金仓
点好看变好看
领取专属 10元无门槛券
私享最新 技术干货