2023年11月27日发(作者:)
1, 状态码问题
100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新)
101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新)
200 OK 一切正常,对GET和POST请求的应答文档跟在后面。
201 Created 服务器已经创建了文档,Location头给出了它的URL。
202 Accepted 已经接受请求,但处理尚未完成。
203 Non-Authoritative Information 文档已经正常地返回,但一些应答头可能不正确,因为使
用的是文档的拷贝(HTTP 1.1新)。
204 No Content 没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,
而Servlet可以确定用户文档足够新,这个状态代码是很有用的。
205 Reset Content 没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清
除表单输入内容(HTTP 1.1新)。
206 Partial Content 客户发送了一个带有Range头的GET请求,服务器完成了它(HTTP 1.1
新)。
300 Multiple Choices 客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内
列出。如果服务器要提出优先选择,则应该在Location应答头指明。
301 Moved Permanently 客户请求的文档在其他地方,新的URL在Location头中给出,浏览
器应该自动地访问新的URL。
302 Found 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在
HTTP1.0中对应的状态信息是“Moved Temporatily”。
出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。
注意这个状态代码有时候可以和301替换使用。例如,如果浏览器错误地请求
host/~user(缺少了后面的斜杠),有的服务器返回301,有的则返回302。
严格地说,我们只能假定只有当原来的请求是GET时浏览器才会自动重定向。请参见307。
303 See Other 类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定
的重定向目标文档应该通过GET提取(HTTP 1.1新)。
304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供
If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文
档还可以继续使用。
305 Use Proxy 客户请求的文档应该通过Location头所指明的代理服务器提取(HTTP 1.1
新)。
307 Temporary Redirect 和302(Found)相同。许多浏览器会错误地响应302应答进行重定
向,即使原来的请求是POST,即使它实际上只能在POST请求的应答是303时才能重定向。
由于这个原因,HTTP 1.1新增了307,以便更加清除地区分几个状态代码:当出现303应答
时,浏览器可以跟随重定向的GET和POST请求;如果是307应答,则浏览器只能跟随对
GET请求的重定向。(HTTP 1.1新)
400 Bad Request 请求出现语法错误。
401 Unauthorized 客户试图未经授权访问受密码保护的页面。应答中会包含一个
WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的
Authorization头后再次发出请求。
403 Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文
件或目录的权限设置导致。
404 Not Found 无法找到指定位置的资源。这也是一个常用的应答。
405 Method Not Allowed 请求方法(GET、POST、HEAD、DELETE、PUT、TRACE等)对指定
的资源不适用。(HTTP 1.1新)
406 Not Acceptable 指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的
不兼容(HTTP 1.1新)。
407 Proxy Authentication Required 类似于401,表示客户必须先经过代理服务器的授权。
(HTTP 1.1新)
408 Request Timeout 在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以
在以后重复同一请求。(HTTP 1.1新)
409 Conflict 通常和PUT请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功。
(HTTP 1.1新)
410 Gone 所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和
404的不同在于,返回407表示文档永久地离开了指定的位置,而404表示由于未知的原因
文档不可用。(HTTP 1.1新)
411 Length Required 服务器不能处理请求,除非客户发送一个Content-Length头。(HTTP 1.1
新)
412 Precondition Failed 请求头中指定的一些前提条件失败(HTTP 1.1新)。
413 Request Entity Too Large 目标文档的大小超过服务器当前愿意处理的大小。如果服务器
认为自己能够稍后再处理该请求,则应该提供一个Retry-After头(HTTP 1.1新)。
414 Request URI Too Long URI太长(HTTP 1.1新)。
416 Requested Range Not Satisfiable 服务器不能满足客户在请求中指定的Range头。(HTTP
1.1新)
500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求。
501 Not Implemented 服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器
不支持的PUT请求。
502 Bad Gateway 服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务
器返回了非法的应答。
503 Service Unavailable 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据
库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头。
504 Gateway Timeout 由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得
应答。(HTTP 1.1新)
505 HTTP Version Not Supported 服务器不支持请求中所指明的HTTP版本。(HTTP 1.1新)
2,对一些错误的解决办法。
1.LoadRunner超时错误:在录制Web协议脚本回放时超时情况经常出现,产生错误的原因
也有很多,解决的方法也不同。
错误现象1:Action.c(16): Error -27728: Step download timeout (120 seconds) has
expired when downloading non-resource(s)。
错误分析:对于HTTP协议,默认的超时时间是120秒(可以在LoadRunner中修改),
客户端发送一个请求到服务器端,如果超过120秒服务器端还没有返回结果,则出现超时错
误。
解决办法:首先在运行环境中对超时进行设置,默认的超时时间可以设置长一些,再设
置多次迭代运行,如果还有超时现象,需要在“Runtime Setting”>“Internet Protocol:
Preferences”>“Advanced”区域中设置一个“winlnet replay instead of sockets”选
项,再回放是否成功。
错误现象2:Action.c(81):Continuing after Error -27498: Timed out while
processing URL=172.18.20.70:7001/workflow/bjtel/leasedline/ querystat/
错误分析:这种错误常常是因为并发压力过大,服务器端太繁忙,无法及时响应客户端
的请求而造成的,所以这个错误是正常现象,是压力过大造成的。
如果压力很小就出现这个问题,可能是脚本某个地方有错误,要仔细查看脚本,提示的
错误信息会定位某个具体问题发生的位置。
解决办法:例如上面的错误现象问题定位在某个URL上,需要再次运行一下场景,同时
在其他机器上访问此URL。如果不能访问或时间过长,可能是服务器或者此应用不能支撑如
此之大的负载。分析一下服务器,最好对其性能进行优化。
如果再次运行场景后还有超时现象,就要在各种图形中分析一下原因,例如可以查看是
否服务器、DNS、网络等方面存在问题。
最后,增加一下运行时的超时设置,在“Run-Time Settings”>“Internet
Protocol:Preferences”中,单击“options”,增加“HTTP-request connect timeout” 或
者“HTTP-request receive”的值。
2.LoadRunner脚本中出现乱码:在录制Web协议脚本时出现中文乱码,在回放脚本时会使
回放停止在乱码位置,脚本无法运行。
错误现象:某个链接或者图片名称为中文乱码,脚本运行无法通过。
错误分析:脚本录制可能采用的是URL-based script方式,如果程序定义的字符集合
采用的是国际标准,脚本就会出现乱码现象。
解决办法:重新录制脚本,在录制脚本前,打开录制选项配置对话框进行设置,在
“Recording Options”的“Advanced”选项里先将“Surport Charset”选中,然后选中支
持“UTF-8”的选项。
3.LoadRunner HTTP服务器状态代码:在录制Web协议脚本回放脚本的过程中,会出现HTTP
服务器状态代码,例如常见的页面-404错误提示、-500错误提示。
错误现象1:-404 Not Found服务器没有找到与请求URI相符的资源,但还可以继续运
行直到结束。
错误分析:此处与请求URI相符的资源在录制脚本时已经被提交过一次,回放时不可再
重复提交同样的资源,而需要更改提交资源的内容,每次回放一次脚本都要改变提交的数据,
保证模拟实际环境,造成一定的负载压力。
解决办法:在出现错误的位置进行脚本关联,在必要时插入相应的函数。
错误现象2:-500 Internal Server Error服务器内部错误,脚本运行停止。
错误分析:服务器碰到了意外情况,使其无法继续回应请求。
解决办法:出现此错误是致命的,说明问题很严重,需要从问题的出现位置进行检查,
此时需要此程序的开发人员配合来解决,而且产生的原因根据实际情况来定,测试人员无法
单独解决问题,而且应该尽快解决,以便于后面的测试。
4.LoadRunner请求无法找到:在录制Web协议脚本回放脚本的过程中,会出现请求无法找
到的现象,而导致脚本运行停止。
错误现象:Action.c(41): Error -27979: Requested form not found [MsgId:
MERR-27979]
Action.c(41): web_submit_form highest severity level was “ERROR”,0 body bytes,
0 header bytes [MsgId: MMSG-27178]”
这时在tree view中看不到此组件的相关URL。
错误分析:所选择的录制脚本模式不正确,通常情况下,基于浏览器的Web应用会使用
“HTML-based script”模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含
了与服务器进行交互的Java Applet、基于浏览器的应用中包含了向服务器进行通信的
JavaScript/VBScript代码、基于浏览器的应用中使用HTTPS安全协议,这时则使用
“URL-based script”模式进行录制。
解决办法:打开录制选项配置对话框进行设置,在“Recording Options”的“Internet
Protocol”选项里的“Recording”中选择“Recording Level”为“HTML-based script”,
单击“HTML Advanced”,选择“Script Type”为“A script containing explicit”。然
后再选择使用“URL-based script”模式来录制脚本。
5.LoadRunner不执行检查方法:在录制Web协议脚本中添加了检查方法Web_find,但是在
脚本回放的过程中并没有执行。
错误现象:在脚本中插入函数Web_find,在脚本中设置文本以及图像的检查点,但是
在回放过程中并没有对设置的检查点进行检查,即Web_find失效。
错误分析:由于检查功能会消耗一定的资源,因此LoadRunner默认关闭了对文本以及
图像的检查,所以在设置检查点后,需要开启检查功能。
解决办法:打开运行环境设置对话框进行设置,在“Run-time Settings”的“Internet
Protocol”选项里的“Perference”中勾选“Check”下的“Enable Image and text check”
选项。
6.LoadRunner回放Web Services协议脚本错误:LoadRunner 8.0版本在录制Web Services
协议的脚本时正常,但在回放时会出现错误,提示停止脚本运行。
错误现象:利用LoadRunner 8.0版本来录制Web Services协议的脚本没有任何错误提
示,回放脚本时会出现如下错误提示“Error:server returned an incorrectly formatted
SOAP response”。
错误分析:出现此错误的原因是LoadRunner8.0在录制Web Services协议的脚本时存
在一个缺陷:如果服务器的操作系统是中文的,VuGen会自动将WSDL文件的头改为 version=”1.0″encoding=”zh_cn” ?>,所以才会有此错误提示。 解决办法:下载两个补丁,分别为“LR80WebServicesFPI_”和 “lrunner_web_ services_patch_”安装上即可。 Error -27727: Step download timeout (120 seconds) 最近测试时总出现以下提示:Error -27727: Step download timeout (120 seconds) has expired when downloading resource(s). Set the "Resource Page Timeout is a Warning" Run-Time Setting to Yes/No to have this message as a warning/error, respectively 查阅相关信息说: •A、应用服务参数设置太大导致服务器的瓶颈 •B、页面中图片太多 •C、在程序处理表的时候检查字段太多 Error -27728: Step download timeout (120 seconds) 如何解决 语法检查通过,但是在并发执行一个查询时候报错Action.c(16): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s),请 问有啥子解决方法,我使用web_set_timeout ,好象不起作用,直接在option中设置timeout 时间为600,(单位应该是秒吧)还是没有起作用,结果都还是提示(120seconds),说明还 是以120秒来判断的;使用lrs_set_recv_timeout,语法检查不过,说明库函数里面没有 这个函数。 尝试步骤: 设置超时时间到600秒,回放还是出错。 后来我设置了runt time setting中的internet protocol-preferences中的advaced区域 有一个winlnet replay instead of sockets选项,选项后再回放就成功了。 这个问题很有意思!呵呵!首先LR是通过Microsoft WinInet DLL去录制web协议的!但是 在Control运行的时候它默认通过socket去模拟请求,因为这些可以真实的模拟带宽,而 采用Microsoft WinInet DLL通过这个DLL去访问网卡方式去模拟带宽,使得模拟不是很精 确!而且也不支持unix的应用,但是使用这个确实有时无法处理winnet Dll的一些请求, 我认为是它的一些BUG,比如说:回放时它会检查Content-Length,但是网页支持receive more data时,这时socket模拟会一直等待直到timeout! 先说了一些优缺点,最后回到这个问题!这个问题分两个方面分析: 第一:你要明白web_set_timeout()这个函数的适用范围!比如说一个web_submit_data() 中实际涵盖了10个对Server端的请求,这个函数是针对10个请求的总和时间的!(别犯 低级错误,timeout分了connect,receive以及download三个部分:) ) 第二:就是我解释的上面的一些BUG问题! WinInet dll在新版本中处理请求时可以异步的,就是不再是那种连接等待然后超时模式! 但是LR用的socket是同步请求!只有等到timeout才会退出!microsoft已经明确表示 INTERNET_OPTION_RECEIVE_TIMEOUT不再适用于Microsoft Internet Explorer 5.0,显而 易见,他们处理请求采取了异步处理的方式!呵呵!这下大概可以圆满解释你的问题了!呵 呵 这里,我补充如下: VuGen专用的基于套接字的重播是一种可伸缩以便进行负载测试的轻 型引擎。使用线程时是准确的。基于套接字的引擎不支持socks代理服务器。如果在这样的 环境中录制,应该使用winInet重播引擎。 运行Controller时遇到这个error: Error -27791: Server "10.10.0.88" has shut down the connection prematurely 解决方案如下: 1、应用服务器死掉。小用户时程序上的问题,程序上处理数据库的问题 2、应用服务没有死。应用服务参数设置问题。例如:在许多客户端weblogic应用服务器被 拒绝,而在服务器端没有错误显示,则有可能是weblogic中的server元素的acceptbacklog 属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加 25%。 3、数据库的连接 在应用服务的性能参数可能太小了 数据库启动的最大连接数(跟硬件的内存有关) 4、有时关闭卡巴斯基也会解决如上问题 Error -27979: Requested form not found [MsgId: MERR-27979] Action.c(41): web_submit_form highest severity level was "ERROR", 0 body bytes, 0 header bytes [MsgId: MMSG-27178]" 这时在tree view中看不到此组件的相关URL。 处理方法如下: 1, 打开recording options,在internet protocol下的recording中选择recording level 为HTML-based script,点击HTML Advanced,选择script type为A script containing explicit.即可。 2, 选择使用URL_based script录制。 另外,附上帮助中的这个错误代码的说明: 一、Step download timeout (120 seconds) 这是一个经常会遇到的问题,解决得办法走以下步骤: 1、 修改run time setting中的请求超时时间,增加到600s,其中有三项的参数可以 一次都修改了,HTTP-request connect timeout,HTTP-request receieve timeout,Step download timeout,分别建议修改为600、600、5000;run time setting设置完了后记住 还需要在control组件的option的run time setting中设置相应的参数; 2、 办法一不能解决的情况下,解决办法如下: 设置runt time setting中的internet protocol-preferences中的advaced区域有 一个winlnet replay instead of sockets选项,选项后再回放就成功了。切记此法只对 windows系统起作用,此法来自zee的资料。 二、问题描述Connection reset by peer 这个问题不多遇见,一般是由于下载的速度慢,导致超时,所以,需要调整一下超时 时间。 解决办法:Run-time setting窗口中的‘Internet Protocol’-‘Preferences’设 置set advanced options(设置高级选项),重新设置一下“HTTP-request connect timeout (sec),可以稍微设大一些”; 三、问题描述connection refused 这个的错误的原因比较复杂,也可能很简单也可能需要查看好几个地方,解决起来不 同的操作系统方式也不同; 1、 首先检查是不是连接weblogic服务过大部分被拒绝,需要监控weblogic的连接 等待情况,此时需要增加acceptBacklog,每次增加 25%来提高看是否解决,同时还需要增 加连接池和调整执行线程数,(连接池数*Statement Cache Size)的值应该小于等于oracle 数据库连接数最大值; 2、 如果方法一操作后没有变化,此时需要去查看服务器操作系统中是否对连接数做 了限制,AIX下可以直接vi文件limits修改其中的连接限制数,还有 tcp连接等待时间间 隔大小,wiodows类似,只不过wendows修改注册表,具体修改方法查手册,注册表中有 TcpDelayTime项; 四、问题描述open many files 问题一般都在压力较大的时候出现,由于服务器或者应用中间件本身对于打开的文件 数有最大值限制造成,解决办法: 1、 修改操作系统的文件数限制,aix下面修改limits下的nofiles限制条件,增大 或者设置为没有限制,尽量对涉及到的服务器都作修改; 2、 方法一解决不了情况下再去查看应用服务器weblogic的文件,修 改其中的nofiles文件max-nofiles数增大,应该就可以通过了,具体就是查找到nofiles 方法,修改其中else条件的执行体,把文件打开数调大;修改前记住备份此文件,防止修 改出错; 五、问题描述has shut down the connection prematurely 一般是在访问应用服务器时出现,大用户量和小用户量均会出现; 来自网上的解释: 1> 应用访问死掉 小用户时:程序上的问题。程序上存在数据库的问题 2> 应用服务没有死 应用服务参数设置问题 例如: 在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可 能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到 connection refused消息,说明应提高该值,每次增加25% Java连接池的大小设置,或JVM的设置等 3> 数据库的连接 在应用服务的性能参数可能太小了 数据库启动的最大连接数(跟硬件的内存有关) 以上信息有一定的参考价值,实际情况可以参考此类调试。 如果是以上所说的小用户时:程序上的问题。程序上存在数据库的问题,那就必须采 用更加专业的工具来抓取出现问题的程序,主要是程序中执行效率很低的sql语句, weblogic可以采用introscope定位,期间可以注意观察一下jvm的垃圾回收情况看是否正 常,我在实践中并发500用户和600用户时曾出现过jvm锯齿型的变化,上升下降都很快, 这应该是不太正常的; 六、问题描述Failed to connect to server 这个问题一般是客户端链接到服务失败,原因有两个客户端连接限制(也就是压力负 载机器),一个网络延迟严重,解决办法: 1、 修改负载机器的tcpdelaytime注册表键值,改小; 2、 检查网络延迟情况,看问题出在什么环节; 建议为了减少这种情况,办法一最好测试前就完成了,保证干净的网络环境,每个负 载机器的压力测试用户数不易过大,尽量平均每台负载器的用户数,这样以上问题出现的概 率就很小了。 文章来源于领测软件测试网 /


发布评论