When LoadRunner was recently used to perform a performance test on the Winsock protocol, the tested webserver was JBoss and often encountered a 10053 error. The phenomenon is as follows: After I used lrs_create_socket to create a connection, when the number of requests for this socket connection reaches 100, this connection is unavailable and must be closed before re-create. LoadRunner prompts error: Error: socket0-software caused connection abort. Error code: 10053.
After several explorations, we finally found that this error was caused by the configuration of the keepalive parameter in HTTP 1.1 in Apach httpserver. According to my test results on multiple different webservers, JBoss and tomcat errors occur when 100 requests are sent to one socket connection. Other Web servers, such as IIS and WebLogic, do not have this problem.
The following describes several related parameters: keepalive, keepalivetimeout, and maxkeepaliverequests.
Keepalive Directive
Description: enables HTTP persistent connections
Syntax: keepalive on | off
Default: keepalive on
Context: Server config, virtual host
Status: Core
Module: Core
In HTTP 1.0, only one HTTP request can be transmitted over one connection, while the keepalive parameter is used to support one connection and multiple transmission functions in HTTP 1.1, in this way, multiple HTTP requests can be transmitted in a connection. Although this function is only supported by newer browsers, this option is still enabled.
the keep-alive extension to HTTP/1.0 and the persistent connection feature of HTTP/1.1 provide long-lived HTTP sessions which allow multiple requests to be sent over the same TCP connection. in some cases this has been shown to result in an almost 50% speedup in latency times for HTML documents with specified images. to enable keep-alive connections, set keepalive on.
For HTTP/1.0 clients, keep-alive connections will only be used if they are specifically requested by a client. in addition, a keep-alive connection with an HTTP/1.0 client can only be used when the length of the content is known in advance. this implies that dynamic content such as CGI output, SSI pages, and server-generated directory listings will generally not use keep-alive connections to HTTP/1.0 clients. for HTTP/1.1 clients, persistent connections are the default unless otherwise specified. if the client requests it, chunked encoding will be used in order to send content of unknown length over persistent connections.
----------------------
Keepalivetimeout Directive
Description: amount of time the server will wait for subsequent requests on a persistent connection
Syntax: keepalivetimeout seconds
Default: keepalivetimeout 15
Context: Server config, virtual host
Status: Core
Module: Core
Keepalivetimeout test the time between multiple requests in a connection. If the server has completed a request but has never received the customerProgramThe next request, after the interval exceeds the value set by this parameter, the server will be disconnected.
The number of seconds Apache will wait for a subsequent request before closing the connection. Once a request has been received Ed, the timeout value specified by the timeout directive applies.
Setting keepalivetimeout to a high value may cause performance problems in heavily loaded servers. The higher the timeout, the more server processes will be kept occupied waiting on connections with idle clients.
----------------------
Maxkeepaliverequests Directive
Description: Number of requests allowed on a persistent connection
Syntax: maxkeepaliverequests number
Default: maxkeepaliverequests 100
Context: Server config, virtual host
Status: Core
Module: Core
Maxkeepaliverequests is the maximum number of HTTP requests that a connection can perform. Setting this value to 0 will allow unlimited transmission requests in one connection. In fact, no client program requests too many pages in a single connection. Generally, the connection is completed if this limit is not reached.
The maxkeepaliverequests directive limits the number of requests allowed per connection when keepalive is on. if it is set to 0, unlimited requests will be allowed. we recommend that this setting be kept to a high value for maximum server performance.
For example: maxkeepaliverequests 500
Finally, although this problem is caused by the parameter configuration of httpserver, this problem occurs only when LoadRunner implements the same function using Rational robot, this estimation is also related to the Implementation Policy of the test tool on the socket connection.