网站并发处理总结

网站访问量在瞬时间大量提升,带来并发问题。这种情况普通网站是不会出现的,决定于用户基数,除非有人通过脚本或工具攻击你的网站,攻击这属于安全问题,某天你的网站遭受DOS洪水攻击时,你想到的不是高并发,而是从安全层面处理。曾经做一次抢红包的活动遭遇到类似洪水攻击,本身服务器资源就相当有限,也没有多节点资源可以部署,用黑名单过滤?只能呵呵。
本人所遇到的并发场景是在抽奖、秒杀、抢红包等,即在活动期间内有大量用户访问的情况。
两个解决思路:
1、Java代码实现方式  :使用Redis缓存、代码锁机制、MQ消息队列等

2、服务器层面调优:多节点部署、服务分发、提升带宽等

3、数据库层面,例如给查询字段加索引等

4、进行系统设计分析:
一个Web页面js、css、图片等静态文件 统计约1.5M
并发状态下 并发量为1000 /S    则流量为1500M/S
服务器带宽则必须支持1500M/S  ??
当然不是
这里需要做分流
国内的虚拟主机用的服务器多数是100M共享,也有10M独享的

总结:
从低成本、高性能和高扩张性的角度来说有如下处理方案: 
  1、HTML静态化 
  2、图片服务器分离 
  3、数据库集群和库表散列 
  4、缓存 
  5、镜像 
  6、负载均衡;一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squid集群,这种思路在很多大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性,随时往架构里面增减节点都非常容易。 

引用一个牛人所做的总结,跟上面部分相同。 
高并发时,性能瓶颈及当前常用的应对措施 
1.数据库瓶颈。Mysql并发链接100 
2.apache 并发链接1500 
3.程序执行效率 

1.有数据库瓶颈时,当前处理方案无外乎 主从,集群。增加memcached【内存对象缓存系统】
如:手机之家新系统介绍及架构分享(http://www.slideshare.net/Fenng/ss-1218991?from=ss_embed) 
就是在cache【缓存】层做优化 
又拍网架构(http://www.bopor.com/?p=652) 
是以增加数据库,分表分库的方法解决。 
Sina增加了mq(消息队列)来分发数据。 
还有风站用了key-value的数据库。其实这可以理解成一个持久化的缓存。
 
2.apache瓶颈。 
增加服务器。负载均衡。如sina的F5 
由于进程数的限制。会把一些基本不变的代码挪出来放到单独的服务器。如css/js/图片。 
国内成功的案例是tom的cdn 
又如nginx的横空出世和squid的反向代理都是基于这个原因出来的。 


2). 数据库查询效率问题。如可能有order by ,group by 等Sql数据问题。 
这个其实应该归结到数据库设计问题。 
解决的办法是建立正确的索引。增加memcache【分布式的高速缓存系统】.。 
对like表 用专用的sphinx.【SQL的全文检索引擎】和lucence 【基于Java 的全文信息检索】等搜索服务。 

程序员都应该会用explain对sql语句作分析。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值