您的位置:首页 > 理论基础 > 计算机网络

如何创建高效的 Http,Wcf 网络通信

2012-02-01 15:23 183 查看
用HttpWebRequest去Call别的Service,怎样才能提高并发量和性能?

因为建立一个TCP连接要三次握手,.Net 默认使用 keepAlive = Ture 去重用连接,避免重建Connection的开销,还有一些设置我们也要注意:

DefaultConnectionLimit

description: Maximum number of concurrent connections to a single ServicePoint

default: 2

suggested: 12*N, N is the number of CPU

MaxServicePointIdleTime

description: Maximum idle time of ServicePoint object, but in the testing, i found it's the maximum idle time of the TCP connection in connection pool, http://msdn.microsoft.com/en-US/library/system.net.servicepointmanager.maxservicepointidletime.aspx

default: 100000ms

suggested: 3600000ms, 1 hour, set a long time to keep the connection, avoid creating connection every call.

ConnectionLeaseTimeout

description: A Int32 that specifies the number of milliseconds that an active ServicePoint connection remains open. The default is -1, which allows an active ServicePoint connection to stay connected indefinitely. Set this property to 0 to force ServicePoint connections to close after servicing a request.

default: -1

suggested: -1

MaxServicePoints

description: Maximum number of concurrent ServicePoint objects

default: 0, means no limited.

suggested: 0

TcpKeepAliveTimeInMillis

description: after idle more than n ms, a keepalive tcp package will be send by client, to verify the connection is still available or not.

default: 7200000ms, 2 hours

suggested: 10000ms, 10s, recyle the bad connections in time, reduce the burden of the server.

TcpKeepAliveIntervalInMillis

description: between when successive keep-alive packets are sent if no acknowledgement is received, until received a response, if 5 packages were sent, and no any response, this connection will be drop, http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.settcpkeepalive.aspx

default: 1000ms

suggested: 1000ms

ServicePointManager.Expect100Continue = false;
ServicePointManager.UseNagleAlgorithm = false;

MaxWorkerThreads 100
MaxIOThreads 100
MaxConnection 12*N
MinfreeThreads 88*N
MinLocalRequestfreeThreads 88*N
MinWorkerThreds 50 (MaxWorkerThreads/2)

参考资料:

http://support.microsoft.com/kb/821268 http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83 http://blogs.msdn.com/b/jpsanders/archive/2009/05/20/understanding-maxservicepointidletime-and-defaultconnectionlimit.aspx http://blogs.msdn.com/b/adarshk/archive/2005/01/02/345411.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: