专栏首页cwl_Java系统架构师论文-论改进Web服务器性能的有关技术

系统架构师论文-论改进Web服务器性能的有关技术

论改进Web服务器性能的有关技术

【摘要】

基于Web技术的数据库应用是当前应用的一个热点,在用户数目与通信负荷很大的场合,提高Web服务器性能是一个迫切的课题。本文从笔者参与某个银行系统项目开发的经历出发,阐述了提高Web服务器的性能应渗入到项目论证、选型、开发、运行和管理的各个环节,只有各个环节都能充分考虑到性能与质重的需要,系统的性能才是真正可保证的和可扩充的。 文章从系统的实际运行与相应的经验出发,阐述了性能改进方面的一些具体措施。比如:在本文中讨论了 Web服务器平台的选型考虑;Web服务器的配置管理;应用系统本身的优化与预先设计系统时可扩性的性能保障等具体内容。 通过技术上的分析与改进,综合性地运用多类措施与手段,在实际系统中,Web服务器运行的性能得到了一定程序的保证。

【正文】

我所在的单位是把目标定位于金融领域开发IT应用的一家信息技术公司。随着金融电子化建设的发展和商业银行之间市场竞争的加剧,各主要商业银行不断通过信息技术提供新的金融产品,并且希望整合市场渠道。比如主要的商业银行不断推出形形色色的网上银行服务。在这种背景下,本人参与了开发新一代风上银行产品,涉及提供网上个人理财服务、网上外汇买卖服务、网上企业服务等具有市场竞争力的产品。作为项目开发的组织者之一和主要的技术骨干,在整个项目开发过程中始终要处于第一线,从而在改进Web服务器性能、提高整个网上平台系统性能方面收获良多,在本文中简要讨论如下,希望与读者们共享经验。在Wet服务器配置与优化方面,我有如下几方面主要的体会: 第一方面是Web服务器选型考虑。 在Web服务器选型及网上平台搭建这初,我们就已充分考虑整个网上平台的性能及可扩展性问题,这一考虑为该系统的稳定性及扩展性能力方面打下了坚实的基础。 某银行原有的一些网上产品由于开发较早,故而采用的是老式的HTTP Server + CGI程序调用的方式。这时,毎一客户淸求需要对应于后端系统的系统进程来运行CGI程序来处理,系统的开销相当大,系统的扩展能力也很差,性能已不能满足业务处理的需要,故而在为此银行系统具体选型的时候,我们一开始就否决了这种方案。 通过市场上同类产品的比较选择,我们选择了国际商业机器有限公司IBM的Web Sphere产品系列作为该行网上银行系统的建立平台。作出这样选择是因为Web Sphere基于使HTTPServer和应用服务器相分离的整体架构,同时支持JSP、Servlet和企业级Java Bean等轻重级线程规范,所有的淸求对应于应用服务器上的处理线程,系统的开销低,效率非常高,同时Web Sphere整个体系结构相当的灵活,为适应扩展需要可以作不同的横向和纵向扩展,从而可以满足各银行未来的扩展需要。 正是因为在一开始选型的时候我们就已考虑到未来的扩展需要,整个系统在接下来的几次性能改进方面,我们大体上都能相对顺利地达到了预期目标。 第二方面是Web服务器的性能配置。 在一开始系统上线的时候,由于系统的负荷不是很大,为了节省系统总拥有成本TCO投资,我们在一台较低配置的IBM RS6000上投产了该系统。整个系统的HTTP服务器、应用服务器、通信服务器等均位于该台机器上,由于初始投产时用户不多,所以系统的性能基本上能令人接受。 但随着业务的发展和用户访问童的増大,我们发现该服务器的响应变慢,系统的CPU利用率和内外存交换显著増大。经过跟踪,我们发现关键原因之一是系统的内存不足的缘故。由于网上服务器把大重用户的会话信息保存在内存中供给应用系统使用,当内存不足时,大M Session信息被迫交换至硬盘,大;量CPU时间消耗在等候内外存的交换上,系统效率迅速下降。 鉴于这种情况,我们把该服务器的内存由2GB扩充为4GB,同时相应调整用户会话信息的保存时间,这样整个系统的效率又回到较为理想的状况。 由于新应用的不断投产及数据库操作的日益増加,我们后来逐渐监控到系统的数据库处于繁忙状态,系统的错误日志也记录下了供应用服务器使用的数据库连接处出现资源不足的情况。在这种背景下,我们认为整个系统由于硬件配買所限,应该进行横向扩展,因此我们把数据库服务器分离出来,配置到另一较高性能的服务器上,相应定义的数据库资源也大幅増加,这样整个系统的性髭又处于较为理想的状况。 第三方面是对应用系统进行相应的优化以提高性能。 Web服务器配置及相应的硬件扩展不失为解决系统性能问题的一条捷径,但应用系统的优化也是应该重点加以考虑的,毕竟它能够在投入较少的情况下提高系统的运用效率。 在开发的初期,我们就已经十分注意系统的利用效率,比如提醒程序员尽量不要利用用户会话信息(Session)来传送大的对象,对于内存要注意回收等。同时,通过内部的交流会推广与介绍一些小的,有用的编程技巧来提高开发人员的水平,通过代码的抽查,希望能在早期就发现问题等。 在系统运行期间,我们通过监控发现,应用服务器所基于的Java虚拟机,其内存堆的空闲空间有不断下降的趋势,毎隔若干天导致空间消耗殆尽,无法分配新对象空间,从而导致系统重启。在排除了系统本身问题的原因外,我们确定为应用系统的开发有问题。通过从网上下载IBM公司检测Java虚拟机的相关工具对JVM进行监控后终于发现系统内部存在着不能回收内存的对象,再通过查找相应的程序发现在该程序中有“环状”的对象引用,从而导致对象使用后不能被垃圾收集器所回收。这个问题的解决过程虽然十分艰苦,但由于该问题不能通过升级硬件或増加资源配買而得到根本解决,会给系统帯来很大的隐患。所以,整个过程的分析与解决是完全值得的,更何况通过查找故障原因的过程,给整个项目组上了生动的一堂软件质重保证课,对项目组的质量意识起了很大的促进作用。所以说改进Web服务器的性能并不单纯是系统管理方面的工作,它渗透到开发以及系统运行第一系列环节中。 第四方面预先考虑未来的扩展与性能需要。 随着系统的发展及成熟,考虑到用户访问量的不断上升,为了预留系统的发展空间,我们最近又对整个系统作了一个系统性的升级。通过引入多台HTTP服务器及应用服务器并行工作提高整个系统吞吐量及单点故障克服能力。由于在一开始选型的时候就已经充分考虑到动态负载均衡及横向扩展方面的需要,这一项的升级无需对整个系统的体系结构作根本的变革,対应用程序来说,更是没有造成任何影响。 整个项目历时近两年,从这两年的系统情况来看,整个系统是成功的。根据我亲身的经历,系统性能并不单纯是系统运行与管理阶段的问题,而是渗透在项目论证、开发以及运行的各个阶段。只有各个阶段都能充分考虑性能方面的需要,在实际运行时,整个系统的性能才可能真正有保障。 在技术方面来看,可以综合利用选型评估、硬件扩展、应用优化和系统配置优化等一系列的手段;比如在硬件扩展方面,又可以分为主要部件扩容,纵向升级、横向升级等方面。在我们的项目实践中,曾综合地利用了上述的各种手段。比如某银行的整个系统日访问量不足1万至现在的毎日超过10万次以上的点击的发展情况来看,整个系统的性能保障及提高方案是比较成功的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何建站:云服务器使用(完整版)

    常见的云服务器有七牛、阿里云、腾讯云、金山云、百度云等,技术成熟而且价格公道,这里选用腾讯云。如里已有腾讯云服务器可以直接开始操作,没有的话参考下面:

    用户5921119
  • 做网站懒得备案 海外云服务器哪家好?

    身处云时代的我们,办公中很多场景都需要使用到云,但是市场上目前有这么多云服务商,比如腾讯云服务器等。我们怎样才能知道云服务器哪家好?尤其是做国外业务的企业,怎样...

    用户5921483
  • 中小型企业网站选购腾讯云服务器配置推荐解决方案

    信息社会的飞速发展,任何企业都脱离不了互联网,越来越多的企业都通过互联网实施无纸化的办公,互联网推广一体化整体型推广、互联网+电子商务。但是实现这些的最最基础的...

    tengxunyun8点com活动整理
  • 云服务器测评 为什么要选择腾讯云服务器?

    腾讯云服务器,简称 CVM 是通过高性能服务器虚拟化的云服务器、拥有专业团队打造资源隔离、数据安全、密码安全、安全加固等多达 20 种安全防护手段。其实就是和阿...

    用户5921467
  • 腾讯云计费模式比较说明,价格计算器一键计费

    腾讯云提供两种类型的云服务器购买方式:包年包月和按量计费,分别适用于不同场景下的用户需求。

    return null
  • 从零开始折腾博客:服务器,购买和配置

    独立服务器:顾名思义,就是一个躺在机房的实实在在的物理服务器,专属于你,和你家的主机没啥区别,除了24小时运行。不过既然是专属的,价格嘛...

    用户5921413
  • 搭建直播平台源码用到的云技术到底是什么

    现在在搭建直播平台源码时经常会听到云技术这个词,云技术到底是什么?很多第一次听到的人都会有这个困扰,简单说,云技术就是将局域网或广域网内的硬件、软件和网络等一系...

    nicai123
  • 用几张图看懂大数据技术

    我们做政企客户的解决方案支撑工作,一直在跟客户提到“大数据”,通过大数据就能将数据转化成推动精准营销、精准管理的利器。但实际,我们对大数据的理解有多少,今天我们...

    希望的田野
  • 学一学:Linux基础技能,挂新磁盘

    如果用户在云主机的原硬盘空间不够用,新购买后新增了一块云硬盘,是无法自动在云主机中使用的;如何在没有集成商支持的情况下,帮助用户将新云硬盘挂到旧云主机中,是一项...

    希望的田野
  • 如何在腾讯云安装宝塔面板

    2.点击服务市场 -> 管理与监控 -> 搜索“宝塔” -> 选择“宝塔Linux面板5.9” -> 开始重装

    React架构设计

扫码关注云+社区

领取腾讯云代金券