Websocket 如何优化龙卷风?

Websocket 如何优化龙卷风?,websocket,benchmarking,tornado,couchbase,Websocket,Benchmarking,Tornado,Couchbase,下面的代码从请求获取参数,并根据参数值从couchbase db响应 couchbase = Couchbase("ubuntumartini03:8091", "thebucket", "") bucket = couchbase["thebucket"] class MH(tornado.web.RequestHandler): def get(self): key = self.get_argument("pub_id", strip=Tr

下面的代码从请求获取参数,并根据参数值从couchbase db响应

couchbase = Couchbase("ubuntumartini03:8091", "thebucket", "")
bucket = couchbase["thebucket"]

class MH(tornado.web.RequestHandler):
        def get(self):
                key = self.get_argument("pub_id", strip=True)
                result = json.loads(bucket.get(key)[2])
                self.write(result['metaTag'])


if __name__=="__main__":
        app = tornado.web.Application(handlers=[(r"/", MH)])
        app.listen(8888,"")
        tornado.ioloop.IOLoop.instance().start()
问题:对于给定的硬件,我们可以从Tornado机器以每秒10k的速度呼叫Couchbase。但当我们从客户机向Tornado机器打电话时,我们每秒只能打350个电话


这里的瓶颈当然是龙卷风。如何优化它,使其能够每秒至少拨打7k个电话?

您使用的客户端是同步客户端还是反同步客户端?如果这是一个同步客户端,它就不能充分利用tornado ioloop反应堆。

编辑您的代码如下:

from tornado.ioloop import IOLoop


couchbase = Couchbase("ubuntumartini03:8091", "thebucket", "")
bucket = couchbase["thebucket"]

class MH(tornado.web.RequestHandler):
    async def get(self):
        key = self.get_argument("pub_id", strip=True)
        result = await IOLoop.current().run_in_executor(None,bucket.get,*(key))
        self.write(result[2]['metaTag'])


if __name__=="__main__":
    app = tornado.web.Application(handlers=[(r"/", MH)])
    app.listen(8888,"")
    tornado.ioloop.IOLoop.instance().start()

tornado的吞吐量是多少?没有db调用和json解析(result=json.loads(bucket.get(key)[2])?如果我错了,请纠正我,但是python客户端使用同步API,它可能会阻止tornadoreactor@avsej:你在说Couchbase python客户端吗?10公里/秒是通过使用that@PavelPaulau:400调用/秒Python Couchbase客户端是同步的。如果我们能用它每秒拨打10公里的电话,我们就不能用tornado-ioloop反应堆。如果没有,那么在这种情况下应该怎么做?