架构师考试论文-论Web应用系统性能优化技术与应用_第1页
架构师考试论文-论Web应用系统性能优化技术与应用_第2页
架构师考试论文-论Web应用系统性能优化技术与应用_第3页
架构师考试论文-论Web应用系统性能优化技术与应用_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要:2018年下半年,本人有幸参加了某汽车玻璃生产厂商的“产品质量追溯与条码管理系统”的性能优化工作。该系统基于三层B/S架构,是以条码管理为基础、涵盖原材料采购、生产物料准备、生产制造执行、仓储管理、成品调拨销售为一体的综合性管理系统。在本次性能优化工作中,本人作为技术负责人,主要负责系统现有情况分析和优化方案制定等工作。本文以该系统的性能优化过程为例,首先介绍该系统的基本情况,然后探讨进行系统性能优化可以采用什么样的技术架构和措施,以及各种技术和措施所发挥的作用和效果,最后着重探讨在针对该系统进行性能优化时,我们是如何结合实际情况和以往的经验,在项目中使用反向代理加负载均衡、Redis内存数据库、数据库读写分离以及OracleAWR报告分析与优化等技术成功完成优化工作的。正文:在软件技术快速发展的今天,越来越多的软件企业选择B/S架构开发应用系统,终端用户能够非常直观地利用浏览器端与系统服务器进行交互,但是随着WEB应用系统规模的扩大以及访问量的提升,对WEB应用系统的性能要求也在逐步的提高。2018年下半年,我公司受当地某汽车玻璃生产厂商的委托,为我公司之前为其开发的“产品质量追溯与条码管理系统”进行性能优化工作。该系统是一个基于产品条码管理的,涵盖车间整个生产过程的综合性管理系统。该系统需要覆盖到该厂商分布在全国各地的三家生产基地和十多家供货仓库,且每个生产基地包含钢化与夹层两个车间,每个车间内又分别包含十余道工序,这些工序都需要通过条码扫描设备或PC机24小时不间断高频度地与该系统进行交互,交接班时交互峰值可达每秒钟数百次。目前该系统出现了页面加载缓慢、数据上传等待时间过长、特定功能提交浏览器超时等情况,这已经影响到了该厂商车间的正常生产。该厂商要求我们针对上述情况进行优化以保证其生产业务正常进行。作为本次优化工作的技术负责人,本人主要负责系统问题诊断分析以及优化方案制定等工作,在与客户敲定优化需求与上线时间后,我们开始针对该系统进行整体分析,从而为后续性能优化提供依据,同时我们也在考虑应该使用哪些技术对该系统进行性能优化。针对WEB应用系统进行性能优化时,我们经常从降低单台服务器负载,提升WEB页面性能、引入内存数据库、数据库效率提升等几个方面着手。从降低单台服务器负载的角度来讲,传统的单服务器节点模式在很多场景下已经无法满足访问量的需求,这时我们就需要考虑引入负载均衡技术,该技术将应用程序部署在集群中,然后使用Nginx等反向代理工具反向代理集群并提供一个统一的访问入口,Nginx使用静态或者动态算法将请求分发到集群的各服务器上。这样做的好处是能够有效的提高系统的性能和吞吐量,缺点是需要增加硬件成本。从WEB页面性能的角度来讲,我们可以通过减少前后端交互次数和分离静态资源两种方式进行优化。减少前后端交互次数是指分析页面初始化时与应用服务器的交互次数,将页面各组件取值的多次交互合并为一次交互,这样可以有效降低软件前后端的交互频率,节约系统的开支;分离静态资源是指将页面中的静态资源从应用服务器中分离后单独部署或部署到Nginx上,这样也可以降低应用服务器的压力,提升整体的性能,这样做的缺点是需要增加额外的部署,增加成本。从引入内存数据库的角度来讲,可以将系统中变化频率较低,使用频率较高的数据项一次性从传统数据库中取出,然后加载到效率更高的内存数据库中(如Redis等),后续使用到这些数据可直接从内存数据库中读取,提高系统性能,但是这种方式不建议使用在变化频率较高的数据上,另外还需要考虑数据一致性的问题。从数据库应用效率提升的角度来讲,我们可以读写分离的方式,将数据库拆分,主库写、从库读,这样主从库就可以分别向读写两个方向进行优化。也可以通过对数据库日志的分析,找到效率较低的SQL语句,通过对SQL查询语句的优化或者索引的建立,提升SQL查询语句的效率。针对我们本次需要优化的系统,下面着重探讨我们如何结合系统的实际情况使用“负载均衡”、“Redis”内存数据库、数据库读写分离以及OracleAWR报告分析技术对系统进行优化以及所达到的效果。 一、负载均衡技术我们本次需要优化的系统是一个典型的三层B/S架构应用系统,采用集中式部署的方式,为该生产厂商分布在全国的三家生产基地以及十多家供货仓库提供服务。该系统运行在两台服务器中,其中一台服务器通过Weblogic中间件运行应用程序,另外一台服务器运行Oracle数据库。这种传统的单服务器提供应用服务的方式显然已经不能满足当前的性能需要,我们考虑为应用服务器建立负载均衡,但是这样显然会增加客户的成本,于是我们与客户进行了探讨,客户从实际的需要和成本的角度考虑后,决定再提供三台服务器来实现负载均衡,我们将三台服务器均克隆为应用服务器,并且在其中一台服务器搭建Nginx,Nginx反向代理本机的应用和另外三台服务器上的应用,对外部暴露Nginx代理后的一个地址,Nginx服务器通过最小连接数算法将请求分发到应用服务器达成负载均衡。通过负载均衡的搭建,我们将系统访问吞吐量提升到了一个较为理想的状态,缓解了用户访问等待的问题。二、内存数据库的使用通过对现有系统的分析,我们发现终端用户登录到系统进行相关的业务操作时,会有一部分数据使用频率很高且并不会经常变化,比如登录用户信息以及常用的数据项等。这一部分数据每次被使用时都会访问数据库,这极大的增加了系统的开销。根据这一问题,我们引入了开源的Redis内存数据库。在系统启动时,我们会将常用代码项从Oracle中读取出来并缓存到Redis中,在用户登录时,我们也会将用户信息缓存到Redis中,这样当用户再使用这部分数据时,便可以直接从效率更高的Redis中提取,极大的提升了系统的性能,并缓解了页面加载缓慢等问题。三、数据库读写分离以及OracleAWR报告的分析与优化本系统采用Oracle11g数据库作为数据持久化介质,我们将原本的单点数据库改成主从库的部署方式,并且进行了读写分离的控制,主库负责写,从库负责读,这样一来,我们便可以分别从写和读两个方向对主库和从库进行优化。另外Oracle11g提供了AWR(AutomaticWorkloadRepository自动负载信息库)特性,该特性可以分析在一定时间内数据库的负载情况以及耗费资源较多的SQL语句排序。根据对AWR报告的分析,我们定位到了耗费数据库资源前20的SQL语句,随后我们在应用系统中定位到了这些SQL语句,并在测试环境中对这些SQL使用PL/SQL工具的“解释计划”功能进行分析,定位全表扫描以及低效的索引,通过增加或者调整表中的索引,尽可能的提升SQL语句的效率。在调整部署到生产环境后,我们通过再次分析Oracle数据的AWR报告,检查之前优化的效果,以及寻找进一步优化的可能。我们在这次系统性能优化工作中还使用了很多其他的优化方式,这里不再一一赘述。整个优化工作持续了半年,从整体优化的效果来看,我们的工作是成功的,一方面,目前该管理系统已基本消除了页面加载

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论