mysql 连接慢的问题

现象:

今发现网站访问数据库变慢,经查,查询数据库很快,连接数据库比较耗时。

解决办法:

在mysql的配置文件my.cnf中,在[mysqld]下面加上这个配置就可以了.

附录:[mysqld]部分要加入一个参数skip-name-resolve :主机名不被解析。加入后在授权表的 Host 的列值必须是IP数字或 localhost 。

How MySQL uses DNS

When a new thread connects to mysqld, mysqld will spawn a new thread to handle the request. This thread will first check if the hostname is in the hostname cache. If not the thread will call gethostbyaddr_r() and gethostbyname_r() to resolve the hostname.

If the operating system doesn‘t support the above thread-safe calls, the thread will lock a mutex and call gethostbyaddr() and gethostbyname() instead. Note that in this case no other thread can resolve other hostnames that is not in the hostname cache until
the first thread is ready.

You can disable DNS host lookup by starting mysqld with --skip-name-resolve. In this case you can however only use IP names in the MySQL privilege tables.

If you have a very slow DNS and many hosts, you can get more performance by either disabling DNS lookop with --skip-name-resolve or by increasing the HOST_CACHE_SIZE define (default: 128) and recompile mysqld.

You can disable the hostname cache with --skip-host-cache. You can clear the hostname cache with FLUSH HOSTS or mysqladmin flush-hosts.

If you don‘t want to allow connections over TCP/IP, you can do this by starting mysqld with --skip-networking

mysql 连接慢的问题

时间: 2024-10-06 17:33:44

mysql 连接慢的问题的相关文章

查看mysql连接状态各类参数

命令: show processlist; 如果是root帐号,你能看到所有用户的当前连接.如果是其它普通帐号,只能看到自己占用的连接. show processlist;只列出前100条,如果想全列出请使用show full processlist; mysql> show processlist; 命令: show status; 命令:show status like '%下面变量%'; Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量. Aborted

redis mysql 连接池 之 golang 实现

分享一下 golang 实现的 redis 和 mysql 连接池,可以在项目中直接引用连接池句柄,调用对应的方法. 举个栗子: 1 mysql 连接池的使用 (1) 在项目子目录放置 mysql.go (2)在需要调用的地方导入连接池句柄 DB (3)调用 DB.Query() 2 redis 连接池的使用 (1)在项目子目录放置 redis.go (2)在需要调用的地方导入连接池句柄 Cache (3)调用 Cache.SetString ("test_key", "te

虚拟机中MySQL连接问题:Lost connection to MySQL server at 'reading initial communication packet, system error: 0 以及 host is not allowed to connect mysql

环境:在VirtualBox中安装了Ubuntu虚拟机,网络使用了NAT模式,开启了端口转发. 局域网内其他计算机访问虚拟机中的MySQL Server出现两个问题: Lost connection to MySQL server at 'reading initial communication packet, system error: 0 以及 host is not allowed to connect mysql 1.解决Lost connection to MySQL server

mysql连接错误导致用户blocked

1.每过一段时间线上业务就会出现如下错误: kHost 'XXXXX' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'Connection closed by foreign host 2.需要使用mysqladmin flush-hosts解锁用户 3.查看错误日志 4.查看官方文档对max_connect_errors的解释如下     当某用户连续的错误连接达到max_c

node.js中mysql连接池的使用

https://cnodejs.org/topic/58378543bde2b59e06141f5a 起初的做法是创建一个连接然后使用,后来发现一段时间后会出现卡死不响应的情况,只有重启nodejs服务,搜索一番后想到了用连接池,经测试,不再出现卡死不响应情况. 参考链接: https://www.npmjs.com/package/mysql http://blog.csdn.net/lovingshu/article/details/41721233 Node.js mysql连接池模块 1

2.MySQL 连接与管理

mysql连接 mysql_connect() 函数用于开启一个到 MySQL 数据库的连接. 语法: mysql_connect( servername, username, password ) 返回资源型或FALSE 在 PHP 程序执行完之后,会自动关闭对数据库的连接.如果想在执行完之前就关闭数据库连接,可以使用 mysql_close() 函数: mysql_close( $conn );其参数是一个资源型变量 返回布尔值

shell命令批量杀死MySQL连接进程

(1)将所有的MySQL连接进程杀掉 for i in `mysql -uroot -pzhangyun -Bse "show processlist" | grep -v "show processlist" | awk '{print $1}'` do mysql -uroot -pzhangyun -e "kill $i" done 注:这里将自身命令的show processlist进程过滤掉 (2)删除指定用户的连接进程 for i i

mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案 详细出处参考:http://www.jb51.net/article/32284.htm

MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效.在这种情况下,如果客户端代码向 c3p0 连接池请求连接的话,连接池就会把已经失效的连接返回给客户端,客户端在使用该失效连接的时候即抛出异常 解决这个问题的办法有三种: 1. 增加 MySQL 的 wait_timeout 属性的值. 修改 /etc/mysql/my.cnf文件,在 [mysqld] 节中设置: # Set a connection to w

Adobe Dreamweaver CC MySQL连接 报404错误的解决方法

Adobe Dreamweaver CC MySQL连接时总报404报错,并给以下两个提示: 1) 在该服务器机器上没有测试服务器运行. 2) 为该站点指定的测试服务器没有映射到http://localhost/_mmServerScripts/MMHTTPDB.phpURL.请确认url前缀映射到了你站点的根上. 网上翻了一堆网站,折腾了两三天,发现可以按如下方法解决: 1)首先要在http://localhost/security/index.php配置mysql的访问密码(我用的是XAMP

CentOS下安装MySQL,Windows下使用Navicat for MySql连接

安装 查看有没有安装过:          yum list installed mysql*          rpm -qa | grep mysql* 查看有没有安装包:          yum list mysql* 安装mysqlclient:          yum install mysql 安装mysql server端:          yum install mysql-server          yum install mysql-devel 启动&&停止