JMeter 和 Python bottle - 不关闭套接字
JMeter and Python bottle - not closing sockets
我们有一个 API,用 Python 编写并使用 Bottle 和 Cherrypy,我们需要对其进行压力测试。我们已经创建了一个 JMeter 脚本来执行此操作,但在执行几分钟后,调用开始失败并出现以下异常:-
java.net.BindException: Address already in use: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
我似乎无法弄清楚如何告诉 JMeter 不要挂在套接字上,或者如何告诉 Bottle 放下它们。我们已经尝试使用 JMeter 的 KeepAlive 打开和关闭等选项,但没有成功。
我们已经从 API 中提取了几乎所有内容,但此脚本仍然存在问题(没有我们的任何功能包袱)。
"""
This script provides a dummy API, which responds to every GET as if it found something.
"""
import bottle
import os
import sys
import datetime
import routes
if __name__ == '__main__':
HOST = 'localhost'
PORT = 5555
@bottle.route('/thing/:id', builtin_function_or_method='GET')
def get_thing(id):
response_json = {
'data': {
'type': 'thing',
'id': id,
'meta': {
'date_retrieved': datetime.datetime.now().isoformat()
}
}
}
bottle.response.headers['Cache-Control'] = 'public,max-age=0'
return response_json
bottle.run(server='cherrypy', host=HOST, port=PORT)
这是 Python 3.6.5、Cherrypy 8.9.1 和 JMeter 3.3 运行 Windows。
我在 windows 机器的 运行 JMeter 压力测试中遇到过类似的情况。这应该是由于 windows 作为标准设置的端口限制而发生的。根据他们的文档,有 5000 个默认端口。您可以尝试使用此 guide
增加此值
我们有一个 API,用 Python 编写并使用 Bottle 和 Cherrypy,我们需要对其进行压力测试。我们已经创建了一个 JMeter 脚本来执行此操作,但在执行几分钟后,调用开始失败并出现以下异常:-
java.net.BindException: Address already in use: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
我似乎无法弄清楚如何告诉 JMeter 不要挂在套接字上,或者如何告诉 Bottle 放下它们。我们已经尝试使用 JMeter 的 KeepAlive 打开和关闭等选项,但没有成功。
我们已经从 API 中提取了几乎所有内容,但此脚本仍然存在问题(没有我们的任何功能包袱)。
"""
This script provides a dummy API, which responds to every GET as if it found something.
"""
import bottle
import os
import sys
import datetime
import routes
if __name__ == '__main__':
HOST = 'localhost'
PORT = 5555
@bottle.route('/thing/:id', builtin_function_or_method='GET')
def get_thing(id):
response_json = {
'data': {
'type': 'thing',
'id': id,
'meta': {
'date_retrieved': datetime.datetime.now().isoformat()
}
}
}
bottle.response.headers['Cache-Control'] = 'public,max-age=0'
return response_json
bottle.run(server='cherrypy', host=HOST, port=PORT)
这是 Python 3.6.5、Cherrypy 8.9.1 和 JMeter 3.3 运行 Windows。
我在 windows 机器的 运行 JMeter 压力测试中遇到过类似的情况。这应该是由于 windows 作为标准设置的端口限制而发生的。根据他们的文档,有 5000 个默认端口。您可以尝试使用此 guide
增加此值