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

作者简介

缘起

升级到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)交流,晓东哥按捺不住埋藏多年的网红梦,熬夜写稿,强行加档期,请走过的,路过的多多转发,送他出道~

原文发布于微信公众号 - 腾讯云TStack(gh_035269c8aa5f)

原文发表时间:2018-08-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏建站达人秀

如何搭建 HTTPS 网站

SSL 即安全套接层数字证书,数字证书是一种用于电脑的身份识别机制。数字证书可以从身份认证机构获得。理论上任何人都可以给您发个数字证书。换个说法就是给您发数字证...

9763
来自专栏拂晓风起

网站安全登录 web应用安全登录 密码 防截获

1653
来自专栏前端儿

HTTPS 概述

HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机...

2532
来自专栏黑白安全

Web安全测试学习手册-业务逻辑测试

1.2 验证码过于简易时效性过长,接口未做限制(一般为纯数字4-8位数,时效性长达30分钟以上可以对验证码进行枚举)。

1422
来自专栏FreeBuf

安全科普:HTTPS初探

* 本文作者:HPT @Dragon团队,本文属FreeBuf原创奖励计划,未经许可禁止转载 本篇主要为大家带来的是HTTPS的内容,相信大家已经从各种途径看过...

2028
来自专栏黑白安全

中间人(MITM)攻击

中间人(MITM)攻击是一个通用术语,表示当犯罪者将自己置于用户与应用程序之间的对话中时 - 窃听或模仿其中一方,使其看起来好像是正常的信息交换进展中。

1512
来自专栏java一日一条

30分钟让网站支持HTTPS

我不是安全专家也不是搞服务器的,所以这对我而言也是一种有趣的经历,而记录这个过程可以让其他任何人也能很快地做到这些。包括一些暂时的停顿时间,我总共只花了20-3...

1934
来自专栏FreeBuf

一封伪造邮件引发的“探索”(涉及钓鱼邮件、SPF和DKIM等)

0x00. 引言 我用swaks 发送一封以我们公司CTO为显示发件人(腾讯企业邮箱)的伪造邮件给我的一个同事,邮件的内容就是让这位同事去CTO的办公司一趟,没...

1.2K6
来自专栏守望轩

WordPress整站轻松开启HTTPS

近两年来HTTPS取代HTTP已经成为大势所趋。早在2014年google Chromium安全团队提议将所有的HTTP协议网站标注为不安全。现在,Chr...

5329
来自专栏网站那些事

一段php小代码,监控SSL证书过期问题

Let’s Encrypt ,它拥有较短的有效期(三个月);通过 acme 协议,API 自动颁发证书;让一切 web 流量加密的理念;知名机构的支持; htt...

46711

扫码关注云+社区

领取腾讯云代金券