系统和软件配置:os:windows 2003
  loadruner版本:LoadRunner11
  loadrunner协议:SMTP协议
  并发数:200
  问题描述:失败27个
  失败信息:
  error -86401 Failed to connceted xxx.xxx.xxx.xxx:25
  分析过程:
  固定失败27,排除服务器错误
  怀疑是客户端自己的问题(虽然正常的几台负载机和有问题的负载机,硬件配置,软件版本都一样,但有问题的一直有问题,正常的一直正常)
  验证:
  怀疑TCP连接数做了限制,验证后可以解决
  解决方法:
  方法一:
  windows 2003对tcp的连接数做了限制,超多这个数目会出现系统缓冲区空间不足或队列已满错误。
  增加tcp链接数,修改注册表如下:
  reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters" /v "MaxUserPort" /d "65534" /t REG_DWORD /f
  reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters" /v "TcpTimedWaitDelay" /d "30" /t REG_DWORD /f
  reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters" /v "TcpNumConnections" /d "65534" /t REG_DWORD /f
  win2003机器上用LR负载机,MaxUserPort已经是65534,TcpTimedWaitDelay已经是30,只是没有TcpNumConnections
  方法二:
  在Windows计算机的标准设置下,操作系统的默认限制只能使用几百个Vuser,这个限制与CPU或内存无关,主要是操作系统本身规定了默认的大 线程数所导致。要想突破Windows这个限制,须修改Windows注册表。以Windows XP Professional为例。
  (1)打开注册表后,进入注册表项HKEY_LOCAL_MACHINE中的下列关键字:SystemCurrentControlSetControlSession ManagerSubSystems。
  (2)找到Windows关键字,Windows关键字如下所示:
  %SystemRoot%system32csrss.exe bjectDirectory=Windows
  SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1
  ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2
  ProfileControl=Off MaxRequestThreads=16
  SharedSection=1024,3072,512关键字的格式为xxxx,yyyy,zzz。其中,xxxx定义了系统范围堆的大值(以KB为单位),yyyy定义每个桌面堆得大小。
  (3)将yyyy的设置从3072更改为8192(即8MB),增加SharedSection参数值。
  注意,上面两种方法,因为修改注册表,都是重启服务器才会生效,只重启LR没有用