当前位置: 首页 > 科技观察

网站上线无忧:网站压力与性能测试

时间:2023-03-18 11:49:32 科技观察

项目上线前,我们需要做压力测试。目的就是看我们的网站能承受多大的压力,能承受多少并发量。如果我们不做压力测试,一旦流量很大,我们的网站就会挂掉。1、Webbench测试并发Webbench是Linux下的网站压力测试工具,可以测试不同服务在同一硬件上的性能,以及同一服务在不同硬件上的运行状态。Webbench的标准测试可以向我们展示服务器的两个方面:每分钟对应的请求数和每秒传输的数据量。webbench最多可以模拟30000个并发连接来测试网站的负载能力。测试环境为LinuxUbuntu1,安装1.1installctagsapt-getinstallexuberant-ctagsctags作为webbench1.2的依赖下载安装官网:http://home.tiscali.cz/~cz210...root@corwien:~#wgethttp://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gzroot@corwien:~#tarzxvfwebbench-1.5.tar.gzroot@corwien:~#cdwebbench-1.5/root@corwien:~/webbench-1.5#makeroot@corwien:~/webbench-1.5#makeinstallroot@corwien:~/webbench-1.5#webbenchwebbench[选项]...URL-f|--forceDon'twaitforreplyfromserver.-r|--reloadSendreloadrequest-Pragma:no-cache.-t|--timeRunbenchmarkforseconds.Default30.-p|--proxyUseproxyserverforrequest.-c|--clientsRunHTTPclientsatonce.Defaultone.-9|--http09UseHTTP/0.9stylerequests.-1|--http10UseHTTP/1.0protocol.-2|--http11UseHTTP/1.1protocol.--getUseGETrequestmethod.--headUseHEADrequestmethod.--optionsUseOPTIONSrequestmethod.--traceUseTRACErequestmethod.-?|-h|--helpThisinformation.-V|--versionDisplayprogramversion.2,测试用法://webbench-c并发数-t运行测试时间URLwebbench-c100-t10http://baidu.com/这里我们用百度做个实验^_^:测试结果:结果分析:每秒响应请求数:1443/60=Xpages/sec,每秒传输的数据量为2691621字节/秒。当并发数为500时,已经有1402个请求成功,已经有41个连接显示失败,说明过载了。3、总结:压力和性能测试应该在产品上线前做,而不是上线后;测试时要逐渐增加并发,比如并发100时,观察网站负载和页面打开是否流畅,并发200时是多少,网站打开时的并发是多少慢,打不开网站时的并发度是多少;对某个页面进行更细致的测试,比如电商网站可以重点测试购物车、促销页面等,因为这些页面占整个网站访问量的比例比较大。备注:webbench在做压力和性能测试的时候,软件本身也会消耗CPU和内存资源。为了测试准确,建议在其他服务器上安装webbench,以获得更准确的测试数据。2、在实战中学会了如何使用webbench做压力测试。现在我用这个工具来测试我的博客。我的博客服务器使用的是阿里云ECS。当并发量在100到500时,查看服务器的CPU使用率和内存使用率,当并发数过大时,CPU会不会被占满,此时网站是否还能正常访问,我们的目的是衡量网站能承受多少并发量。1、使用top命令查看服务器资源使用情况。实测前,先了解一下top命令的参数含义:top命令是Linux下常用的性能分析工具,可以实时显示系统中各个进程的资源使用情况,类似于Windows.任务管理器。top显示系统的当前进程和其他情况。它是一个动态的显示过程,即可以通过用户按键不断刷新当前状态。如果命令在前台执行,它将独占前台,直到用户终止程序。更准确地说,top命令提供了对系统处理器的实时状态监控。它将显示系统中对CPU最敏感的任务列表。该命令可以按照CPU使用率、内存使用率和执行时间对任务进行排序;和命令的许多功能可以通过交互式命令或在个人自定义文件中设置。root@hey:~#top-d2top-01:22:59up690days,9:42,1user,loadaverage:0.09,0.05,0.05Tasks:117total,2running,115sleeping,0stopped,0zombie%Cpu(s):0.0us,0.5sy,0.0ni,99.0id,0.0wa,0.0hi,0.0si,0.5stKiBMem:1016272total,886640used,129632free,163252buffersKiBSwap:122total,1772free10449744cachedMemPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND15875root200139156150489420S0.51.515:17.66AliYunDun1root200333721388320S0.00.10:21.49init2root200000S0.00.00:00.00kthreadd统计信息区前五行是系统整体的统计信息。Thefirstlineisthetaskqueueinformation,whichisthesameastheexecutionuptime命令的结果。其内容如下:01:22:59当前时间up690days,9:42,系统运行时间,格式为日,时:分1user,当前登录用户数loadaverage:0.09,0.05,0.05系统负载,即任务队列的平均长度。三个数值分别是1分钟、5分钟、15分钟前到现在的平均值。第二行和第三行是进程和CPU信息。当有多个CPU时,这些可能会超过两行。内容如下:totaltotaltotalprocessesrunningnumberofrunningprocessesnumberofsleeperprocessesstoppednumberofstoppedprocesseszombiezombieprocesses用户进程空间中优先级发生变化的进程占用CPU的百分比为98.7%idCPU空闲百分比0.0%waCPU等待输入输出时间百分比0.0%hi:硬件CPU中断占用百分比0.0%si:软中断占用百分比0.0%st:虚拟机内存信息机器占用率***两行。内容如下:Mem:191272ktotaltotaltotalphysicalmemory173656kusedtotalphysicalmemoryused17616kfreetotalfreememory22052kbuffersusedaskernelcachememory123988kcached缓存交换区的总量,内存中的内容换出到交换区,并且然后换入内存,但是使用过的交换区还没有被覆盖,这个值就是这些内容已经存在于内存中的交换区当相应的内存再次换出时,不需要写入交换区。进程信息区中统计信息区的下方显示了各个进程的详细信息。首先,让我们了解每一列的含义。序列号列名称含义aPID进程idbPPID父进程idcRUSERRealusernamedUID进程所有者的用户ideUSER进程所有者的用户名fGROUP进程所有者的组名gTTY启动进程的终端名称。不是从终端启动的进程显示为?hPR优先级iNInice值。负值表示高优先级,正值表示低优先级jP***使用的CPU,只在多CPU环境下有意义进程,单位是秒mTIME+进程使用的CPU总时间,单位是1/100秒n%MEM进程使用的物理内存百分比oVIRT进程使用的虚拟内存总量,单位是知识库。在VIRT=SWAP+RESpSWAP进程使用的虚拟内存中,换出的大小以kb为单位。qRES进程使用且未换出的物理内存大小,以kb为单位。RES=CODE+DATArCODE可执行代码占用的物理内存大小,单位kbsDATA可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kbtSHR共享内存大小,单位kbunFLT缺页次数vnDRT***once自写入以来已修改的页数。wS进程状态(D=不间断睡眠状态,R=running,S=sleeping,T=tracking/stopping,Z=zombieprocess)xCOMMAND命令名/命令行yWCHAN如果进程在休眠,会显示休眠的系统函数名zFlags任务标志,参考sched.h默认只显示PID,USER,PR,NI,VIRT,RES,SHR,S,%CPU,%MEM,TIME+,COMMAND重要列。可以通过以下快捷键更改显示内容。更改显示内容按f键可以选择显示内容。按f键后会显示一列列,按a-z显示或隐藏相应列,最后按回车键确认。按o键更改列的显示顺序。小写的a-z将相应的列向右移动,大写的A-Z将相应的列向左移动。***按回车键确认。按大写的F或O键,然后按a-z按相应列对进程进行排序。大写R键可以反转当前排序。该命令使用top,使用格式top[-][d][p][q][c][C][S][s][n]参数说明d指定每两次屏幕信息刷新的时间间隔。当然,用户可以使用s交互命令来改变它。p通过指定监控进程ID,只监控一个进程的状态。q此选项将使顶部刷新没有任何延迟。如果调用程序具有超级用户权限,那么top将以尽可能高的优先级运行。S指定累积模式s使top命令在安全模式下运行。这消除了交互式命令带来的潜在危险。i使top不显示任何空闲或死进程。c显示整个命令行而不只是命令名2.压测同时查看服务器top资源使用情况1),500并发压测root@corwien:~#webbench-c500-t60http://myblog.com/index.php压测结果:500个并发请求,60秒内,2172个成功请求,225个失败请求我们看一下压测时服务器的资源使用情况:通过上面三张图我们可以看到,当500并发压测,idleCPU百分比越来越小,从99.0id到41.3id再到0.0id,压测结束后,又回到正常水平,99.0id。意思是我的网站无法处理500并发,CPU资源耗尽。如果此时访问我的网站,就会出现502。因此,根据压测结果,可以更好的提升网站的硬件配置,对网站进行静态优化。