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突破十万并发 搭建web nginx服务器是网站开发必不可少的技能,学好了,给公司省大钱
大数据高并发实战架构(Mongodb实现)、网站大访问量、mysql索引优化、反向代理
在互联网高速发展的今天,...本文通过对网上商城项目高并发场景的分析,总结了影响服务器并发量的客观原因,针对这些因素,本文以数据库缓存和高并发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....
考勤管理系统在满足用户功能方面的需求外,高并发请求和访问大量数据的响应性能是目前必须要面对的问题。本文在设计并实现高并发考勤系统基本功能的同时,为解决高并发、查询大量考勤数据的性能问题,提出了一个方便...
本课由360架构师亲授,以360真实秒杀系统为切入点, 从秒杀的功能入手,分层递进讲解,逐步让大家掌握系统的设计、架构以及优化,从容应对百万级、过亿级的秒杀活动及其它海量访问的互联网系统。1. Linux / Nginx / ...
memcached+squid+apache deflate解决网站大访问量问题 52 FeedBurner:基于MySQL和JAVA的可扩展Web应用 53 YouTube 的架构扩展 55 了解一下 Technorati 的后台数据库架构 57 Myspace架构历程 58 ...
剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web 安全、系统发布、运维监控等在内的大型网站开发全景...
主要针对高并发高吞吐量业务服务的优化方向,实现服务高可用和高稳定,满足用户访问,通过不同维度对服务进行优化,根据不同的需求场景选择不同的方案实施
如果不能设计一个合理的数据库模型,...所以在考虑整个系统的流程的时候,我们必须要考虑,在高并发大数据量的访问情况下,我们的系统会不会出现极端的情况。(例如:对外统计系统在7月16日出现的数据异常的情况,并
如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段...所以在考虑整个系统的流程的时候,我们必须要考虑,在高并发大数据量的访问情况下,我们的系统会不会出现极端的情况。(例如:对外统计系统在7月16
秒杀系统是一种针对高并发场景下的抢购活动设计的系统,旨在克服大量用户同时访问和购买同一商品的挑战。以下是秒杀系统的概念描述: ...6. **数据库优化**:针对高并发操作,需要优化数据库的设计和操作,......
本系统是使用SpringBoot开发的高并发限时抢购秒杀系统,除了实现基本的登录、查看商品列表、秒杀、下单等功能,项目中还针对高并发情况实现了系统缓存、降级和限流。 开发工具 IntelliJ IDEA + Navicat + Sublime ...
因为高并发 的时候是有很多用户在访问,导致出现系统数据不正确、丢失数据现象,所以想到 的是用队列解决,其实队列解决的方式也可以处理,比如我们在竞拍商品、转发评论微博 或者是秒杀商品等,同一时间访问量特别大,...
本系统是使用SpringBoot开发的高并发限时抢购秒杀系统,除了实现基本的登录、查看商品列表、秒杀、下单等功能,项目中还针对高并发情况实现了系统缓存、降级和限流。 开发工具 IntelliJ IDEA + Navicat + Sublime ...
高并发秒杀接口优化 接口优化(核心思路:减少对数据库的访问) Redis预减库存减少对数据库的访问 内存标记减少Redis的访问 请求先入队缓冲,异步下单,增强用户体验 RabbitMQ安装与SpringBoot的集成(目的:同步...
曾就职于康盛创想,从事大访问量网站的部署以及优化工作,2007年末加入新浪负责整个公司的数据库管理工作 【课程大纲】 第1章:MySQL基础 第2章:InnoDB简介及参数优化 第3章:MySQL硬件优化与监控 第4章:MySQL...
4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一...
产品经过了二次大型的架构调整,完成了高并发数据处理能力、高频率数据查询承载能力的提升、高访问量页面缓存处理及分流的优化。 目前无论是功能上、数据优化、代码架构、模板引擎、后台人性化管理、扩展性、代码...