前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于MySQL DNS解析探究之二:unauthenticated user

关于MySQL DNS解析探究之二:unauthenticated user

作者头像
囚兔
发布2018-02-08 10:39:04
1.2K0
发布2018-02-08 10:39:04
举报
文章被收录于专栏:IT杂记IT杂记

把这篇没写完的文章写完,2015年的事就不留到2016了

开启DNS解析

代码语言:javascript
复制
mysql> show variables like 'skip_name_resolve';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| skip_name_resolve | OFF   |
+-------------------+-------+

通过代码模拟用户查询请求,不断的建立连接执行sql查询,然后通过show processlist命令查看连接情况:

JAVA代码一

代码语言:javascript
复制
/**
 *  MySQL Problem DNS lead to 'unauthenticated  user'
 */
public class MysqlDNSUnauthUser {

    public static final Logger LOG = LoggerFactory
            .getLogger(MysqlDNSUnauthUser.class);
    /**
     * 执行查询操作
     * @return
     */
    public static long query() {

        long start = System.currentTimeMillis();
        Connection conn = null;
        Statement stmt = null;

        String sql = "select 1";
        try {
            // 创建新的连接
            conn = DBUtils.getConnection();
            stmt = conn.createStatement();
            stmt.executeQuery(sql);

        } catch (SQLException e) {
            LOG.error(e.getMessage(), e);
        } finally {
            DBUtils.close(conn, stmt);
        }

        long end = System.currentTimeMillis();
        return end - start;
    }

    public static void main(String[] args) {

        // 描述统计
        DescriptiveStatistics stats = new DescriptiveStatistics();
        int n = 0;
        while(true) {
            n++;
            long time = query();
            stats.addValue(time);
            if(n == 1000) break;
        }

        LOG.info(stats.toString());
    }
}

打印结果如下:

代码语言:javascript
复制
n: 1000
min: 10.0
max: 421.0
mean: 14.202000000000002
std dev: 16.242444797905648
median: 12.0
skewness: 20.270437547223214
kurtosis: 463.94461541900915

发现最大值421ms

代码语言:javascript
复制
mysql> show processlist;
+------+----------------------+-------------------+------+---------+------+-------+------------------+
| Id   | User                 | Host              | db   | Command | Time | State | Info             |
+------+----------------------+-------------------+------+---------+------+-------+------------------+
|    7 | root                 | localhost         | test | Query   |    0 | NULL  | show processlist |
| 2763 | unauthenticated user | 192.168.4.2:54804 | NULL | Connect | NULL | login | NULL             |
+------+----------------------+-------------------+------+---------+------+-------+------------------+

可以发现其中出现unauthenticated user的用户

关闭DNS解析

/etc/my.cnf中的[mysqld]节点增加skip_name_resolve,重启mysqld服务

代码语言:javascript
复制
mysql> show variables like 'skip_name_resolve';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| skip_name_resolve | ON    |
+-------------------+-------+

再次执行JAVA代码一,结果如下:

代码语言:javascript
复制
n: 1000
min: 7.0
max: 413.0
mean: 10.306999999999988
std dev: 16.131117877070835
median: 9.0
skewness: 20.655330340756084
kurtosis: 471.9124123214076

对比上一次开启DNS解析,这次的结果性能有所提高,上一次的均值是14ms,这次为10ms

代码语言:javascript
复制
mysql> show processlist;
+------+----------------------+-------------------+------+---------+------+-------+------------------+
| Id   | User                 | Host              | db   | Command | Time | State | Info             |
+------+----------------------+-------------------+------+---------+------+-------+------------------+
|    2 | root                 | localhost         | NULL | Query   |    0 | NULL  | show processlist |
| 3891 | unauthenticated user | 192.168.4.2:59502 | NULL | Connect | NULL | login | NULL             |
+------+----------------------+-------------------+------+---------+------+-------+------------------+

可以发现仍然出现了unauthenticated user的用户

目前可得出如下结论:

DNS解析确实会影响连接建立的性能,但是DNS解析开启与否,与出现unauthenticated user没有关系

猜想unauthenticated user的出现应该是连接在建立的过程中出现的临时状态

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开启DNS解析
  • 关闭DNS解析
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档