1. 程式人生 > >Error code 10053,Software caused connection abort.總結

Error code 10053,Software caused connection abort.總結

發現問題的應用場景
  C/S結構程式,請求響應採用非同步機制。即客戶端傳送一個請求後不是一直等待這個結果,客戶端將請求存放在請求佇列並獲得一個JOBID,伺服器執行後將執行結果存放在響應佇列,客戶端定時檢視響應佇列,根據JOBID定時從響應佇列中獲取結果。因此帶來的測試問題是受伺服器狀態影響,客戶端獲取結果的次數不固定。
測試指令碼示例
  lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=localhost:8080", LrsLastArg);
  lrs_send("socket0", "buf56", LrsLastArg);
  lrs_receive("socket0", "buf57", LrsLastArg);
  GetJobID();
  do{
  lr_think_time(0.3);
  lrs_send("socket0", "buf58", LrsLastArg);
  lrs_receive("socket0", "buf59", LrsLastArg);
  }while(!CheckStatus());
  其中buf56、57是傳送請求,buf58、59是迴圈去獲取結果並檢查返回的標誌位,若仍沒有結果返回則在一定時間後迴圈獲取結果,因此請求數不固定。
LR提示socket異常
  當我用lrs_create_socket建立連線之後,當這個socket連線的請求次數達到100次後,這個連線就不可用了,必須close後再重新create。LoadRunner提示錯誤:Error : socket0 - Software caused connection abort. Error code : 10053.


問題驗證
  一開始認為是LoadRunner對Socket的支援問題,因為同樣的測試方式在Rational Robot中可以通過。於是做了最簡單的一個試驗:
  1、用socket方式錄製訪問某個網頁並儲存(如baidu、或tomcat的預設頁面)
  2、新增迴圈方式去訪問
  結果證明在socket請求次數達到100後即無法再次訪問了(少數次數可以達到一百零幾)。
 
  指令碼如下:
  #include "lrs.h"
  int i;
  Action()
  {
  lr_think_time(1);
 
  lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=appsvr01:8080", LrsLastArg);
  i=1;
  do{
  lrs_send("socket0", "buf0", LrsLastArg);
  lrs_receive("socket0", "buf1", LrsLastArg);
  lr_output_message("-------------lrs request times: %d ", i);
  i++;
  lrs_send("socket0", "buf2", LrsLastArg);
  lrs_receive("socket0", "buf3", LrsLastArg);
  lr_output_message("-------------lrs request times: %d ", i);
  i++;
  lrs_send("socket0", "buf4", LrsLastArg);
  lrs_receive("socket0", "buf5", LrsLastArg);
  lr_output_message("-------------lrs request times: %d ", i);
  i++;
  lrs_send("socket0", "buf6", LrsLastArg);
  lrs_receive("socket0", "buf7", LrsLastArg);
  lr_output_message("-------------lrs request times: %d ", i);
  i++;
  }while(i<200);
  return 0;
  }
 
  LoadRunner VUGen日誌如下:
  ...
  lrs_send(socket0, buf2)
  Action.c(21): lrs_receive(socket0, buf3)
  Action.c(22): -------------lrs request times: 98
  Action.c(24): lrs_send(socket0, buf4)
  Action.c(25): lrs_receive(socket0, buf5)
  Action.c(26): -------------lrs request times: 99
  Action.c(28): lrs_send(socket0, buf6)
  Action.c(29): lrs_receive(socket0, buf7)
  Action.c(29): Mismatch (expected 1249 bytes, 1268 bytes actually received)
  Action.c(30): -------------lrs request times: 100
  Action.c(16): lrs_send(socket0, buf0)
  Action.c(17): lrs_receive(socket0, buf1)
  Action.c(17): Error : socket0 - Software caused connection abort. Error code : 10053.
  Abort was called from an action.
  Ending Vuser...
  Starting action vuser_end.
  vuser_end.c(12): lrs_cleanup()
  Ending action vuser_end.


新的發現
  在發現以上問題後百思不得其解之後即和一些測試朋友進行討論交流,但同樣沒有什麼頭緒。在一次交流中意外發現朋友的測試指令碼中連線的是80埠,於是推斷他是用IIS作為測試伺服器,突然意識到這是否和應用伺服器也有關,立即採用IIS作為伺服器進行測試,居然測試通過了,並沒有出現Socket連線問題!隨後用Weblogic進行測試也同樣通過!
初步結論
  由以上的各種驗證方法發現問題並非單獨由LoadRunner引起的,而是和測試的應用伺服器也有很大關係。僅當用LoadRunner測試Jboss、Tomcat伺服器時才會出現這種問題,而對IIS、Weblogic等問題並不存在。但另有一個奇怪的問題是採用Rational Robot用同樣的測試方法,所有的伺服器型別都沒有問題!


繼續探索
  後來進一步研究為何同樣的採用tomcat伺服器,在請求上有什麼不同差異導致了兩種測試工具決然不同的測試結果。但通過Charles工具只是發現了一些請求上的細微差異,並不會造成此問題的發生。於是此疑案懸而未決,希望有志之士加入一起研究,共同探索其中奧祕!

相關推薦

Error code 10053Software caused connection abort.總結

發現問題的應用場景   C/S結構程式,請求響應採用非同步機制。即客戶端傳送一個請求後不是一直等待這個結果,客戶端將請求存放在請求佇列並獲得一個JOBID,伺服器執行後將執行結果存放在響應佇列,客戶端定時檢視響應佇列,根據JOBID定時從響應佇列中獲取結果。因此帶來的測試問

ssh 連不上 或putty出現 Network error:Software caused connection abort

com ssh auth sshd line cnblogs put soft host https://www.cnblogs.com/netonline/p/7410586.html 89 ls /etc/ssh/ssh_host_rsa_key 90

testNG java.net.SocketException: Software caused connection abort: socket write error

dex ges error pom.xml .so lai sun panel light 執行用例報錯,提示 java.net.SocketException: Software caused connection abort: socket write error

Putty出現 Network error:Software caused connection abort

使用centos7.5 用Putty連線使用沒多久就會出現 Network error:Software caused connection abort    #修改sshd配置檔案、修改2項配置即可 vi /etc/ssh/sshd_config L

putty提示Network errorSoftware caused connection abort解決方法

最近使用putty的時候老是提示 network error software caused connection abort 網路錯誤軟體造成連線中斷 下面給出解決putty連線中斷辦法: 1.在linux伺服器端設定: vi /etc/ssh/sshd_config 找

putty登入linux出現network error:software caused connection abort解決辦法

第一步:SSH指令輸入:vi /etc/ssh/sshd_config 然後回車、 第二步:按下鍵,一直找到最後這裡,你會看到倒數第二十行左右有這麼一句話:ClientAliveInterval 0 第三步:修改數字0為60第四步:按下esc,按下ctrl+Q,輸入wq,回

putty提示Network errorSoftware caused connection abort

網路錯誤:軟體連線終止引起的 既然有了這個現象,那麼就一定有原因的,自己想想肯定是關乎遠端連線方面的問題,於是到網上查檢視前人有沒有好的解決方案: 其中讓我看到了這個:是遠端的配置檔案設定的問題。下面是幾種解決方案。 希望有一種可以幫助到有遇到此問題的人。 方案一:【親測有效,本人設定time

解決SSH連接出現 Software caused connection abort 的問題

分享圖片 caused 重啟 時間 ica before 技術 打印 分享 修改服務器中/etc/ssh/sshd.config 文件,將LoginGraceTime的值設為0,默認為2m,TCPKeepAlive 設為yes, 然後使用service sshd rest

使用Putty訪問伺服器時,間隔出現Software caused connection abort的解決

錯誤現象:在很短的時間內就失去連線,並報"Software caused connection abort” 解決辦法:首先得排除是網路不是不通暢,然後修改伺服器中/etc/ssh/sshd.config 檔案,將LoginGraceTime的值設為0,預設為2m,TCPK

docker 1.13.1報 rpc error: code = 14 desc = grpc: the connection is unavailable 解決辦法

現象 [[email protected] ~]# docker exec -it fe289c21a69d sh rpc error: code = 14 desc = grpc: the connection is unavailable 日誌資訊 ...

轉載 -- 如何設計一門語言(六)——exception和error code cc++ 還沒看

如何設計一門語言(六)——exception和error code http://www.cppblog.com/vczh/archive/2013/06/10/200920.html   如何設計一門語言(六)——exception和error code 我一直以來對於e

Jmeter啟動報錯returned error code 5解決方法

啟動jmeter.bat命令後,命令列提示資訊有警告,警告資訊顯示如下 :  java.util.prefs.WindowsPreferences <init> WARNING: Coul

解決workbench MySQL Error Code:2013. Lost connection to MySQL server during query

在MySQL中新建表格時出現了lost connection to MySQL的問題,在網上查了許多的方法修改timeout,max_allowed_packet。 一種方法是在cmd中修改value,但是我重啟mysql以後值就會恢復預設值,下面是修改的方法; 可以用show g

Could not open/create prefs root node Software\JavaSoft\Prefs at root..... , error code 5

1. 到這個網址(http://jmeter.apache.org/download_jmeter.cgi),下載JMeter的安裝包 如圖2.解壓,配置環境   我的解壓路徑是:D:\jMeter\apache-jmeter-3.3   環境配置:JME

Centos 7不能上網Job for iptables.service failed because the control process exited with error code.

一、先檢查自己的網路配置資訊:路徑: vi /etc/sysconfig/network-scripts/ifcfg-eno16777736   如圖 重啟網路配置的命令:service network restart或者是systemctl restart net

伺服器宕機mysql無法啟動job for mysql.service failed because the process exited with error code資料庫備份與恢復

[問題現象] 伺服器在執行過程中,因人為意外導致電源被拔,伺服器宕機,mysql重啟不成功,報錯如下 根據提示,輸入systemctl status mysql.service和journalctl -xe檢視日誌,經過一番百度谷歌折騰也是無果。(很多時候,不能因為突發事件就“病急亂投醫”) &nb

微信小程式-騰訊雲PHP模板-Error: 響應錯誤{"code":-1,"error":'root'@'localhost' (using password: YES)"}-排坑2

        Error: 響應錯誤,{"code":-1,"error":"SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)"}

配置redis主從伺服器slave伺服器日誌顯示Error condition on socket for SYNC: Connection refused

Error condition on socket for SYNC: Connection refused,表示redis主伺服器拒絕redis從伺服器的連線。這樣從官方預設的配置文件redis.conf中說起。 redis.conf 中 【bind】配置的用法:(一句話

MySQL Error Code:1093Error Code:1248

Error Code:1093 是在執行DELETE或者UPDATE時含有子查詢導致的。 You can't specify target table 'USER' from update in FROM clause 如: UPDATE user SET usex =