MySQL 8.0 默认支持ssl登录,但可以用--ssl-mode=disabled给禁掉。
MySQL版本: MySQL 8.0.15
测试情况:
创建帐号: create user 'zst'@'%' identified by 'zstzst' ;
没使用ssl.
同时在[mysqld]配置中禁止skip_name_resolve.
测试脚本
禁用ssl-mode
#tcc.sh export MYSQL_PWD='zstzst' for i in `seq 1 1000` do echo "select 1" |/data/ddata/dfile/mysql-8.0.15-linux-glibc2.12-x86_64/bin/mysql \ -h172.18.0.10 \ -P3310 \ --ssl-mode=disabled \ -uzst done
默认使用ssl-mode
#tssl.sh export MYSQL_PWD='zstzst' for i in `seq 1 1000` do echo "select 1" |/data/ddata/dfile/mysql-8.0.15-linux-glibc2.12-x86_64/bin/mysql \ -h172.18.0.10 \ -P3310 \ -uzst done
time sh tcc.sh >/dev/null
real 0m7.230s
user 0m4.401s
sys 0m2.631s
time sh tssl.sh >/dev/null
real 0m30.237s
user 0m15.078s
sys 0m3.451s
从时间上看默认登录时间比disabled ssl慢很多,但利用strace 对比单个登录,基本没什么差别。
再后来观查tssl.sh 执行中MySQL中经常显示:
| 47113 | unauthenticated user | 172.18.0.1:17085 | NULL | Connect | 0 | login | NULL |
从strace里看也是从读取网络package这块慢了。
这是问题分析: 为什么脚本的逻辑一样,就差一个ssl(默认支持ssl) 会造成这么多的 unauthenticated user.
这个问题差不多搞了一天了,挂这里,看看各位老鸟有什么分析方法,终减少这个unauthenticated user 出现。