你想建立一个能承受500万PV/天的网站吗?500万PV是什么概念?服务器每秒必须处理多少个请求?如何计算?什么是PV:PV是pageview的缩写。PV是指页面的访问次数。每次打开或刷新页面时,都将其视为一个PV。计算模型:每台服务器每秒处理的请求数=((PV总量的80%)/(24小时60分60秒40%))/服务器数量。关键参数是80%和40%。这意味着一天中80%的请求发生在一天中40%的时间内。24小时的40%是9.6小时,80%的请求发生在一天9.6小时(非常适合互联网应用,白天请求多,晚上请求少)。简单计算结果:((80%500万)/(24小时60分60秒40%)/1=115.7请求/秒((80%100万)/(24小时60分60秒40%))/1=23.1requests/second初步结论:现在我们在做压力测试的时候有个标准,如果你的服务器每秒能处理115.7个请求,那么它可以承受500万个PV/天。如果你的服务器每秒能处理23.1个请求,可以承受100万PV/天足够的margin:上面的请求数在一天的9.6小时内均匀分布,但实际情况并不是那么均匀分布,会有波峰和波谷。为了应对高峰期要留有余地,至少x2次,x3次也不算太多115.7requests/s*2times=231.4requests/s115.7requests/s*3times=347.1requests/s23.1requests/s*2times=46.2requests/s23.1requests/s3times=69.3requests/second最后结论:如果你的服务器可以处理231.4--347.1requests/secondpersecond,它可以处理平均500万个PV/天。如果你的服务器每秒可以处理46.2--69.3个请求,那么它平均可以处理100万个PV/天。解释:这里是每秒N个请求,也就是QPS。因为我关心的是应用处理业务的能力。实践经验:1、根据实践经验,使用两台常规配置的机架式服务器。配置很普通,比如4核CPU+4G内存+服务器SAS硬盘。2、硬盘的性能很重要,尤其是数据库服务器。一般服务器配置15000转SAS硬盘,高级的可以配置SSD固态硬盘,性能更好。最重要的指标是“随机读写性能”而不是“顺序读写性能”。(本例配置最常见的15000转SAS硬盘。)3、一台服务器运行Tomcat并运行j2ee程序,一台服务器运行MySql数据库。程序写得中等水平(这个真的很难量化)。应用类型(总是有回复,不好做缓存,不能一成不变)。4、在以上软硬件条件下,可承受100万PV/天。(有余量应对突然的访问高峰)注意机房的网络带宽:有人说我满足了以上条件,但实际性能还是达不到目标。这个时候请注意你外网的带宽。在中国,服务器很便宜,但带宽很贵。很可能你在机房给大家共用一根100M的光纤。事实上,每个人可以获得大约2M的带宽。更好的是5M,更好的是,10M专供二线机房使用,已经很贵了(北京价格)。每天总流量:每页20k字节,100万页/1024=19531M字节=19G字节,19531M/9.6小时=2034M/小时=578K字节/s如果请求均匀分布,5M(640K字节)带宽(5Mb=640KB注意大小写,b是bit,B是byte,相差8倍),但是所有请求不能平均分配,有峰值的时候,5M带宽肯定不够用,X2倍就是10M带宽。10M带宽基本可以满足要求。以上是假设每页20k字节,基本不包含图片。如果包含图片,会比较大,10M的带宽不能满足要求。自己算算。附:性能测试的基本概念基本概念:吞吐量(throughput):按照常规理解,网络吞吐量是指单位时间内通过网卡的数据量的总和,包括网卡发送的数据量本地网卡和接收到的本地网卡接收到的数据量。100Mb(位)双工网卡,最大发送数据速度为12.5M字节/秒,最大接收数据速度为12.5M字节/秒,可以同时发送和接收数据。并发用户数:同时执行操作的用户(线程)数。响应时间:从发送请求到收到响应所花费的时间。QPS-QueriesPerSecond每秒处理的查询数(如果是数据库,相当于读)TPS-TransactionsPerSecond每秒处理的事务数(如果是数据库,相当于写和写)modifying)IOPS,persecond磁盘执行的I/O操作数,比如测试某个数据库,两次测量QPS和TPS。QPS(读)值总是高于TPS(写、修改),呈乘数关系,因为:1、数据库可能有查询的缓存。2、机械硬盘或SSD硬盘的读取比写入快。JMeter测试参数说明:Label:每个测试单元的名称。Samples:表示一个测试单元一共发出了多少请求。Average:平均响应时间——默认为单个Request的平均响应时间。使用TransactionController时,平均响应时间也可以以Transaction为单位显示,不重要。Median:中位数,即50%用户的响应时间。如果响应时间从小到大排序,那么50%的请求响应时间都在这个范围内。重要的。90%Line:用户90%的响应时间,如果响应时间从小到大排序,那么90%的请求响应时间都在这个范围内。重要的。Min:最短响应时间,不重要。Max:***响应时间,出现的概率只有千分之一甚至万分之一,不重要。Error%:本次测试的错误请求数Throughput:吞吐量——默认情况下表示每秒完成的请求数(RequestperSecond)。使用TransactionController时,也可以像LoadRunner一样表示TransactionperSecondnumberofKB/Sec:每秒从服务器接收的数据量(只接收),相当于LoadRunner中的Throughput/Secloadrunner测试参数说明:响应时间:取90%的值,如果响应时间从小到大排序,那么90%的请求响应时间都在这个范围内。重要的。Hitspersecond:每秒命中数,每秒向服务器提交的请求数。TPS:TransactionperSecond,每秒处理的事务数。事务是指客户端向服务器发送请求,服务器响应的过程。Throughput(吞吐量):Loadrunner记录的Throughput是从服务器接收到的总字节数And,与本地发出的字节数无关。Throughput/Sec:每秒的吞吐量。BS架构大体分析响应时间、点击率、吞吐量、TPS(transactionspersecond)。CS架构TPS(transactionspersecond)的一般分析
