Error -27740: WSA_IO_pending
Action.c(198): Error -27791: Server **** has shut down the connection prematurely
Action.c(198): Error -27790: Failed to read data from server  *** [10053] Software caused connection abort
Action.c(198): Error -27740: Overlapped transmission of request to"www.****"  for URL "****"  failed: WSA_IO_PENDING
 
Diagnosis: 
    Overlapped transmission of request to '%1' for URL 'URL' failed. The transmission of data to the server failed. It could be a network, router, or server problem. The word Overlapped refers to the way LoadRunner sends data in order to get a Web Page Breakdown.
--------- Troubleshooting-----------------------------------
    Add the following statement to the beginning of the script to disable the breakdown of the "First Buffer" into server and network time: 
    web_set_sockets_option("OVERLAPPED_SEND", "0");
 
--------- 经验------------------------------------------------------------------------
IO Overlapped是一种异步IO,在socket层,只有少量数据发送的时候,只要create new thread,send, receive就可以。
但是当数据量增加的时候,要考虑资源的充分利用,也要避免资源的拥塞队列,如果创建线程过多,和CPU内存磁盘等资源的交互过多,可能导致拥塞出现。在这时就要考虑资源的拥塞问题了,在socket中有两种处理的方式:

1.IO overlapped
工作方式是这样的:
A:调用WSARecv, WSARecvFrom, WSASend, WSASendTo, 或 WSAIoctl.等函数,传入overlapped参数,表示这个函数要执行这个动作;
B:调用WSAGetOverlappedResult函数来取数据;
C:再执行A,调用另一个带有overlapped的参数另一个线程交替处理。
这种方式,可以处理一定量的数据。但是在大数据量的时候,这种处理方式显示出了先天的不足。因为使用这种方式会创建新的线程,这样势必增加系统的开销。当出现成千上万的线程时,系统的开销已经相当大了,因为要频繁的在上下文之间切换。所以在socket编程里,这种方式,处理线程数不是很大的情况下是比较有优势的。

2.IO completion port 
在winsock2中引入了异步IO的API:IOCP。其实这里也是overlapped的理念。但有不同,如下描述:
这种异步IO的工作方式是:先开一些线程,处在hold的状态下,应用线程和completion port关联起来,当某个线程要处理数据时,就与completion port进行通信,这样就可以进行socket操作了,这种处理方式就是在刚开始的时候,消耗一些资源开线程,处理大数据量的socket通信,如图:

这样一来completion port就可以处理threads和IO Device之间的交互了。
打个比方来说:有很多人早上都去坐地铁,但是,如果不限制人往站台走的速度,售票口就要增加很多个才能处理乘客的请求,这样成本就会增加很多,并且站台上最后会挤满了人,最后导致危机出现;而现在,在进入地铁的时候,加上有序的限流措施,这样一来售票口不用增加,也可以处理乘客的请求,站台上就不会有那么大的压力。在我的理解中,completion port就有着这么一个功能。在处理大数据量的时候,它起着维持秩序的作用。

以上为socket在处理数据量较大时的两种方式。
而在性能测试中,如果开的线程过多,可能某些资源不足导致不停的上下文切换,就会有thread得不到资源,从而出现pending。
如果我们关闭了overlapped,就会同步执行。这时如果CPU速度够快(同时其他资源是足够用的),是可以处理所有请求,并且不会出现pending的。但是,如果thread开的越来越多,也可能导致CPU处理不了,从而出现CPU频繁的上下文切换,或者队列增长。最后出错。这时,我们可以针对性的来提出解决方案了。

Error -27740: WSA_IO_pending的更多相关文章

  1. OpenSceneGraph 编译 error LNK2019:unresolved external symbol 错误

    在编译 OpenSceneGraph 的一个简单示例时, #include <osgViewer/Viewer> #include <osgDB/ReadFile> void ...

  2. error C2065:未声明的标识符错误

    原文地址:http://blog.sina.com.cn/s/blog_8216ada701017evx.html 在VS2010下进行VC++调试时,出现这样一种错误:error C2065:未声明 ...

  3. SecurityError:Error #2048:安全沙箱冲突

    1.错误描述 SecurityError:Error #2048:安全沙箱冲突:http://localhost:8080/YHD/flash/YHD.swf 不能从 http://123.89.45 ...

  4. maven 在clean package时,出现:找不到符号 [ERROR] 符号: 方法 sqlDdlFilter(java.lang.String) 解决办法

    另一个项目中增加了,sqlDdlFilter 在调用的项目中clean package时,出现 找不到符号[ERROR] 符号: 方法 sqlDdlFilter(java.lang.String) 原 ...

  5. log.error("异常:", e);与log.error(e.getMessage());区别

    转: log.error("异常:", e);与log.error(e.getMessage());区别 2017年04月28日 14:51:32 行走的soong 阅读数:120 ...

  6. Windows could not set the offline local information.Error code:0X80000001解决方法

    我的笔记本是联想Y460(白色) 昨天在重装系统的时候遇到如下错误:Windows could not set the offline local information.Error code:0X8 ...

  7. VS编译错误:fatal error C1859:unexpected precompiled header error, simply rerunning the compiler might fix this problem

    fatal error C1859:unexpected precompiled header error, simply rerunning the compiler might fix this ...

  8. Error处理: android.media.MediaRecorder.start(Native Method) 报错:start failed: -19【转】

    本文转载自:http://blog.csdn.net/netwalk/article/details/17686993 Error处理: android.media.MediaRecorder.sta ...

  9. Error处理: 重提No Launcher activity found!

    Error处理: 重提No Launcher activity found! 重提No Launcher activity found!错误提示,及解决的方法 Android应用开发中No Launc ...

随机推荐

  1. Accelerated C++学习笔记7—&lt;使用库算法&gt;

    第6章  使用库算法 本章中主要教我们怎样使用几个库算法来解决与处理字符串和学生成绩相关的问题. 1.分析字符串 使用一个循环来连接两幅字符图案 <span style="font-f ...

  2. Python 字典 items() 方法

    描述 Python 字典 items() 方法以列表形式(并非直接的列表,若要返回列表值还需调用list函数)返回可遍历的(键, 值) 元组数组. 语法 items() 方法语法: D.items() ...

  3. tag标签数据库的设计

    方案一: 一个表,里面有个tags字段,存放以空格或逗号分隔的标签.缺点是长度受限,tag个数受限,查询like ‘%abc%’效率低 方案二: 同方案一,支持全文索引,或者用Lucence索引查询 ...

  4. 《Effective Java》读书笔记三(类和接口)

    No13 使类和成员的可访问性最小化 要区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节.模块之间只通过它们的API进行通信,一个 ...

  5. 在C#中使用WMI查询进程的用户信息

    这是一个使用WMI查询信息的例子.看之前请对WMI有一个简单的了解,可以百度,或者查看我上一篇:WMI测试器 主要代码:(需要添加对System.Management的引用) //创建Win32_Pr ...

  6. vim自定义插件放入pathogen管理

    1.在.vim/bundle目录下,建立一个空目录,比如cscope 2.在cscope下面建立一个plugin文件夹 3.将自己写的vim文件放入plugin文件夹内就可以使用.

  7. iOS之Sqlite3封装

    一.代码下载 代码下载地址 二.实例效果展示 imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="效果图二.png&q ...

  8. yii2 关系...

    link($name) 会使用..get$name...即有hasmany和hasone... // update lazily loaded related objects if (!$relati ...

  9. 在cocos2d-x-3.0 android 平台编译时提示CocosGUI.h: No such file or directory

    分类是个让人蛋疼的事情,所幸自己的博客自己做主.这是个高兴的开始. 每天抽空玩2048,终于忍受不住,于是决定自己从网上download下源码,自己编译一个出来.所有的事情都很容易,除了操蛋的中文注释 ...

  10. C++面向对象程序设计的一些知识点(4)

    摘要:累继承可以实现源代码重用,模板技术也可以达到同样的目的.模板可以分为函数模板和类模板,其共同点是允许参数类进行类型化,编译器根据程序员传递的具体类型,又把函数模板实例化为具体函数,把类模板实例化 ...