我想在我们的一个Web服务器上执行一些性能测试,以查看服务器如何处理大量持久连接。不幸的是,我并不熟悉HTTP和Web测试。这里的Python代码我已经得到了这个至今:连接到HTTP服务器的urllib.request连接的持久性
import http.client
import argparse
import threading
def make_http_connection():
conn = http.client.HTTPConnection(options.server, timeout=30)
conn.connect()
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument("num", type=int, help="Number of connections to make (integer)")
parser.add_argument("server", type=str, help="Server and port to connect to. Do not prepend \'http://\' for this")
options = parser.parse_args()
for n in range(options.num):
connThread = threading.Thread(target = make_http_connection, args =())
connThread.daemon = True
connThread.start()
while True:
try:
pass
except KeyboardInterrupt:
break
我的主要问题是:如何保持这些连接活着吗?我设置了一个很长的超时时间,但这是一个非常粗糙的方法,我甚至不确定它会影响连接。每隔一段时间简单地请求一两个字节呢?
(此外,在一个不相关的音符,有没有在我的代码结束等待键盘中断比丑while True:
块一个更好的方法?)
你是什么意思的“持续连接”?服务器的正常活动将用于客户端连接,服务器发送响应并关闭连接。 – jjm 2012-03-19 15:39:44
@jjm使用“Connection:Keep-Alive”标题([link](http://en.wikipedia.org/wiki/HTTP_persistent_connection))保持活动的特定连接。 – Kudzu 2012-03-19 20:05:49