博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tornado做鉴权服务性能实践
阅读量:6303 次
发布时间:2019-06-22

本文共 1692 字,大约阅读时间需要 5 分钟。

一. Torado实现鉴权服务

使用python的第三方jwt做鉴权服务, 生产token代码:

def create_token(self, userId, product, level):    payload = {        "product": product,        "level": level,        "exp": int(time.time()) + 86400 * 7,        "username": userId,    }    token = jwt.encode(payload, SECRETKEY, algorithm='HS256')    return token

mongodb版本是3.6,数据库操作使用了pymongo;使用了自定义的对象仓储,对比直接操作数据格式本身,这一点肯定是拖性能后退的

鉴权句柄的实现:

class AuthHandle(RequestHandler):    def post(self):        try:            body = json.loads(self.request.body)            user = UserRepository().get(body['username'])            if not user:                user = UserRepository().create_new(body['username'])            token = Authenticationner().create_token(user.userId, user.product, user.level)            self.write({'token': token})        except Exception:            Logger.error(traceback.format_exc())

tornado做web服务和路由转发:

class Application(Application):    def __init__(self):        handlers = [            (r"/users/login", AuthHandle),        ]        super(Application, self).__init__(handlers, **settings)if __name__ == "__main__":    application = Application()    application.listen(address.get("port"), address.get("ip"))    tornado.ioloop.IOLoop.instance().start()

二. 性能优化实践

使用cenos环境,双核,8G内存,没有反向代理和缓存的前提下,性能表现如下

2.1 压力测试

使用jmeter做200并发压力,结果如下:

clipboard.png

最大时延4s,TPS达到39.6/s,感觉还是很理想的

2.2 开启多进程之后

from tornado.options import options, defineapplication = Application()define("port", default=address.get("port"), help="", type=int)http_server = tornado.httpserver.HTTPServer(application)http_server.bind(options.port, address.get("ip"))http_server.start(0)  # 进程数量等于机器核数量tornado.ioloop.IOLoop.instance().start()

性能有明显提升:

clipboard.png

最大时延484ms,TPS达到了126

转载地址:http://ghfxa.baihongyu.com/

你可能感兴趣的文章
mybatis 乐观锁和逻辑删除
查看>>
课后作业-团队编程项目总结
查看>>
4.Date 日期对象
查看>>
冒泡排序法算法分析
查看>>
linux服务器解压缩文件的命令
查看>>
排序算法汇总(转载收藏)
查看>>
POJ 1063 Flip and Shift
查看>>
vdbench和fio测试磁盘性能的对比总结
查看>>
博客园博客评论ajax异步提交练习
查看>>
Object-C入门一些东西
查看>>
WPF基础之样式设置和模板化
查看>>
iOS之NSArray数组排序
查看>>
我在部委这十年(转)
查看>>
TI AM335x Linux MUX hacking
查看>>
ue4 c++学习推荐
查看>>
毕业设计之房产中介系统源码
查看>>
「黑科技」增加栈的空间
查看>>
Git&Github基础
查看>>
Codeforces 862 A Mahmoud and Ehab and the MEX 水题
查看>>
go 程序设计语言 命令行参数
查看>>