• JMeter一个错误the target server failed to respond--JMeter坑


    问题:1、在测试一个http景象,特别是集波动TPS时刻,出现了一个错误。它现在是一个必须错误(压力顺利时却零星的错误,甚至很少见);



    每次必现错误(開始一直怀疑是网络或程序的问题)


      2、失败事务报错信息例如以下,我遇到的是以下的那种

    • Socket closed
    • Non HTTP response code: org.apache.http.NoHttpResponseException (the target server failed to respond)

    资料查询:https://wiki.apache.org/jmeter/JMeterSocketClosed

    问题原因:在JMeter下,发送http 请求时,一般都是默认选择了use keepAlive(这个是什么?看后面资料),这个是连接协议,JMeter坑就在这里,默认勾选了这个(假设不勾选的话,也不会保存)。但其配置JMeter.properties中的时间设置默认却是注销的,也是是说,不会等待,一旦连接空暇,则立刻断开了,导致我们压測中出现了事务失败的情形。

    解决:改动httpclient4.idletimeout=<time in ms> 设置成自己认为合理的时间,一般可设置成10-60s(表示连接空暇10s后才会断开),注意这边单位是ms。

    改动完毕后再次压測,错误不再有了。


    *********************************************************

    《版权归作者lzqinfen@126.com全部。请勿乱转载》

    *****************************************相关资料------------------------------------------------------------------------

    HTTP无状态协议和Connection:Keep-Aliveeasy犯的误区

    名词解释:
    HTTP无状态:无状态是指协议对于事务处理没有记忆能力,server不知道client是什么状态。从还有一方面讲,打开一个server上的网页和你之前打开这个server上的网页之间没有不论什么联系
    假设你要实现一个购物车。须要借助于Cookie或Session或server端API(如NSAPI and ISAPI)记录这些信息,请求server结算页面时同一时候将这些信息提交到server
    当你登录到一个站点时,你的登录状态也是由Cookie或Session来“记忆”的,由于server并不知道你是否登录
    长处:server不用为每一个client连接分配内存来记忆大量状态,也不用在client失去连接时去清理内存。以更高效地去处理WEB业务
    缺点:client的每次请求都须要携带对应參数。server须要处理这些參数
     
    Keep-Alive:參考另外一篇文章HTTP Keep-Alive 具体解释
     
    easy犯的误区:
    1、HTTP是一个无状态面向连接的协议。无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)
    2、从HTTP/1.1起。默认都开启了Keep-Alive。保持连接特性,简单地说。当一个网页打开完毕后,client和server之间用于传输HTTP数据的TCP连接不会关闭,假设client再次訪问这个server上的网页,会继续使用这一条已经建立的连接
    3、Keep-Alive不会永久保持连接,它有一个保持时间。能够在不同的server软件(如Apache)中设定这个时间
     

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    阿里数据中台底座的12年建设实践
    淘宝小部件:全新的开放卡片技术!
    判断QQ是否在线
    Linux消息队列应用
    轻松学习Linux之如何创建可执行脚本
    JAVA多线程学习笔记
    轻松学习Linux之Shell文件和目录属性详解
    Firefox必备的24款web开发插件
    数论+图论+map——cf1323E
    【codevs1116】四色问题
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4850944.html
Copyright © 2020-2023  润新知