文档章节

JavaWeb网站性能优化的相关技术

晨猫
 晨猫
发布于 2018/04/02 16:13
字数 2003
阅读 31
收藏 0

一、提高服务器并发处理能力

我们总是希望一台服务器在单位时间内能处理的请求越多越好,这也成了web服务器的能力高低的关键所在。服务器之所以可以同时处理多个请求,在于操作系统通过多执行流体系设计,使得多个任务可以轮流使用系统资源,这些资源包括CPU、内存以及I/O等。这就需要选择一个合适的并发策略来合理利用这些资源,从而提高服务器的并发处理能力。这些并发策略更多的应用在apache、nginx、lighttpd等底层web server软件中。

 

二、Web组件分离

这里所说的web组件是指web服务器提供的所有基于URL访问的资源,包括动态内容,静态网页,图片,样式表,脚本,视频等等。这些资源在文件大小,文件数量,内容更新频率,预计并发用户数,是否需要脚本解释器等方面有着很大的差异,对不同特性资源采用能充分发挥其潜力的优化策略,能极大的提高web站点的性能。例如:将图片部署在独立的服务器上并为其分配独立的新域名,对静态网页使用epoll模型可以在大并发数情况下吞吐率保持稳定。

 

三、数据库性能优化和扩展。

Web服务器软件在数据库方面做的优化主要是减少访问数据库的次数,具体做法就是使用各种缓存方法。也可以从数据库本身入手提高其查询性能,这涉及到数据库性能优化方面的知识本文不作讨论。另外也可以通过主从复制,读写分离,使用反向代理,写操作分离等方式来扩展数据库规模,提升数据库服务能力。

 

四、Web负载均衡及相关技术

负载均衡是web站点规模水平扩展的一种手段,实现负载均衡的方法有好几种包括基于HTTP重定向的负载均衡,DNS负载均衡,反向代理负载均衡,四层负载均衡等等。

 

对这些负载均衡方法做简单的介绍:基于HTTP重定向的负载均衡利用了HTTP重定向的请求转移和自动跳转功能来实现负载均衡,我们熟悉的镜像下载就使用这种负载均衡。DNS负载均衡是指在一个DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时返回不同的解析结果将客户端的访问引到不同的机器上,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。反向代理负载均衡也叫七层负载均衡,这是因为反向代理服务器工作在TCP 七层结构的第七层(应用层),它通过检查流经的HTTP报头,根据报头内的信息来执行负载均衡任务。四层负载均衡是基于NAT技术的负载均衡,它将一个 Internet上合法注册的IP地址映射为多个内部服务器的IP地址,对每次TCP连接请求动态使用其中一个内部IP地址,达到负载均衡的目的。此外,还有工作在数据链路层(第二层)的直接路由方式下的负载均衡,它通过修改数据包目标MAC地址来实现。以及,基于IP隧道的负载均衡,在这种方式下可以将实际服务器根据需要部署在不同的地域,并根据就近访问的原则来转移请求,CDN服务便是基于IP隧道技术来实现的。

 

Web负载均衡在扩展web服务器规模的同时也给web站点性能优化提供了一个更大更复杂也更灵活自由的平台,基于该平台性能优化的策略包括共享文件系统,内容分发与同步,分布式文件系统,分布式计算,分布式缓存等等。

 

五、web缓存技术

web缓存技术被认为是减轻服务器负载、降低网络拥塞、增强万维网可扩展性的有效途径,其基本思想是利用客户访问的时间局部性 (Temporal Locality)原理,将客户访问过的内容在Cache中存放一个副本,当该内容下次被访问时,不必连接到驻留网站或重新计算生成,而是由Cache中保留的副本提供。Web缓存可以带来如下的好处:

 

(1) 减少网络流量,从而减轻网络拥塞;这是因为缓存避免了一部分HTTP请求。

(2) 降低客户访问延迟,其主要原因有:①已缓存的内容,客户可以缓存获取而不是从服务器获取或重新计算生成,从而减小了传输延迟缩短了响应时间;②没有被缓存的内容由于网络拥塞及服务器负载的减轻而可以较快地被客户获取;

(3) 由于客户的部分或者全部请求内容可以从通过缓存获取,从而减轻了远程服务器负载。

(4) 如果由于服务器故障或网络故障造成服务器无法响应客户请求,客户可以从缓存中获取缓存的内容副本,使得web站点服务的鲁棒性(Robustness)得到了加强。

 

可以看出web缓存能给web站点带可观的性能提升。其实在用户发出请求到一幅完整的网页呈现在用户面前这一过程中缓存无处不在,下面是web性能优化时常用的缓存技术,你会发现缓存被广泛应用在各个环节。

 

浏览器缓存:浏览器一般会在用户文件系统中创建一个目录,用于存放缓存文件,并给每个缓存文件打上必要的标记,比如过期时间等。这些标记主要用于浏览器和服务器之间的缓存协商。

 

Web服务器缓存:一个URL在一段较长时间内对应一个唯一的响应内容,比如静态内容或者更新不太频繁的动态内容,web服务器可将响应内容缓存起来,下次web服务器便可以在收到请求后立即拿出事先缓存好的响应内容并返回给浏览器。

 

代理服务器缓存:暴露在互联网中与后端的web服务器通过内部网络相连的前端服务器称为反向代理服务器,建立在反向代理服务器上的缓存称为反向代理缓存。暴露在互联网中与后端的web客户端通过内部网络相连的前端服务器称为正向代理服务器,建立在正向代理服务器上的缓存称为正向代理缓存。代理服务器缓存位于客户端和web服务器之间,可以将它看做二者之间的一个中继站。它的存在可以改善客户端的访问速度、提升web server的服务能力、安全性等等。

本文转载自:https://mp.weixin.qq.com/s/Ge6bCAoOlLr2QM-MP18Sfw

晨猫
粉丝 41
博文 446
码字总数 143990
作品 0
杭州
后端工程师
私信 提问
看过的书籍

疯狂java讲义(讲得比较细,对全面了解jdk有很大帮助) 疯狂android讲义(当时要做android,买了这本书) oracle从入门到精通(系统讲oracle使用) 精通div+css网页样式与布局(程序员在样式方...

rock912
2016/01/21
128
0
八,JavaWeb之开发一个纳米级的JSP网站

Eclipse+Tomcat+JDK装好后,就可以正式进行开发了,老规矩,helloworld!创建一个JSP网站,在网站上边打印Hello world!。 8.1创建项目。 首先,新建一个名叫Hello Word的动态网站项目,Fil...

zhanggong
2016/01/20
167
2
最全java学习路线图 java学习指南

JavaEE学习路线图 准备篇 适用/适合人群:适合基础小白 目标:掌握JavaSE。 ●技术点小节: 1.开发工具的安装配置的介绍 2.JDK安装 3.DOS环境编程 4.Eclipse的安装使用 ●JAVA基础 1.基本的语...

耳东陈_f1e5
2018/01/14
0
0
七,搭建JavaWeb的开发环境

JavaWeb需要的开发环境。 1,JDK,Java开发套件,包括Java虚拟机、Java开发需要的库架包等等。 2,Tomcat,是Apache组织开发的一款web服务器。 3,Eclipse,Java开发主流的开发工具。 7.1 JD...

zhanggong
2016/01/15
234
0
Java Web学习计划

--- 本月为入门阶段,从零开始,一步一步的做出一个实用的网站。 深入学习Java语言,初步掌握前端技术,使用JSP和MySQL完成一个简单的网站 第1周 Java高级编程学习目标:
1.深入了解JDK环境...

SVD
2016/12/01
55
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 你一辈子都不可能跟她这么亲近

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享George Benson的单曲《Six Play》: 《Six Play》- George Benson 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
今天
630
8
优雅的关闭Spring Boot

优雅的关闭Spring Boot 1、实现 TomcatConnectorCustomizer 接口拿到Tomcat的连接获取 Tomcat连接池 2、实现 ApplicationListener<ContextClosedEvent> 监听服务器关闭事件,注册JVM钩子函数...

sowhat
今天
2
0
Python3-Web开发

简介 Web开发框架 什么是Web框架? Web应用程序框架或简单的Web框架表示一组库和模块,使Web应用程序开发人员能够编写应用程序,而不必担心协议,线程管理等低级细节。 virtualenv是一个虚拟...

wuxinshui
今天
6
0
使用技媒体实践编写发布博客

技媒体实践博客 CSDN OSChina 知乎 简书 思否 掘金 51CTO

晨猫
今天
4
0
Lucene

1、什么是全文检索 数据分类 我们生活中的数据总体分为两种:结构化数据和非结构化数据。 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据:指不定长或无固...

榴莲黑芝麻糊
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部