我在生产环境中的 Debian 7 上运行 MySQL 服务器。我最近(或多或少是无意中)查看了 phpMyAdmin 中可以显示的服务器统计信息。我发现 MySQL 服务器通过回答大量SELECT
查询生成了大量传出流量。
一些例子:
- 根据 phpMyAdmin 的数据,我每小时大约有 19,000 个连接
SELECT
每小时约有 7,779.5 条语句- 我每小时产生大约 160 MB 的传出流量
您可能认为这对于生产环境来说不算太多。问题是,托管在此服务器上并使用此 MySQL 主机的应用程序还不太流行,因此它们产生如此大的流量在某种程度上是非常不现实的。
为了找出导致如此多查询的原因,我启用了 MySQL 服务器的详细日志记录,重新启动服务器后仅 1 分钟就看到了以下内容:
Time Id Command Argument
150306 7:14:13 1 Connect debian-sys-maint@localhost on
1 Quit
2 Connect debian-sys-maint@localhost on
2 Quit
3 Connect debian-sys-maint@localhost on mysql
3 Query select @@version_comment limit 1
3 Query show variables like 'datadir'
3 Quit
4 Connect debian-sys-maint@localhost on
4 Query select @@version_comment limit 1
4 Query SELECT count(*) FROM mysql.user WHERE user='root' and password=''
4 Quit
5 Connect debian-sys-maint@localhost on
5 Query select @@version_comment limit 1
5 Query select concat('select count(*) into @discard from `',
TABLE_SCHEMA, '`.`', TABLE_NAME, '`')
from information_schema.TABLES where ENGINE='MyISAM'
5 Quit
6 Connect debian-sys-maint@localhost on
6 Query select @@version_comment limit 1
6 Query select count(*) into @discard from `information_schema`.`COLUMNS`
6 Quit
7 Connect debian-sys-maint@localhost on
7 Query select @@version_comment limit 1
7 Query select count(*) into @discard from `information_schema`.`EVENTS`
7 Quit
8 Connect debian-sys-maint@localhost on
8 Query select @@version_comment limit 1
8 Query select count(*) into @discard from `information_schema`.`PARAMETERS`
当然还有很多这样的条目。因此,我确信用户 debian-sys-maint 是造成流量的原因。
有人能告诉我为什么这个用户发出了这么多查询吗?我知道这不是一个“普通”用户,而是一个系统用户,当然,它用于维护。
如果您需要有关环境的更多信息,请告诉我。