`
BradyZhu
  • 浏览: 247772 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

高并发高访问量网站的优化

 
阅读更多

http://blog.sina.com.cn/s/blog_4de067e40100lgys.html

不管怎么样,先要找出瓶颈在哪:是CPU负荷太高(经常100%),还是内存不
够用(大量使用虚拟内存),还是磁盘I/O性能跟不上(硬盘指示灯狂闪)?

下面是一些解决方案:(里面汲及到的一些技术如:负载均衡,数据库的优化,缓存技术,架构的设计,环境的搭建一定要有意识的去学习)

一 升级硬件
  以上几个都是可以通过升级硬件来解决或者改善的(使用更高等级的CPU,更快速和更大容量的内
存,配置硬件磁盘阵列并使用更多数量的高速SCSI硬盘),但这需要较大的投入。

优化程序代码
  1、减少数据库的压力
  <wbr><wbr>优化数据库结构和查询语句,缓存查询结果/建内存表,建索引<br><wbr><wbr><wbr>2、减少Apache的压力——减少HTTP的请求次数<br>   <wbr>背景图片全部做成一张然后用CSS控制位置/不使用AJAX来进行即时验证(不考虑客户体验什么的,<br><wbr><wbr><wbr><wbr><wbr>通过拖长客户时间来减轻服务器压力)<br><wbr><wbr><wbr>3、减轻I/O压力<br>   <wbr>页面局部缓存<br>   <br><span style="font-weight:bold">三 架构上去优化</span><br>   1.使用负载均衡技术<br>   简单的提高硬件性能并不能真正解决这个问题,因为单台服务器的性能总是有限的,一般<br> 来讲,一台PC服务器所能提供的并发访问处理能力大约为1000个,更为高档的专用服务器能<br> 够支持3000-5000个并发访问,这样的能力还是无法满足负载较大的网站的要求。尤其是网络请<br> 求具有突发性,当某些重大事件发生时,网络访问就会急剧上升,从而造成网络瓶颈,例如在<br> 网上发布的克林顿弹劾书就是很明显的例子。必须采用多台服务器提供网络服务,并将网络请求<br> 分配给这些服务器分担, 才能提供处理大量并发服务的能力。<br>   当使用多台服务器来分担负载的时候,最简单的办法是将不同的服务器用在不同的方面。按<br> 提供的内容进行分割时,可以将一台服务器用于提供新闻页面,而另一台用于提供游戏页面;<br> 或者可以按服务器的功能进行分割,将一台服务器用于提供静态页面访问,而另一些用于提供<br> CGI等需要大量消耗资源的动态页面访问。然而由于网络访问的突发性,使得很难确定那些页面<br> 造成的负载太大,如果将服务的页面分割的过细就会造成很大浪费。事实上造成负载过大的页面<br> 常常是在变化中的,如果要经常按照负载变化来调整页面所在的服务器,那么势必对管理和维<br> 护造成极大的问题。因此这种分割方法只能是大方向的调整<br><br>   2.Lighttpd+Squid+Apache搭建高效率Web服务器<br><wbr><wbr><wbr><wbr><wbr>Apache通常是开源界的首选Web服务器,因为它的强大和可靠,已经具有了品牌效应,可<br> 以适用于绝大部分的应用场合。但是它的强大有时候却显得笨重,配置文件得让人望而生畏,<br> 高并发情况下效率不太高。而轻量级的Web服务器Lighttpd却是后起之秀,其静态文件的响<br> 应能力远高于Apache,据说是Apache的2-3倍。Lighttpd的高性能和易用性,足以打动我们,<br> 在它能够胜任的领域,尽量用它。Lighttpd对PHP的支持也很好,还可以通过Fastcgi方式支<br> 持其他的语言,比如Python。<br>    毕竟Lighttpd是轻量级的服务器,功能上不能跟Apache比,某些应用无法胜任。比如<br> Lighttpd还不支持缓存,而现在的绝大部分站点都是用程序生成动态内容,没有缓存的话即<br> 使程序的效率再高也很难满足大访问量的需求,而且让程序不停的去做同一件事情也实在没<br> 有意义。首先,Web程序是需要做缓存处理的,即把反复使用的数据做缓存。即使这样也还不<br> 够,单单是启动Web处理程序的代价就不少,缓存最后生成的静态页面是必不可少的。而做<br> 这个是 Squid的强项,它本是做代理的,支持高效的缓存,可以用来给站点做反向代理加速。<br> 把Squid放在Apache或者Lighttpd的前端来缓存 Web服务器生成的动态内容,而Web应用<br> 程序只需要适当地设置页面实效时间即可。<br>    即使是大部分内容动态生成的网站,仍免不了会有一些静态元素,比如图片、JS脚本、CSS等<br> 等,将Squid放在Apache或者Lighttp前端后,反而会使性能下降,毕竟处理HTTP请求是<br> Web服务器的强项。而且已经存在于文件系统中的静态内容再在Squid中缓存一下,浪费内<br> 存和硬盘空间。因此可以考虑将Lighttpd再放在Squid的前面,构成 Lighttpd+Squid+Apache<br> 的一条处理链,Lighttpd在最前面,专门用来处理静态内容的请求,把动态内容请求通过<br> proxy模块转发给Squid,如果Squid中有该请求的内容且没有过期,则直接返回给Lighttpd。<br> 新请求或者过期的页面请求交由Apache中Web程序来处理。经过Lighttpd和Squid的两级过<br> 滤,Apache需要处理的请求将大大减少,减少了Web应用程序的压力。同时这样的构架,便<br> 于把不同的处理分散到多台计算机上进行,由Lighttpd在前面统一把关。<br> 在这种架构下,每一级都是可以进行单独优化的,比如Lighttpd可以采用异步IO方式,<br> Squid可以启用内存来缓存,Apache可以启用MPM 等,并且每一级都可以使用多台机器来<br> 均衡负载,伸缩性很好。</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

分享到:
评论

相关推荐

    淘宝高访问量优化

    淘宝高访问量优化 淘宝高访问量优化 淘宝高访问量优化

    优化nginx大并发——轻松应对上万并发访问

    优化nginx大并发——轻松应对上万并发访问 优化Nginx突破十万并发 搭建web nginx服务器是网站开发必不可少的技能,学好了,给公司省大钱

    大数据高并发实战架构(Mongodb实现)

    大数据高并发实战架构(Mongodb实现)、网站大访问量、mysql索引优化、反向代理

    Web服务器高并发访问机制的设计与优化

    在互联网高速发展的今天,...本文通过对网上商城项目高并发场景的分析,总结了影响服务器并发量的客观原因,针对这些因素,本文以数据库缓存和高并发web服务器负载均衡技术为主,设计并优化了服务器高并发访问机制。

    开涛高可用高并发-亿级流量核心技术

    16.7.7 库存接口访问量600w/分钟 343 16.7.8 微信接口调用量暴增 344 16.7.9 开启Nginx Proxy Cache性能不升反降 344 16.7.10 配送至读服务因依赖太多,响应时间偏慢 344 16.7.11 网络抖动时,返回502错误 346 16.7....

    高并发考勤系统的性能优化研究与实现

    考勤管理系统在满足用户功能方面的需求外,高并发请求和访问大量数据的响应性能是目前必须要面对的问题。本文在设计并实现高并发考勤系统基本功能的同时,为解决高并发、查询大量考勤数据的性能问题,提出了一个方便...

    PHP秒杀系统 高并发高性能的极致挑战 从万次到亿万次的性能优化,从单机到分布式的架构升级

    本课由360架构师亲授,以360真实秒杀系统为切入点, 从秒杀的功能入手,分层递进讲解,逐步让大家掌握系统的设计、架构以及优化,从容应对百万级、过亿级的秒杀活动及其它海量访问的互联网系统。1. Linux / Nginx / ...

    高性能高并发服务器架构大全

     memcached+squid+apache deflate解决网站大访问量问题 52  FeedBurner:基于MySQL和JAVA的可扩展Web应用 53  YouTube 的架构扩展 55  了解一下 Technorati 的后台数据库架构 57  Myspace架构历程 58 ...

    亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统_PDF电子书下载 高清 带索引书签

    剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web 安全、系统发布、运维监控等在内的大型网站开发全景...

    构建高性能高并发系统.docx

    主要针对高并发高吞吐量业务服务的优化方向,实现服务高可用和高稳定,满足用户访问,通过不同维度对服务进行优化,根据不同的需求场景选择不同的方案实施

    大数据量高并发的数据库优化,sql查询优化

    如果不能设计一个合理的数据库模型,...所以在考虑整个系统的流程的时候,我们必须要考虑,在高并发大数据量的访问情况下,我们的系统会不会出现极端的情况。(例如:对外统计系统在7月16日出现的数据异常的情况,并

    大数据量高并发的数据库优化详解

    如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段...所以在考虑整个系统的流程的时候,我们必须要考虑,在高并发大数据量的访问情况下,我们的系统会不会出现极端的情况。(例如:对外统计系统在7月16

    简单实现Java高并发之秒杀系统

    秒杀系统是一种针对高并发场景下的抢购活动设计的系统,旨在克服大量用户同时访问和购买同一商品的挑战。以下是秒杀系统的概念描述: ...6. **数据库优化**:针对高并发操作,需要优化数据库的设计和操作,......

    java高并发商品限时秒杀系统.zip

    本系统是使用SpringBoot开发的高并发限时抢购秒杀系统,除了实现基本的登录、查看商品列表、秒杀、下单等功能,项目中还针对高并发情况实现了系统缓存、降级和限流。 开发工具 IntelliJ IDEA + Navicat + Sublime ...

    Java高并发高性能分布式框架从无到有微服务架构设计(1).doc

    因为高并发 的时候是有很多用户在访问,导致出现系统数据不正确、丢失数据现象,所以想到 的是用队列解决,其实队列解决的方式也可以处理,比如我们在竞拍商品、转发评论微博 或者是秒杀商品等,同一时间访问量特别大,...

    基于SpringBoot + MySQL + Redis + RabbitMQ + Guava开发的高并发商品限时秒杀系统

    本系统是使用SpringBoot开发的高并发限时抢购秒杀系统,除了实现基本的登录、查看商品列表、秒杀、下单等功能,项目中还针对高并发情况实现了系统缓存、降级和限流。 开发工具 IntelliJ IDEA + Navicat + Sublime ...

    【IDEA+SpringBoot+Java商城秒杀实战20】高并发秒杀接口优化

    高并发秒杀接口优化 接口优化(核心思路:减少对数据库的访问) Redis预减库存减少对数据库的访问 内存标记减少Redis的访问 请求先入队缓冲,异步下单,增强用户体验 RabbitMQ安装与SpringBoot的集成(目的:同步...

    新浪首席DBA主讲 Mysql高级DBA实战

    曾就职于康盛创想,从事大访问量网站的部署以及优化工作,2007年末加入新浪负责整个公司的数据库管理工作 【课程大纲】 第1章:MySQL基础 第2章:InnoDB简介及参数优化 第3章:MySQL硬件优化与监控 第4章:MySQL...

    SQL Server数据库查询速度慢原因及优化方法

    4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一...

    婚介网站源码 交友网网站源码

    产品经过了二次大型的架构调整,完成了高并发数据处理能力、高频率数据查询承载能力的提升、高访问量页面缓存处理及分流的优化。 目前无论是功能上、数据优化、代码架构、模板引擎、后台人性化管理、扩展性、代码...

Global site tag (gtag.js) - Google Analytics