Бутылка JMeter и Python - не закрывающиеся розетки - PullRequest
0 голосов
/ 01 мая 2018

У нас есть 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 бросить их. Мы пробовали это с такими опциями, как KeepAlive JMeter, но безуспешно.

Мы вытащили почти все из 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.

1 Ответ

0 голосов
/ 08 мая 2018

Я сталкивался с подобным во время стресс-тестов JMeter с Windows-машины. Это должно происходить из-за ограничений порта, установленных Windows в качестве стандарта. Есть 5000 портов по умолчанию в соответствии с их документами. Вы можете попытаться увеличить это значение, используя guide

...