diff options
-rw-r--r-- | chrome/browser/chrome_browser_main.cc | 9 | ||||
-rw-r--r-- | net/http/http_proxy_client_socket_pool.cc | 5 | ||||
-rw-r--r-- | net/socket/client_socket_pool.cc | 31 | ||||
-rw-r--r-- | net/socket/client_socket_pool.h | 7 | ||||
-rw-r--r-- | net/socket/client_socket_pool_base.h | 3 | ||||
-rw-r--r-- | net/socket/client_socket_pool_base_unittest.cc | 5 | ||||
-rw-r--r-- | net/socket/client_socket_pool_manager.cc | 18 | ||||
-rw-r--r-- | net/socket/client_socket_pool_manager.h | 4 | ||||
-rw-r--r-- | net/socket/socks_client_socket_pool.cc | 5 | ||||
-rw-r--r-- | net/socket/ssl_client_socket_pool.cc | 5 | ||||
-rw-r--r-- | net/socket/transport_client_socket_pool.cc | 5 |
11 files changed, 62 insertions, 35 deletions
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc index 36a9880..8fa106e 100644 --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc @@ -798,11 +798,14 @@ void ChromeBrowserMainParts::SocketTimeoutFieldTrial() { const int idle_to_trial_group = socket_timeout_trial->group(); if (idle_to_trial_group == socket_timeout_5) { - net::ClientSocketPool::set_unused_idle_socket_timeout(5); + net::ClientSocketPool::set_unused_idle_socket_timeout( + base::TimeDelta::FromSeconds(5)); } else if (idle_to_trial_group == socket_timeout_10) { - net::ClientSocketPool::set_unused_idle_socket_timeout(10); + net::ClientSocketPool::set_unused_idle_socket_timeout( + base::TimeDelta::FromSeconds(10)); } else if (idle_to_trial_group == socket_timeout_20) { - net::ClientSocketPool::set_unused_idle_socket_timeout(20); + net::ClientSocketPool::set_unused_idle_socket_timeout( + base::TimeDelta::FromSeconds(20)); } else { NOTREACHED(); } diff --git a/net/http/http_proxy_client_socket_pool.cc b/net/http/http_proxy_client_socket_pool.cc index b433f26..d4c080f 100644 --- a/net/http/http_proxy_client_socket_pool.cc +++ b/net/http/http_proxy_client_socket_pool.cc @@ -386,9 +386,8 @@ HttpProxyClientSocketPool::HttpProxyClientSocketPool( : transport_pool_(transport_pool), ssl_pool_(ssl_pool), base_(max_sockets, max_sockets_per_group, histograms, - base::TimeDelta::FromSeconds( - ClientSocketPool::unused_idle_socket_timeout()), - base::TimeDelta::FromSeconds(kUsedIdleSocketTimeout), + ClientSocketPool::unused_idle_socket_timeout(), + ClientSocketPool::used_idle_socket_timeout(), new HttpProxyConnectJobFactory(transport_pool, ssl_pool, host_resolver, diff --git a/net/socket/client_socket_pool.cc b/net/socket/client_socket_pool.cc index 06e2805..a1967ef 100644 --- a/net/socket/client_socket_pool.cc +++ b/net/socket/client_socket_pool.cc @@ -1,29 +1,46 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "net/socket/client_socket_pool.h" +#include "base/logging.h" + namespace { -// The maximum duration, in seconds, to keep used idle persistent sockets +// The maximum duration, in seconds, to keep unused idle persistent sockets // alive. // TODO(ziadh): Change this timeout after getting histogram data on how long it // should be. -int g_unused_idle_socket_timeout = 10; +int g_unused_idle_socket_timeout_s = 10; + +// The maximum duration, in seconds, to keep used idle persistent sockets alive. +int g_used_idle_socket_timeout_s = 300; // 5 minutes } // namespace namespace net { // static -int ClientSocketPool::unused_idle_socket_timeout() { - return g_unused_idle_socket_timeout; +base::TimeDelta ClientSocketPool::unused_idle_socket_timeout() { + return base::TimeDelta::FromSeconds(g_unused_idle_socket_timeout_s); +} + +// static +void ClientSocketPool::set_unused_idle_socket_timeout(base::TimeDelta timeout) { + DCHECK_GT(timeout.InSeconds(), 0); + g_unused_idle_socket_timeout_s = timeout.InSeconds(); +} + +// static +base::TimeDelta ClientSocketPool::used_idle_socket_timeout() { + return base::TimeDelta::FromSeconds(g_used_idle_socket_timeout_s); } // static -void ClientSocketPool::set_unused_idle_socket_timeout(int timeout) { - g_unused_idle_socket_timeout = timeout; +void ClientSocketPool::set_used_idle_socket_timeout(base::TimeDelta timeout) { + DCHECK_GT(timeout.InSeconds(), 0); + g_used_idle_socket_timeout_s = timeout.InSeconds(); } ClientSocketPool::ClientSocketPool() {} diff --git a/net/socket/client_socket_pool.h b/net/socket/client_socket_pool.h index 82d7390..5f618cd 100644 --- a/net/socket/client_socket_pool.h +++ b/net/socket/client_socket_pool.h @@ -139,8 +139,11 @@ class NET_EXPORT ClientSocketPool { // UMA_HISTOGRAM_* macros because they are callsite static. virtual ClientSocketPoolHistograms* histograms() const = 0; - static int unused_idle_socket_timeout(); - static void set_unused_idle_socket_timeout(int timeout); + static base::TimeDelta unused_idle_socket_timeout(); + static void set_unused_idle_socket_timeout(base::TimeDelta timeout); + + static base::TimeDelta used_idle_socket_timeout(); + static void set_used_idle_socket_timeout(base::TimeDelta timeout); protected: ClientSocketPool(); diff --git a/net/socket/client_socket_pool_base.h b/net/socket/client_socket_pool_base.h index 864369b..9e46e5e 100644 --- a/net/socket/client_socket_pool_base.h +++ b/net/socket/client_socket_pool_base.h @@ -573,9 +573,6 @@ class NET_EXPORT_PRIVATE ClientSocketPoolBaseHelper } // namespace internal -// The maximum duration, in seconds, to keep used idle persistent sockets alive. -static const int kUsedIdleSocketTimeout = 300; // 5 minutes - template <typename SocketParams> class ClientSocketPoolBase { public: diff --git a/net/socket/client_socket_pool_base_unittest.cc b/net/socket/client_socket_pool_base_unittest.cc index 2be05b1..985a4c5 100644 --- a/net/socket/client_socket_pool_base_unittest.cc +++ b/net/socket/client_socket_pool_base_unittest.cc @@ -565,9 +565,8 @@ class ClientSocketPoolBaseTest : public testing::Test { CreatePoolWithIdleTimeouts( max_sockets, max_sockets_per_group, - base::TimeDelta::FromSeconds( - ClientSocketPool::unused_idle_socket_timeout()), - base::TimeDelta::FromSeconds(kUsedIdleSocketTimeout)); + ClientSocketPool::unused_idle_socket_timeout(), + ClientSocketPool::used_idle_socket_timeout()); } void CreatePoolWithIdleTimeouts( diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc index f4b642c..76b8715 100644 --- a/net/socket/client_socket_pool_manager.cc +++ b/net/socket/client_socket_pool_manager.cc @@ -29,8 +29,8 @@ namespace net { namespace { -// Total limit of sockets. -int g_max_sockets = 256; +// Limit of sockets of each socket pool. +int g_max_sockets_per_pool = 256; // Default to allow up to 6 connections per host. Experiment and tuning may // try other values (greater than 0). Too large may cause many problems, such @@ -275,14 +275,14 @@ ClientSocketPoolManager::ClientSocketPoolManager( ssl_config_service_(ssl_config_service), transport_pool_histograms_("TCP"), transport_socket_pool_(new TransportClientSocketPool( - g_max_sockets, g_max_sockets_per_group, + g_max_sockets_per_pool, g_max_sockets_per_group, &transport_pool_histograms_, host_resolver, socket_factory_, net_log)), ssl_pool_histograms_("SSL2"), ssl_socket_pool_(new SSLClientSocketPool( - g_max_sockets, g_max_sockets_per_group, + g_max_sockets_per_pool, g_max_sockets_per_group, &ssl_pool_histograms_, host_resolver, cert_verifier, @@ -548,6 +548,14 @@ SSLClientSocketPool* ClientSocketPoolManager::GetSocketPoolForSSLWithProxy( } // static +void ClientSocketPoolManager::set_max_sockets_per_pool(int socket_count) { + DCHECK_LT(0, socket_count); + DCHECK_GT(1000, socket_count); // Sanity check. + g_max_sockets_per_pool = socket_count; + DCHECK_GE(g_max_sockets_per_pool, g_max_sockets_per_group); +} + +// static int ClientSocketPoolManager::max_sockets_per_group() { return g_max_sockets_per_group; } @@ -559,7 +567,7 @@ void ClientSocketPoolManager::set_max_sockets_per_group(int socket_count) { DCHECK_GT(100, socket_count); g_max_sockets_per_group = socket_count; - DCHECK_GE(g_max_sockets, g_max_sockets_per_group); + DCHECK_GE(g_max_sockets_per_pool, g_max_sockets_per_group); DCHECK_GE(g_max_sockets_per_proxy_server, g_max_sockets_per_group); } diff --git a/net/socket/client_socket_pool_manager.h b/net/socket/client_socket_pool_manager.h index 29393b4..4829550 100644 --- a/net/socket/client_socket_pool_manager.h +++ b/net/socket/client_socket_pool_manager.h @@ -110,6 +110,10 @@ class ClientSocketPoolManager : public base::NonThreadSafe, SSLClientSocketPool* GetSocketPoolForSSLWithProxy( const HostPortPair& proxy_server); + // The setter methods below affect only newly created socket pools after the + // methods are called. Normally they should be called at program startup + // before any ClientSocketPoolManager is created. + NET_EXPORT static void set_max_sockets_per_pool(int socket_count); NET_EXPORT static int max_sockets_per_group(); NET_EXPORT static void set_max_sockets_per_group(int socket_count); NET_EXPORT static void set_max_sockets_per_proxy_server(int socket_count); diff --git a/net/socket/socks_client_socket_pool.cc b/net/socket/socks_client_socket_pool.cc index c80bb66..4dbb442 100644 --- a/net/socket/socks_client_socket_pool.cc +++ b/net/socket/socks_client_socket_pool.cc @@ -199,9 +199,8 @@ SOCKSClientSocketPool::SOCKSClientSocketPool( NetLog* net_log) : transport_pool_(transport_pool), base_(max_sockets, max_sockets_per_group, histograms, - base::TimeDelta::FromSeconds( - ClientSocketPool::unused_idle_socket_timeout()), - base::TimeDelta::FromSeconds(kUsedIdleSocketTimeout), + ClientSocketPool::unused_idle_socket_timeout(), + ClientSocketPool::used_idle_socket_timeout(), new SOCKSConnectJobFactory(transport_pool, host_resolver, net_log)) { diff --git a/net/socket/ssl_client_socket_pool.cc b/net/socket/ssl_client_socket_pool.cc index 4698a3a..a924b5a 100644 --- a/net/socket/ssl_client_socket_pool.cc +++ b/net/socket/ssl_client_socket_pool.cc @@ -459,9 +459,8 @@ SSLClientSocketPool::SSLClientSocketPool( socks_pool_(socks_pool), http_proxy_pool_(http_proxy_pool), base_(max_sockets, max_sockets_per_group, histograms, - base::TimeDelta::FromSeconds( - ClientSocketPool::unused_idle_socket_timeout()), - base::TimeDelta::FromSeconds(kUsedIdleSocketTimeout), + ClientSocketPool::unused_idle_socket_timeout(), + ClientSocketPool::used_idle_socket_timeout(), new SSLConnectJobFactory(transport_pool, socks_pool, http_proxy_pool, diff --git a/net/socket/transport_client_socket_pool.cc b/net/socket/transport_client_socket_pool.cc index cd666d3..7138bb9 100644 --- a/net/socket/transport_client_socket_pool.cc +++ b/net/socket/transport_client_socket_pool.cc @@ -385,9 +385,8 @@ TransportClientSocketPool::TransportClientSocketPool( ClientSocketFactory* client_socket_factory, NetLog* net_log) : base_(max_sockets, max_sockets_per_group, histograms, - base::TimeDelta::FromSeconds( - ClientSocketPool::unused_idle_socket_timeout()), - base::TimeDelta::FromSeconds(kUsedIdleSocketTimeout), + ClientSocketPool::unused_idle_socket_timeout(), + ClientSocketPool::used_idle_socket_timeout(), new TransportConnectJobFactory(client_socket_factory, host_resolver, net_log)) { base_.EnableConnectBackupJobs(); |