最近公司部署了个网站,一台web服务器,一台mysql服务器。由于访问量比较大,网站一到高峰期,打开速度奇慢。于是尝试对sql语句优化,同时部分页面,sql语句采用memcached缓存,虽然服务器有所缓解,但是高峰期仍然非常吃力。
今天由于偶然登录mysql服务器(mysql服务器装有phpmyadmin)查看进程(SHOW PROCESSLIST),我了个去,大量未被认证用户连接mysql,进程结果如下:
|13|unauthenticated user|10.135.26.100:42345|NULL|Connect| |login|NULL|
|14|unauthenticated user|10.135.26.100:42346|NULL|Connect| |login|NULL|
|15|unauthenticated user|10.135.26.100:42349|NULL|Connect| |login|NULL|
见截图:
我了个去,这是虾米情况呢?问了百度谷歌,原因为: MYSQL开启了DNS的反向解析,貌似默认安装就会出现这东东。问题找到,自然问题也就迎刃而解。
- 在启动参数中添加--skip-name-resolve,关闭反向域名解析功能
- 在my.cnf的[mysqld]一节中增加skip-name-resolve
- 在/etc/hosts文件中添加对应的host记录
为方便起见,直接采用方案2,在mysql配置文件my.cnf中f的[mysqld]一节中增加skip-name-resolve。选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。
若使用–skip-grant-tables系统将对任何用户的访问不做任何访问控制,但可以用 mysqladmin flush-privileges或mysqladmin reload来开启访问控制;默认情况是show databases语句对所有用户开放,
如果mysql服务器没有开远程帐户,就在my.cnf里面加上skip-grant-tables。
终于,网站速度飞一般了。哈哈。。。