前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pike版本变慢,不慌,看云计算十年老兵教你一招化解

Pike版本变慢,不慌,看云计算十年老兵教你一招化解

作者头像
腾讯云TStack
发布2018-08-09 12:22:37
5890
发布2018-08-09 12:22:37
举报
文章被收录于专栏:腾讯云TStack专栏

作者简介

缘起

升级到Pike版本以后,服务反应非常慢,因此去追查原因。K版和P版的速度对比,如下:

Kilo版(0.077s):

Pike版本(0.480s):

Pike版本的速度是Kilo版本的6倍左右,考虑到Keystone的请求,在OpenStack中非常关键,所以需要优化。

追查过程

没有好方法,从代码一层层追吧。keystone采用的apache启动的,采用python编写,调用逻辑:

router: keystone/auth/routers.py (获取token的函数authenticate_for_token)

controller: ./auth/controllers.py

 这个是上层调用函数,后面工作函数在272行(method.authenticate),通过追查,发现默认的backend的SQL,继续追查keystone/identity/backends/sql.py

通过_check_password对密码进行验证

追查 keystone/common/password_hashing.py

看看hasher是什么,如下:

配置了4种Hash算法,默认采用第一种bcrypt算法。通过反复对比,发现函数耗时就在密码验证。

原因

在Kilo版本中,密码验证采用的是sha512_crypt,如下:

那么sha512_crypt和bcrypt算法为什么有这么大差异呢,就要讲讲加密算了。

在数据库中,直接存储密码显然是不安全的,因为当敌手侵入到数据库中,就可以截获到所有账号对应的真实密码。为了解决上述问题,最好的方法就是使用一种不可逆的加密算法,将要保存密码进行加密处理。

当下不可逆的加密算法主要有以下几种:

  • 简单的密码
    • MD5
    • MD5+SLAT
  • 中等的密码
    • SHA-1
    • SHA-256
    • SHA-384
    • SHA-512
  • 较安全密码
    • PBKDF2
  • 更安全密码
    • bcrypt
    • scrypt

具体原理可以参考相关的算法资料。速度测试:

相比SHA-512,Bcrypt的速度实在低得可怜。所以问题和明显,修改算法就能解决问题,考虑到bcrypt的安全性,还是不要太降低安全性才好,通过查看文档,bcrypt算法中,有一个参数:加密轮数。尝试通过加密轮数解决问题。如下,测试从round=4到round=14的速度,发现round=5最快,结果如下:

查看keystone的配置文件,round=12,没有什么多说的,直接改成5试试。

速度测试

速度从0.480降低到0.143。速度提升了3倍多,但是相比K版本0.77的速度,还是多了一倍。主要原因是加密算法的强度加大,同时keystone的数据和逻辑更加复杂了。

悄悄讲个内幕

自从我们放出美少女架构师之后,很多人在后台留言,要求进行深入的技(qing)术(gan)交流,晓东哥按捺不住埋藏多年的网红梦,熬夜写稿,强行加档期,请走过的,路过的多多转发,送他出道~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云TStack 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档