Следующий код извлекает параметр из запроса и отвечает с 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()
Проблема: Для данного аппаратного обеспечения, мы можем сделать 10к/сек вызовы Couchbase от Tornado машины. Но когда мы звоним с клиента на машину Tornado, мы можем делать только 350 звонков в секунду.
Несомненно, узким местом здесь является торнадо. Как оптимизировать его, чтобы иметь возможность совершать как минимум 7k вызовов/сек?
Что такое пропускная способность торнадо без вызова db и разбор json (result = json.loads (bucket.get (key) [2]))? –
Исправьте меня, если я ошибаюсь, но клиент python использует синхронный API, он может блокировать реактор торнадо – avsej
@avsej: R u говорит о клиенте Couchbase python? 10k/sec было достигнуто с использованием этого – codersofthedark