ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:1.18MB ,
资源ID:7419892      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7419892.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(线上代码压测问题梳理排查总结.docx)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

线上代码压测问题梳理排查总结.docx

1、序 近期在对阿里云服务器做压力测试,因为webbench ,ab两个工具的压力测试结果和loadrunner,jemer的压测结果相关太远,有上百倍的差距,也是让我们百思不得其解,非常干扰思路.所以对ab,webbench做了简单测试~ 压测工具简介: 工具 简介 级别 Ab ab - Apache HTTP server benchmarking tool 轻量级(比webbench稍强大) Webbench webbench - simple forking web benchmark 轻量级 jmeter Apache JMeter是Apache组织开发

2、的基于Java的压力测试工具 中级 loadrunner HP研发,收费版,但国内早破解泛滥,有window(6G),linux(1.6G)版本 重量级/专业级 ------loadrunner几尽为国内测试人员的专用压测工具,他的高度灵活性,数据分析功能,图表展示,用户行为模拟等功能非常强大,专业压测还是以loadrunner为准------ 并发1000概念理解 这里需再强调下并发的概念,以并发1000为例: 这里的并发1000是针对用户来说,而非服务器每秒并发请求数.即每秒有1000用户(每秒有多次或多种行为)同时对服务器发起请求 Webbench 每秒请求

3、数测试 -t 指定压测时间 -c 指定并发用户数(非请求数) -f 零等待服务器响应 如下图做了简单的性能压测.可以看出webbench模拟一个client相当于每秒有264.8个请求,,如果并发压-c 1000clients,相当于每秒有1000*264.8请求~想想也是相当凶残~~ Ab每秒请求数测试 -n 设置请求总数 -c 设置并发client数量 如图可以看出ab模拟一个client相当于每秒有268.04有个请求,,如果并发压-c 1000clients,相当于每秒有1000*268.04请求 ab/webbench如何模拟用户行为 业界一直

4、认为loadrunner是最专业的,ab,webbench相比之下哪里不专业了呢,测试同学的说法是webbench,ab只进行了2次握手就离开继续下一次新请求,这里个人觉得不靠谱,我们模拟一次测试验证下.这里有遇到一个问题,如果去抓取一个用户数据包.ab的功能就有大显身手了,只压一个数据包. ab -n 1 -c 1 -k ' 同时在被压测机抓包 http请求数据流解析 抓包命令 tcpdump -i eth0 ip host web-yv4 and port ! 22 tcpdump -i eth0 ip host 10.169.11.99 and 10.171

5、215.112 and dst port 80 tcpdump flags TCP Flag Flag in tcpdump Flag Meaning SYN s Syn packet, a session establishment request. The first part of any TCP connection. ACK ack Ack packet, used to acknowledge the receipt of data from the sender. May appear in conjunction with other fla

6、gs. FIN f Finish flag, used to indicate the sender’s intention to terminate the connection to the receiving host. RESET r Indicates the sender’s intention to immediately abort the existing connection. PUSH p Signals the immediate push of data from the sending host to the receiving host. For

7、 interactive applications such as telnet, the main issue is the quickest response time, which this “push” flag signals. URGENT urg Urgent data should take precedence over other data. For example, a Ctrl-C to terminate a FTP download. Placeholder . If the connection does not have a syn, finish,

8、 reset, or push flag set, this placefolder flag will be found after the destination port. Note that it also appears in conjunction with the ack flag. SYN表示建立连接, FIN表示关闭连接, ACK表示响应, PUSH表示有 DATA数据传输, RST表示连接重置。 码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish

9、结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码) 如下范例是一条完整的http数据流分析 19:28:31.951855 IP 58.246.240.122.63798 > 112.124.45.184.http: Flags [S], seq 3672193843, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0 //client58.246.240.122通过63798向WebServer

10、112.124.45.184发起一条序列号为3672193843,win size为8192,没有数据的SYNC请求 //第一次握手 19:28:31.951889 IP 112.124.45.184.http > 58.246.240.122.63798: Flags [S.], seq 38994743, ack 3672193844, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0 //WerServer回应ack收到并发送一条seq为38994743 //第二次握手 19:28:32.20

11、7276 IP 58.246.240.122.63801 > 112.124.45.184.http: Flags [S], seq 3586463872, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0 //(应该)前两次握手失败,重新发起一次新一轮握手请求 //第一次握手 19:28:32.207304 IP 112.124.45.184.http > 58.246.240.122.63801: Flags [S.], seq 1159592009, ack 3586463873, win 1460

12、0, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0 //第二次握手 19:28:32.361241 IP 58.246.240.122.63798 > 112.124.45.184.http: Flags [.], ack 1, win 16425, length 0 //第三次握手,三次握手至此结束 //client回应收到 19:28:32.361403 IP 58.246.240.122.63798 > 112.124.45.184.http: Flags [P.], seq 1:350, ack 1, win

13、 16425, length 349 //client发起ack应答并PUSH一条长度为349大小数据的请求 19:28:32.361419 IP 112.124.45.184.http > 58.246.240.122.63798: Flags [.], ack 350, win 123, length 0 //webserver应答seq为350的请求. 19:28:32.361945 IP 112.124.45.184.http > 58.246.240.122.63798: Flags [P.], seq 1:241, ack 350, win 123, length 240

14、 //webserver应答并PUSH一条长度为240大小的数据 19:28:32.383558 IP 58.246.240.122.63801 > 112.124.45.184.http: Flags [.], ack 1, win 16425, length 0 //client应答ack1表示收到数据 19:28:32.613585 IP 58.246.240.122.63798 > 112.124.45.184.http: Flags [.], ack 241, win 16365, length 0 //client应答ack241表示收到数据 19:28:37.38484

15、7 IP 58.246.240.122.63801 > 112.124.45.184.http: Flags [F.], seq 1, ack 1, win 16425, length 0 //client应答ack1并起一条seq为1的FIN断开请求 //第一次挥手 //tcp状态置为timewait状态 19:28:37.384949 IP 112.124.45.184.http > 58.246.240.122.63801: Flags [F.], seq 1, ack 2, win 115, length 0 //webserver回应收到seq为1的请求并也发起一条seq为

16、1的FIN断开请求 //第二次挥手 //tcp状态置为close_wait状态 19:28:37.445546 IP 58.246.240.122.63801 > 112.124.45.184.http: Flags [.], ack 2, win 16425, length 0 //client应答表示收到seq为1(这里的ack=1是syn+1)的请求 //第三次挥手 //tcp状态置为closed状态 19:28:42.418048 IP 58.246.240.122.63798 > 112.124.45.184.http: Flags [.], seq 349:350,

17、ack 241, win 16365, length 1 19:28:42.418073 IP 112.124.45.184.http > 58.246.240.122.63798: Flags [.], ack 350, win 123, options [nop,nop,sack 1 {349:350}], length 0 //第四次挥手 //server发起一 我们具体来看下ab/webbench访问的过程请求,我们会发现是webserver先发起断开请求, loadrunner用户行为测试 Ok至此,webbench/ab 和 loadrunner有用户行为

18、分析完毕,大家可能也有留意到webserver在这过程中断开请求的行为是不一样的.粗心的同学就会有下文的悲剧,满世界在找webserver端有TIMEWAIT的问题~~ 压测工具小结 a> Webbench/ab默认使用http1.0协议 b> loadrunner默认使用http1.1协议 c> webbench/ab一个client每秒的请求数可达到270左右 d> 专业的压测工具建议选择loadrunner/jmeter e> Webserver针对ab/webbench/loadrunner/jmeter的响应是完全不一样的 f> 了解并发的概念 -----------

19、对于压测工具,了解到如上程度也差不多了~~但要想更深入,下文必看~~ 上面的这些介绍,相信对压测工具已经有所了解,但我们压测过程中遇到的问题却远没有解决. 1. webserver为什么刚开始请求就有timewait状态? 2. 一台机器的实际并发竟然有多少? 3. pm.max_children 和 worker_processes 究竟多少性能会达到最佳 4. yaf框架相对原生php环境性能空间有多少亏损 终于找到压测刚开始webserver有很多TIME-WAIT的问题了? 大家知道,nginx在针对请求如果开启keepalived_tim

20、eout,在超时范围内是不会主动断开请求连接, 且一般是请求发起方会先发起FIN主动断开连接,那我们服务器上那么多的TIMEWAIT是哪里来的呢?刚开始压测就发现服务器有近1.3w的TIME-WAIT状态.而且这些状态不是后端php的,是80端口的 验证keepalived_timeout生效问题 Keepalived_time = 0时的数据包请求过程 我们可以看出是webserver主动发起FIN包断开连接.这个是正常的 Keepalived_time = 60时的数据包请求过程 还是webserver主动断开请求~~,这个也太不正常了,难道是keepalived

21、一直没有生效或者是nginx重启失败(安全期间一直用的是restart,没有用reload)? 手动浏览器访问 Firefox访问测试 抓出来的数据一片混乱~~,经测试同学专业建议,改用IE访问测试. IE访问测试 经如上几轮测试,大家应该可以认定keepalived是生效的 抓包分析ab/webbench请求 Tcp抓取ab/webbench的数据包分析也是有keepalived包头,但keepalived是不生效的,但为什么不生效呢??... 虽然问题根源没有找到,但经过测试,我们最少发现 1> IE访问和FIREFOX访问的区别,IE相对更”干净

22、些; 2> 不管NGINX keepalived_timeout = 0还是60,使用ab/webbench的情况下都是webserver先断开服务器链接 3> 正常访问的方式,keepalived_timeout是生效的 内鬼-Http协议 久查无果,也是相当伤脑筋. 大师说:在没有思路的时候多出去走走. 果不其然,放松之后头脑也慢慢变清醒,有一个关键事件一直没有关注---日志---!!一直沉浸在问题数据流层面,同时也是因为压测数据量很大,对nginx日志的关注度略有降低,迅速拎来日志粗看就发现问题了~webbench/ab和loadrunner访问请求是完全不一样的. webbe

23、nch/ab用的是 http 1.0的协议, loadrunner走的是http1.1的协议~~~~~~ Ab/webbench是否支持http1.1协议呢~ 再看webbench/ab help说明 1> Webbench - 支持; 2> ab - “It does not implement HTTP/1.x fully”; === è 专业的压测工具还是用loadrunner吧~~~ http1.0/1.1 那http1.0和http1.1究竟有什么区别呢,导致服务器的行为有如此大的区别? 一个WEB站点每天可能要接收到上百万的用户请

24、求,为了提高系统的效率,HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求 在tcp/ip 3次握手4次挥手中,主动发送FIN状态要求断开连接方TCP状态会被置为TIMEWAIT状态,被断开方TCP状态会被置为CLOSEWAIT状态.正因为这样的原因,所以每次压测都会出现在keepalived-time超时时长内webserver就会有TIMEWAIT状态.为了验证,我们改用loadrunner来测试. 确认loadrunner访问原理 1. 先对比n

25、ginx访问日志,我们会发现,webbench调用的是服务器本地的浏览器内核来访问甚至可以定义用什么浏览器来访问 2. Nginx访问日志没有异样的情况下我们用tcpdump来查看一次完整的http请求是否和正常访问的方式一样。 2.1> 设置nginx中keepalived-timeout = 30s,tcpdump抓取loadrunner来看数据流向。我们看到是client先断开连接 2.2> 如果Keepalived-timeout = 0会不会是webserver先断开连接呢?对的,看下图tcpdump抓到的数据 再来看服务器各状态汇总,在高并发状态下,每种状态

26、都有 http请求数远多于tcp/ip请求 在一次http压包测中我们发现服务器请求中http请求数远多于tcp/ip协议请求数.这个是什么原因呢?难道loadrunner访问模拟的是浏览器有cache的这种方式,只有第一次访问是全新访问,后面的访问全部都是f5刷新方式的访问? f5和ctrl+f5的区别 从上面这个图我们也可以看到,f5的请求和ctrl+f5的请求是有很大区别的。对服务器的压力也一定相关巨大!并发的概念中是每次请求都是全新请求还是第一次请求是全新请求就可以了? 小结 1. Webbench/ab 因为和loadrunner运行方式不同,所以导致服务器的有大量的TIMEWAIT存在 2. 专业的压测工具请用loadrunner 3. http1.1和http1.0是两种实现方式完全不同的协议 4. loadrunner每次的访问都是全新的请求访问 5. 对并发请求的概念有新的质疑(全新访问还是第一次访问全新的呢?) 下一节: Linux下运行loadrunner和window运行loadrunner的区别 如何迅速定位合作伙伴的协作能力

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服