架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 22191|回复: 4

[资料] .NET/C# 操作 MySQL 数据库之 SslMode 性能优化

[复制链接]
发表于 2021-6-18 09:41:15 | 显示全部楼层 |阅读模式
SSL(Secure Socket Layer:安全套接字层)利用数据加密、身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议提供安全性保证。如果用户的传输不是通过SSL的方式,那么其在网络中数据都是以明文进行传输的,而这给别有用心的人带来了可乘之机。所以,现在很多大型网站都开启了SSL功能。同样地,在我们数据库方面,如果客户端连接服务器获取数据不是使用SSL连接,那么在传输过程中,数据就有可能被窃取。

SSL协议提供的功能主要有:

1、 数据传输的机密性:利用对称密钥算法对传输的数据进行加密。
2.、身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的。
3、 消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性。

在使用 .NET/C# 操作 MySQL 数据库的时候,SslMode 的默认值是 Prefered,如果服务器支持,请使用SSL。

https://dev.mysql.com/doc/dev/connector-net/6.10/html/P_MySql_Data_MySqlClient_MySqlConnectionStringBuilder_SslMode.htm

QQ截图20210618093337.jpg

使用默认方式,在大量并发的情况下,可能会报错如下:

English Message : Connection open error . Authentication to host '192.168.1.100' for user 'itsvse' using method 'mysql_native_password' failed with message: Reading from the stream has failed.


Connection open error . error connecting: Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.
QQ截图20210618092615.jpg

使用 SSL 能确保数据传输的安全性,但是也会降低查询和执行的效率,增加数据库和程序的压力。由于,我们数据库是处于内网环境,相对来说,是非常安全的,没必要进行传输加密,所以可以不使用 SSL 加密来提高效率和性能。

使用SSL前后性能对比(QPS):https://www.cnblogs.com/mysql-dba/p/7061300.html

QQ截图20210618093819.jpg

从测试数据可以发现,开启SSL后,数据库QPS平均降低了23%左右,相对还是比较影响性能的。从SSL实现方式来看,建立连接时需要进行握手、加密、解密等操作。所以耗时基本都在建立连接阶段,这对于使用短链接的应用程序可能产生更大的性能损耗,比如采用PHP开发。不过如果使用连接池或者长连接可能会好许多。

为了提高性能,所以修改连接字符串如下:

(完)




上一篇:.NET/C# 设置最小线程数 ThreadPool.SetMinThreads 提高性能
下一篇:【转】mysql 新增表或字段时判断是否存在
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2022-2-11 11:33:08 | 显示全部楼层
MySQL .NET 连接字符串选项:https://mysqlconnector.net/connection-options/
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2022-2-11 13:23:13 | 显示全部楼层
Java JDBC 字符串属性

5.1 驱动是 useSSL 和 requireSSL
https://dev.mysql.com/doc/connec ... props-security.html

8.0 才有了 sslMode
https://dev.mysql.com/doc/connec ... props-security.html

关闭 ssl ,设置:sslmode=disabled
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2022-2-11 14:04:56 | 显示全部楼层
Java JDBC 之 rewriteBatchedStatements、allowPublicKeyRetrieval...
https://www.itsvse.com/thread-10252-1-1.html
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-4-11 15:09:04 | 显示全部楼层
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-27 05:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表