153
CASE
区域治理作者简介:李慧颖,生于1980年,毕业院校:北京邮电大学,软件工程,本科,研究方向为网络互联及网络操作系统等。
探析高并发Web 服务器的解决办法
北京信息职业技术学院  李慧颖
摘要:目前无论在企业网、校园网还是在广域网上,Web服务的业务量的发展都超出了过去最乐观的估计。随着互联网的广泛应用,即便按照当下最优配置网络,也很难满足快速增长的服务需求。因此,高并发服务器应运而生。本文将针对Web服务器的性能瓶颈进行阐述,分析其问题产生的原因,并提出解决办法。
关键词:Web服务器;性能瓶颈;页面请求;高可用中图分类号:TP368.5
文献标识码:A
文章编号:2096-4595(2020)38-0153-0001
一、Web 服务器性能瓶颈
网站每天会收到数百万次乃至千万次的访问请求,对于提供高负载Web 服务的服务器来讲,硬件处理能力已经成为瓶颈。由于服务器的性能限制,单纯提高硬件配置并不能从根本上解决问题。对于突发性强的网络请求来说,当发生某些重大事件时,急剧上升的网络访问会造成网络瓶颈。所以网络服务借助多台服务器构建,并将请求下发给这些服务器分担,以便解决大量并发服务的处理问题。简单地将页面按照内容进行服务器的划分,在实际使用中也很难预判负载大小,而且还会造成服务器的浪费。如果频繁按照负载变化来调整页面所在的服务器,那么势必会对日常维护造成极大的困扰。因此,对于高负载的网站,最好的解决办法还要从负载均衡技术入手。
二、问题分析
Web 服务器负载过大,究其产生的原因主要有以下几个:
(一)复杂繁多的页面元素
随着Web 页面元素越来越多,内容较之以前也更为丰富。元素越多,也意味着下载请求越多。复杂的Web 系统的交互也导致交互的次数和场景随之增加。
为了减少反复的创建和销毁连接行为,当前Http 请求通常都会建立长连接。一旦建立后,指定时间内
这个连接会被保持住,可以复用。但是也带来了新的问题,保持连接占用了Web 系统服务端资源,导致资源浪费。创建长连接后,第一批资源传输完毕,若无数据交互,直到超时才能自动释放此连接占用的系统资源。
(二)不断增加的主流浏览器的连接数
随着Web 资源越来越丰富,主流浏览器的并发连接数也在增加,同域下,从早期浏览器的1-2个下载连接,发展到目前2-6个下载连接。在下载资源需求较多的场景下,增加浏览器并发连接数目,可加快网页加载
速度。多连接有利于浏览器加载页面元素,在遇到网络阻塞的情况下,可使某些连接的其他正常的下载连接继续工作。
这样做无形中提高了Web 系统后端的压力,越多的下载连接导致需要占用越多的Web 服务器的资源,用户访问高峰期,势必会出现“高并发”的情况。这些连接和请求,占据了服务器的大量CPU 和内存等资源。使用多下载连接在资源数目超过100+的网站页面中就非常有必要了。
三、解决办法
根据出现的问题,我们提出的主要解决办法是:Web 服务的前端优化,减轻服务端压力。需要前端和web后端是指什么
后端的共同配合优化来缓解“高并发”的压力,才能使效果达到最优。
(一)降低Web 请求
常用的实现方法是在浏览器的本地缓存中放入静态内容,在一定时间时间内,直接使用本地资源,无需向Web 服务器再次请求。HTML5中的本地存储技术也具有强大的本地数据缓存功能。采用本缓存方案,虽然对首次访问的用户效果甚微,但对后续用户可大幅缓解服务器访问压力,同时提高了用户体验。需要特别注意的是,浏览器的本地缓存是有时效性的,一旦过期,就必需向服务器重新提交请求,这个时候,需要根据服务器资源内容更新与否来决定下一步是否需要与服务器重新进行连接。虽然上述请求减轻了Web 服务器的压力,但是连接仍然被建立,请求也发生了。
(二)合并页面请求
早在ajax 盛行之前,绝大多数页面是直接输出的,页面内容由Web 后端生成,再返回给前端。后来页面静态化逐渐被ajax 的更友好的交互方式替代了,单独的页面请求也变得越来越多。由于移动端的网络性能远低于PC 宽带,并且多数手机配置不高,面对一个超过100个请求的网页,加载的速度也会慢很多。所以,优化的方向又重新回
归到减少请求数量,合并页面元素。
减少了传输数据的次数的同时合并请求,意味着将它们从一个一个地请求,变为批量请求。此优化方法,理论上减轻了Web 服务器压力,减少了连接建立的数量。
(三)Web 服务器采用轻量级的应用虽然不断优化Apache ,减少了服务器内存占用,提高了高并发处理的能力,但由于其的成熟性并集成了很多稳定的模块,导致Apache 无法摆脱“重量级”头衔。Nginx 作为轻量级的Web 服务,占据的内存自然较少。而且,Nginx 可以用一个进程来服务于多个连接。所使用的方式,与Apache 截然不同。静态文件的每秒查询率性能压测结果,Nginx 对静态文件的处理性能大概3倍于Apache 。
(四)使用负载均衡代理服务器如何将Web 服务器集当作一个城池,那么负载均衡服务器则相当于城门,重要性不言而喻。如果只有一台Nginx 负载均衡服务器,当该服务器发生故障时,则会导致整个网站无法访问。因此,需要多台负载均衡服务器实现故障转移与高可用。
负载均衡服务器一般是通过虚拟IP 方式来实现的,基于Linux/Unix 的IP 别名技术。两台负服务器都处于活动状态,各自绑定一个公网虚拟IP 提供负载均衡服务,当其中一台服务器发生故障时,另一台服务器接管发生故障服务器的虚拟IP 。
参考文献
[1]刘卓,张向利.基于Nginx 的负载均衡集设计与实现[J].桂林电子科技大学学报,2017,37(6):490-493.
[2]徐长君,林涛.基于Nginx 的负载均衡方式优化[J].河北工业大学学报,2016(6):48-52.
[3]张炜森,陈涛,李康.Nginx 高并发负载均衡原理与策略比较研究[J].工业控制计算机,2018,31(1):85-86+89.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。