`
音频数据
  • 浏览: 36926 次
文章分类
社区版块
存档分类
最新评论

网站压力究竟在哪里

 
阅读更多

目前网站架构一般分成负载均衡层、WEB层和数据库层,我其实一般还会多加一层,即文件服务器层,这样我们在后面的讨论过程中,我们可以依次对这四层进行讨论;这里为了更具有说服力,我将用三个并发较大的生产环境来说明下,一个是我现在维护的电子商务网站(并发最大值2000,日PV500万左右,此并发并不是总这么高的,只是最高峰是有2900,下面的网站类似)、我的一拍网网站(并发最大值500,日PV50万左右)、以前维护的大型CDN广告网站(并发最大值5000,日PV5000万左右)。

首先说下负载均衡层,我们熟悉的硬件/软件技术有F5/LVS、HAProxy,还有Nginx,它们的性能都是非常优异的,且不说F5的抗并发能力,LVS现在在全世界范围内的应用,而且淘宝现在升级架构,也将LVS取代了F5,HAProxy可能大家不是特别熟悉,但它确实在生产环境下表现优异,强大的吞吐能力,稳定性比之硬件过尤不及,再说下Nginx,我是将Nginx/HAProxy+Keepalived架构用于了各种生产环境中的,经过长时间的线上观察,发现Nginx/HAProxy作为负载均衡器/反向代理也很稳定,就算并发压力过大,我们前面可以用F5/LVS来顶,而将Nginx作为中层代理,这样的效果其实也不差,所以负载均衡层的压力不能算是特别大。

WEB层这块压力比较大的网站现在都换成了Nginx作为WEB应用服务器,事实上,它的抗并发能力确实超过了预期;我朋友维护的一家门户网站,高峰期时某台Nginx应用服务器的并发达到了一万以上,但Nginx也很负责和稳定的提供服务,在实际的生产环境中,如果我们考虑到后端的数据库服务时,一万并发应该也算是一个比较大的数值了;另外,Linux集群有一个优势,就是它的高扩展性,就算我们的网站的并发有一万以上,我们后端的WEB服务是Apache,我们多加几台Apache服务器即可,在实际的线上维护时,我们发现,高峰期间,实际上每台WEB的并发并不算是特别大,所以网站的压力在这一层我们也能通过技术手段加以克服。

再说下文件服务器层,由于网站的后期宣传策话,名气也越来越大,PV值也越来越高,原先的DRBD+Heartbeat+NFS(这个其实也只是单NFS,只不过我们利用DRBD来保证NFS的高可用而已)已经越来越顶不住压力了,这个时候我们想到了分布式文件系统,我测试的的是MooseFS,在内网测试了很长时间还是没敢用到生产环境下面,googel的分布式文件系统还是很成熟的,推荐大家学习;最后还是用采用以前的CDN传统的方法解决这个问题,即用了squid反向代理加速器来解决小文件过多的问题,Nginx强大的正则处理分发能力,也让后端的NFS压力变得很小;另外,我还用采用域名的分散策略例如使用pics.xxx.com/pdf.xxx.com...来区分标记为a或b的一系列文件,这些文件存储的时候,依然按照标记,存到pics或pdf的服务器上。这个策略将区分机器的任务交由dns服务器来执行,扩容时会相应轻松。这需要web项目初期就规划好这些东东,后期才转用域名策略的成本比较高甚至不可以实现,大家可以注意下,其实这一层如果网站是专业的图片服务器网站时压力还是很大的,我们需要在这个上面投入足够多的硬件资源。

最后说下数据库层的压力,我觉得网站的PV和并发上去以后,数据库这块的压力是最大的,CDN大型广告网站我们用的是oracle RAC方案,它保证了数据的高可用性,当然了价格也是非常昂贵的(如果使用高配置的PC服务器,Oracle一般按照CPU个数收费);那么免费的MySQL数据库,面对这种并发压力大的情况,又用哪些方法呢?首先,我们说下传统的MySQL主从方案,配置简单,单机MySQL优化做好事性能也不弱,如果这种架构解决不了数据库的压力情况,我们可以考虑以下几种方案:

常规复制架构--Master-slaves,是由一个Master复制到一个或多个Salve的架构模式,主要用于读压力大的应用数据库端廉价扩展解决方案,读写分离,Master主要负责写方面的压力。级联复制架构,即Master-Slaves-Slaves,这个也是为了防止Slaves的读压力过大,而配置一层二级 Slaves,很容易解决Master端因为附属slave太多而成为瓶劲的风险。

Dual Master与级联复制结合架构,即Master-Master-Slaves,最大的好处是既可以避免主Master的写操作受到Slave集群的复制带来的影响,而且保证了主Master的单点故障。

MySQL的数据库切分,我们可以通过数据切恰好技术将一个大的MySQL Server切分成多个小的MySQL Server,既解了写入性能瓶颈问题,同时也一次提升了整个数据库集群的扩展性,从而解决了数据库压力过大的问题,这个现在也是我在生产环境中比较推荐的做法之一。

事实上我也跟许多系统维护人员和MySQL DBA线下交流过,现在生产环境下用得比较多的MySQL架构有:一、MySQL一主一从(这个优化得好,百多万PV的网站完全没问题);二、DRBD+Heartbeat+MySQL(MySQL官方推荐);三、MySQL一主多从,读写分离,LVS或HAProxy作读的LB。

这段时间一直跟老男孩前辈交流千万级PV的网站架构,系统架构其实是件艺术活儿,我们应该尽量做到以下几点:一、保证高可用;二、保证高可扩展性;三、尽量把用户往外面推(老男孩语),足矣。

分享到:
评论

相关推荐

    反伊网站压力测试

    标题“反伊网站压力测试”可能指的是针对特定目标网站进行的压力测试,可能是为了找出系统瓶颈、确定其承受攻击的能力或者优化网站性能。 压力测试通常包括以下几个步骤: 1. **测试规划**:在开始测试前,需要...

    webcc网站压力测试工具.zip

    综合来看,WebCC网站压力测试工具提供了一站式的解决方案,帮助用户深入了解网站在高流量环境下的表现和安全性,是网站运营和维护不可或缺的一部分。通过使用这款工具,用户能够提前发现并解决潜在的问题,提高网站...

    Web网站压力测试工具

    在进行Web网站压力测试时,我们首先需要设计测试场景,考虑用户的行为模式,如登录、浏览、搜索、提交表单等。然后,根据需求设置测试参数,比如并发用户数、循环次数、思考时间等。接着,运行测试并监控系统性能,...

    网站负载压力测试工具(单机版)

    五、其他常用的网站压力测试工具 除了单机版工具外,还有一些更专业的多节点分布式测试工具,如JMeter、LoadRunner、 Gatling等,它们能处理更大规模的压力测试,但对硬件和操作技能的要求也更高。 总结,网站负载...

    网站压力测试软件

    网站压力测试是评估Web应用程序在高并发访问或大量请求下的性能和稳定性的重要步骤。Microsoft的Web Application Stress Tool (WAS) 是一款强大的工具,专为Web应用的压力和负载测试而设计。这款工具允许开发者和...

    was 微软的 网站压力测试工具

    在IT行业中,网站压力测试是确保服务质量和用户体验的关键环节,特别是对于那些需要处理大量并发请求的大型网站或电子商务平台。 **WAS工具详解** 1. **功能介绍**:WAS主要用于模拟多用户并发访问,它能生成并...

    网站压力测试工具集合 一共三个

    在你提供的压缩包“网站压力测试工具集合 一共三个”中,很可能包含了以下三款常用的压力测试工具: 1. **Apache JMeter**:这是一个开源的Java应用,用于进行负载和性能测试。JMeter可以测试静态和动态资源(如...

    网站压力测试工具

    网站压力测试工具是一种用于评估和优化网站性能的关键软件。它模拟多个用户同时访问网站或应用,以检测系统在高负载下的稳定性和响应速度。这样的工具对于开发者、运维人员以及性能测试工程师来说非常重要,因为他们...

    EasyWebLoad网站负载压力测试工具

    EasyWebLoad是一款强大的网站负载压力测试工具,专为评估和优化网站在高并发访问下的性能而设计。在网站开发和运维过程中,理解系统的承载能力、响应时间和稳定性至关重要,而EasyWebLoad正好能满足这些需求。这款...

    网站压力测试程序----附带java源码

    网站压力测试是评估一个网站在高并发访问下性能的关键步骤,它可以帮助我们了解系统在大量用户同时访问时的稳定性和可扩展性。本资源提供的是一款用Java编写的网站压力测试程序,通过分析其源码,我们可以深入理解...

    webserver网站压力测试工具

    webserver网站压力测试工具webserver网站压力测试工具webserver网站压力测试工具webserver网站压力测试工具webserver网站压力测试工具

    最新网站服务器CC压力测试系统全开源源码

    在测试之前,您 需要设置好测试模式和测试参数,以便系统可以模拟真实的高 流量访问。然后,您可以运行测试工具并监控测试结果,以便 及时发现服务器性能问题并进行优化。 CC压力测试系统源码的安装步骤 下载CC压力...

    数据库压力解决方法及网站大流量压力应对

    综合以上策略,我们可以根据实际的业务需求和资源限制,制定出适合的数据库压力解决方案,以保证网站在面临大流量时仍能提供稳定、快速的服务。在实施过程中,需注意成本效益,用最少的资金换取最大的性能提升。

    网站压力测试工具(网站压力测试软件)v1.2.0.0免费绿色版

    网站压力测试工具可以测试不同上网方式、不同地区、访问Web不同页面、在不同并发访问密度情况下的客户端响应时间、流量和流速,实现极高的服务器测试,数据精准。网站压力测试软件适用于所有windows平台,操作简单,...

    简单的网站压力测试软件

    在IT领域,网站压力测试是确保应用程序稳定性和可扩展性的重要环节。本文将详细介绍一个使用C#线程池技术构建的简单压力测试工具,该工具旨在解决某些在本地运行良好但在线上环境中出现问题的情况。 【描述】 压力...

    关于网站负载压力的测试工具

    网站负载压力测试是确保Web应用程序稳定性和性能的关键环节。它主要目的是模拟大量用户同时访问网站,以检测系统在高负载下的响应时间、处理能力以及资源消耗情况,从而找出潜在的性能瓶颈、稳定性问题或者系统崩溃...

    网站压力测试

    网站压力测试是评估和优化网站性能的关键环节,其目的是确定一个网站在高负载或大量并发用户访问时的稳定性和响应速度。通过模拟真实的用户行为,压力测试可以帮助我们了解网站的极限承载能力,发现潜在的性能瓶颈,...

    WEB网站压力测试

    总的来说,WEB网站压力测试是确保网站在高负载环境下稳定运行的重要手段。通过WAS等工具进行科学的压力测试,可以提前发现和解决问题,提高网站的用户体验和整体质量。在实际操作中,应根据具体项目需求和资源...

Global site tag (gtag.js) - Google Analytics