使用 ProxySQL 改进 MySQL SSL 的连接性能

栏目: 数据库 · Mysql · 发布时间: 7年前

内容简介:在这篇博文里,我们准备来看一下 ProxySQL 是如何提高 MySQL 的 SSL 连接性能的。

在这篇博文里,我们准备来看一下 ProxySQL 是如何提高 MySQL 的 SSL 连接性能的。

当用 SSL 部署 MySQL 时,主要的问题是如果没有使用连接池(例如:PHP 中的 mysqlnd-mux,python中 的 mysql.connector.pooling 等等),初始握手会造成大量的开销。不断的关闭连接、创建新的连接会对你的查询时间造成很大的影响。客户和同事最近让我知道了,虽然你可以用现代的英特尔处理器 AES-NI 硬件扩展来提升 SSL 加密/解密性能,但实际上,建立 SSL 连接时的开销来自于多次服务器和客户端建立连接时需要的握手。

使用 ProxySQL 支持 SSL 的后端连接和连接池,我们可以将它应用在任何应用程序上、同一个服务器(说明如下):

使用 ProxySQL 改进 MySQL SSL 的连接性能

在这种情况下,ProxySQL 运行在同一台服务器上的一个应用下,并且通过本地套接字与 MySQL 连接。MySQL 数据就不需要通过不安全的 TCP 流进行传输了。

我使用一个 PHP 脚本简单地在一个单线程中创建了 1 万个连接,来看看性能表现如何:

没有使用 SSL 直接连接 MySQL:

使用 SSL 直接连接 MySQL:

在 OpenVPN 隧道下没有使用 SSL 直接连接 MySQL:

接下来,使用 ProxySQL 通过本地套接字文件连接:

下面是这些数据的对比图:

使用 ProxySQL 改进 MySQL SSL 的连接性能

如你所见,使用 SSL 和不使用 SSL 情况下的开销差距大约是 400% —— 对某些负载来说还是很可怕的。

通过 OpenVPN 连接大体上都比 SSL 好。有趣的是,OpenVPN 服务器需要部署在另一台服务器上,与 MySQL 服务器和应用分开。

这种方法允许应用服务器和 MySQL 服务器(包括副本/集群节点)在同一个安全网络上进行通信,但会创建一个单一的故障点。另外,当有一个新的远程 master 的时候,在 MySQL 服务器上部署 OpenVPN 意味着如果你要新增一个额外的高可用性能的扩展会变得相当复杂。总之,OpenVPN 增加了许多额外的部件。

ProxySQL 的漂亮之处在于,你可以在所有应用程序服务器运行它,只要将其指向到正确的 MySQL 服务器(主服务器)即可正常工作,或者使用复制组功能来识别权威主机。

最后,需要注意的是,这些测试都是在 CentOS 7.3 + OpenSSL 1.0.1e + Percona Server for MySQL 5.7.19 + ProxySQL 1.4.1 + PHP 5.4 + OpenVPN 2.4.3 上面进行的。

祝您使用愉快。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Kotlin实战

Kotlin实战

【美】Dmitry Jemerov(德米特里·詹莫瑞福)、【美】 Svetlana Isakova(斯维特拉娜·伊凡诺沃) / 覃宇、罗丽、李思阳、蒋扬海 / 电子工业出版社 / 2017-8 / 89.00

《Kotlin 实战》将从语言的基本特性开始,逐渐覆盖其更多的高级特性,尤其注重讲解如何将 Koltin 集成到已有 Java 工程实践及其背后的原理。本书分为两个部分。第一部分讲解如何开始使用 Kotlin 现有的库和API,包括基本语法、扩展函数和扩展属性、数据类和伴生对象、lambda 表达式,以及数据类型系统(着重讲解了可空性和集合的概念)。第二部分教你如何使用 Kotlin 构建自己的 ......一起来看看 《Kotlin实战》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具