Author: jesus
Date: Wed Aug 31 02:49:26 2011
New Revision: 1163474
URL: http://svn.apache.org/viewvc?rev=1163474&view=rev
Log:
TS-940
Allow for a proxy.config.http.server_tcp_init_cwnd setting in records.config.
If this is present and the operating system supports it (Solaris 10+ in a
global zone currently), then it will be altered for all inbound connections
from the UA.
Modified:
trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc
trafficserver/traffic/trunk/mgmt/RecordsConfig.cc
trafficserver/traffic/trunk/proxy/http/HttpConfig.cc
trafficserver/traffic/trunk/proxy/http/HttpConfig.h
Modified: trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc
URL:
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc?rev=1163474&r1=1163473&r2=1163474&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc (original)
+++ trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc Wed Aug 31
02:49:26 2011
@@ -175,6 +175,16 @@ UnixNetProcessor::accept_internal(
setsockopt(na->server.fd, IPPROTO_TCP, TCP_DEFER_ACCEPT, &accept_timeout,
sizeof(int));
}
#endif
+#ifdef TCP_INIT_CWND
+ int tcp_init_cwnd = 0;
+ IOCORE_ReadConfigInteger(tcp_init_cwnd,
"proxy.config.http.server_tcp_init_cwnd");
+ if(tcp_init_cwnd > 0) {
+ Debug("net", "Setting initial congestion window to %d", tcp_init_cwnd);
+ if(setsockopt(na->server.fd, IPPROTO_TCP, TCP_INIT_CWND, &tcp_init_cwnd,
sizeof(int)) != 0) {
+ Error("Cannot set initial congestion window to %d", tcp_init_cwnd);
+ }
+ }
+#endif
return na->action_;
}
Modified: trafficserver/traffic/trunk/mgmt/RecordsConfig.cc
URL:
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/mgmt/RecordsConfig.cc?rev=1163474&r1=1163473&r2=1163474&view=diff
==============================================================================
--- trafficserver/traffic/trunk/mgmt/RecordsConfig.cc (original)
+++ trafficserver/traffic/trunk/mgmt/RecordsConfig.cc Wed Aug 31 02:49:26 2011
@@ -487,6 +487,8 @@ RecordElement RecordsConfig[] = {
,
{RECT_CONFIG, "proxy.config.http.server_max_connections", RECD_INT, "0",
RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}
,
+ {RECT_CONFIG, "proxy.config.http.server_tcp_init_cwnd", RECD_INT, "0",
RECU_DYNAMIC, RR_NULL, RECC_STR, "[0-16]", RECA_NULL}
+ ,
{RECT_CONFIG, "proxy.config.http.origin_max_connections", RECD_INT, "0",
RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}
,
{RECT_CONFIG, "proxy.config.http.origin_min_keep_alive_connections",
RECD_INT, "0", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}
Modified: trafficserver/traffic/trunk/proxy/http/HttpConfig.cc
URL:
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http/HttpConfig.cc?rev=1163474&r1=1163473&r2=1163474&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http/HttpConfig.cc (original)
+++ trafficserver/traffic/trunk/proxy/http/HttpConfig.cc Wed Aug 31 02:49:26
2011
@@ -1146,6 +1146,7 @@ HttpConfig::startup()
}
HttpEstablishStaticConfigLongLong(c.server_max_connections,
"proxy.config.http.server_max_connections");
+ HttpEstablishStaticConfigLongLong(c.server_tcp_init_cwnd,
"proxy.config.http.server_tcp_init_cwnd");
HttpEstablishStaticConfigLongLong(c.oride.origin_max_connections,
"proxy.config.http.origin_max_connections");
HttpEstablishStaticConfigLongLong(c.origin_min_keep_alive_connections,
"proxy.config.http.origin_min_keep_alive_connections");
@@ -1426,6 +1427,7 @@ HttpConfig::reconfigure()
params->disable_ssl_parenting = INT_TO_BOOL(m_master.disable_ssl_parenting);
params->server_max_connections = m_master.server_max_connections;
+ params->server_tcp_init_cwnd = m_master.server_tcp_init_cwnd;
params->oride.origin_max_connections = m_master.oride.origin_max_connections;
params->origin_min_keep_alive_connections =
m_master.origin_min_keep_alive_connections;
@@ -1616,6 +1618,7 @@ HttpConfig::reconfigure()
#undef INT_TO_BOOL
// Redirection debug statements
+ Debug("http_init", "proxy.config.http.server_tcp_init_cwnd = %d",
params->server_tcp_init_cwnd);
Debug("http_init", "proxy.config.http.redirection_enabled = %d",
params->redirection_enabled);
Debug("http_init", "proxy.config.http.number_of_redirections = %d",
params->number_of_redirections);
Modified: trafficserver/traffic/trunk/proxy/http/HttpConfig.h
URL:
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http/HttpConfig.h?rev=1163474&r1=1163473&r2=1163474&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http/HttpConfig.h (original)
+++ trafficserver/traffic/trunk/proxy/http/HttpConfig.h Wed Aug 31 02:49:26 2011
@@ -603,6 +603,7 @@ public:
char *outgoing_ip_to_bind;
MgmtInt server_max_connections;
+ MgmtInt server_tcp_init_cwnd;
MgmtInt origin_min_keep_alive_connections; // TODO: This one really ought to
be overridable, but difficult right now.
MgmtByte parent_proxy_routing_enable;
@@ -899,6 +900,7 @@ HttpConfigParams::HttpConfigParams()
incoming_ip_to_bind_saddr(0),
outgoing_ip_to_bind(0),
server_max_connections(0),
+ server_tcp_init_cwnd(0),
origin_min_keep_alive_connections(0),
parent_proxy_routing_enable(0),
disable_ssl_parenting(0),