如何应对网站大规模并发访问

来源:互联网 发布:linux c视频教程 编辑:程序博客网 时间:2024/05/18 17:02
1 有保障的硬件设备 
    1.1 网络运营商的宽带接入
    首先,网站的链路接入上要有多个不同运营商的宽带接入,这样可以充分发挥不同运营商的作用。采用DNS 解析的技术,实现电信宽带负责电信上网客户对网站的访问、联通宽带负责联通上网客
户对网站的访问、教育网宽带负责教育网的客户对网站的访问,使不同运营商的客户对网站访问的速度达到最快。因为我省大部分互联网用户是通过电信上网的,所以采用两条电信的百兆宽带,它们承担了大部分的网站流量。这两条电信宽带互为备份,不仅平均负担了网站流量,还提高了网站系统的可靠性。
   1.2 防火墙技术 
   为了适应高并发访问的要求,在高峰访问到来之前,应对防火墙的规则做调整:1)关闭各类网络攻击检测,以防火墙的CPU 计算量过大,导致由于防火墙的故障而造成网络阻塞。2)要根据议防火墙数据包流量的大小,对防火墙过滤规则的先后顺序进行调整,与流量大的数据包相关的防火墙过滤规则要调整靠前,这可大大减少CPU 进行数据过滤的计算量,减轻CPU 负载。3)等访问高峰期过后,还要将防火墙的规则恢复到原先正常的状态。
   1.3 负载均衡
设备及技术 负载均衡技术是解决集中并发访问的核心技术,负载均衡主要能够实现以下功能: 1)多链路负载均衡:支持Inbound/Outbound 双向链路负载均衡。 2)防火墙负载均衡:要求能够实现异构防火墙的双Active 工作及负载均衡。 3)多站点负载均衡:支持站点主、备数据中心的建设,同时支持智能的DNS 解析。 4)服务器负载均衡:完善的第四/七层交换功能,支持可定制的基于应用层的健康检查方式,支持会话保持方式。 5)多路连接复用:将多个用户的请求合成一个连接发送到服务器,减小应用服务器的压力,提升用户响应速度。 6)智能压缩:使用压缩算法来压缩HTTP流量,降低带宽消耗、缩短最终用户在慢速、低带宽连接条件下的下载时间。 7)内存Cache:利用Cach e来缓存用户频繁访问的 web 静态内容,从而减小应用服务器的压力,提升用户响应速度。 实现负载均衡技术的主要设备是负载均衡器,我们部署了两台F5 公司生产的BIGIP-3600 负载均衡器,这两台设备作为主、备互用。平时只有一台负载均衡器在工作,一旦这台工作设备出现故障,系统会及时切换到备用设备上,这样确保整个网站系统的高可靠性。通过负载均衡设备,将用户产生的高并发访问均衡地分流到各个应用服务器上。 
   1.4 应用服务器部署 根据应用服务器的性能和并发访问量的大小,适当规划应用服务器的数量。部署原则是:单台应用服务器的不要求最好,但是数量要足够,最好能有一定的冗余。 在访问量不大的情况下,网站部署了四、五台应用服务器,这足够应付日常用户的访问;在高并发访问峰期间,适当增加某些关键应用的服务器数量。在高考分数查询业务上,使用了十六台服务器,以满足考生每小时上百万次的点击。 
   1.5 数据库集群技术
   网站遭受大规模的集中访问时,在数据库层面也会出现高并发访问的情况。网站后台数据库使用的是Orac le数据库,目前Or acl e数据库解决并发访问采用的是RAC(Oracl e Real Application Clusters)集群技术。RAC 采用并行服务器运行方式:在两台(或多台)服务器上各自运行一个数据库核心进程,但共同管理和操作同一个数据库文件,该数据库文件存放在共享的网络存储上。客户端无论连接到哪个服务器上都可以对数据库进行操作。当服务器A 由于故障失效时,数据库系统本身并未停止工作,连接在服务器B 上的客户端还可以继续进行正常工作,这样提高了数据库的高可靠性。由于多个服务器共享一个数据库,当有高并发数据库访问时,可以实现数据库的负载均衡。 随着这几年数据库技术的不断发展,使用数据库的模式也在不断改进。经过最近几年的实践证明 Oracl e数据库的RAC 技术是确实可行和可靠了,它成为我们网站数据库的统一技术模式。

  2 可靠的软件开发
  对于用户可能集中并发访问的页面,在网页编程设计时,要注意以下几点: 1)网页代码大小 所有静态页面、动态查询页面的代码要尽可能的短,图片要尽可能的少,以减少对带宽的需求。删除所有无关H TML 标记,尽量将输入查询条件页面、查询结果输出页面的总大小控制在5K 字节以内。 2)网页压缩传输 开启网页压缩传输,可大大减少网页传输数据量的大小。实际模拟测试显示,如果采用压缩传输,网页传输的数据量仅为原数据量的1/3。网页压缩传输不仅可以减少对网站宽带的占用,而且因为传输网页时间短,可大大减少负载均衡、防火墙的并发连接数和负载。采用压缩技术的唯一的代价就是使应用服务器的C PU 负载增加。 3)网页编程安全 因防火墙上关闭了网络攻击检测,所以需在网页编程时做一些必要的防攻击检测。如:① 防止SQL 注入式攻击:对查询的S QL 字符串进行合法性检验,防止被SQL 注入式攻击后导致整个数据库被下载。② 防止人工F5 刷新式攻击:在主页面、查询页面的客户端代码禁止F5 按键,防止客户端恶意刷新。③ 防止人工频繁打开页面刷新式攻击:设置Cookie,判断客户端打开页面的时间间隔,低于2 秒的就认为是人工频繁打开页面刷新式攻击。程序控制暂停数秒后,客户端才能跳转到查询首页。④ 防止程序自动刷新式攻击:检测HTTP_REFERER 变量,减少程序自动刷新式攻击的可能性。⑤ 隐藏查询代码页面的地址:设置Web 服务器,隐藏查询代码页面的地址,可有效防止各类程序自动刷新式攻击。⑥图片验证码:采用图片验证码,可有效防止程序自动刷新等方式的攻击,将图片分散于各查询服务器,避免在高并发连接数的环境下成为系统瓶颈。

3 完善的监控方案 高并发连接数的环境下,要对网站的整个系统进行实时监控。
   监控范围包括:
1)在防火墙上监控每条宽带接入的实际带宽占用大小,以及防火墙本身的C PU 利用率和内存使用状况。
2)在负载均衡器上监控整个系统的并发连接数,以及负载均衡器和各个应用服务器的运行状况是否良好。 
3)通过实时监控软件,对应用服务器和数据库服务器的并发连接数、CPU 内存利用率等指标进行实时监测。 以上各个监控部分要专门定人定岗,监控数字要用图表化的方式显示,便于观察。 只有切实做好实时监控,才可以在第一时间内发现问题,让系统管理员在最短的时间内作出反应,是做好应急预案的前提。

4 必要的应急预案 
条件许可的情况下,除了关键设备配置要有冗余外,还要做好关键设备出现故障时的应急预案。可能遇到的故障及处理方法有:
1)链路故障:当网络运营商的链路出现故障,可在域名服务器上,通过更改对外服务的域名的IP地址,切换到正常运行的链路上。
2)防火墙故障:当硬件防火墙出现故障时,可在一台Linux服务器上,利用 Linux自带的防火墙软件, 简单配置一台软件防火墙,以临时替代硬件防火墙。 
3)负载均衡故障:当负载均衡设备出现故障,可通过Linux的 LVS(Linux Virtual Ser ver)技术,在相关服务器上配置Linux虚拟机,实现简单的负载均衡.
0 0
原创粉丝点击