我有一个MySql服务器,它有2个活动数据库,用于web应用程序,3个非活动数据库(留作存档用途,但目前未使用)。问题是服务器似乎有异常数量的查询在其中运行。例如,我会重新启动服务器,在一分钟内,如果询问的话,数量会跳转到800,然后它永远不会低于每秒6个查询。
为了进一步测试这一点,我从活动数据库和非活动数据库中删除了所有数据库用户,这样web应用程序用户就无法连接到服务器。到服务器的远程连接也被禁用。唯一与服务器相关联的数据库用户是PHPMyadmin的用户。我让系统处于这种状态,这样就不能生成“真正的查询”了,现在我有了以下数据:
自启动以来的网络流量: 535 MiB
这个MySQL服务器已经运行了0天、14小时、41分钟和26秒。
启动以来的问题:每小时31,858份文件:每分钟2,169索克: 36
有红旗的物品(警告):
中止客户2
中止连接1.1k
创建的tmp磁盘表48
处理程序读取rnd 17.9 k
处理程序读取rnd下一个3M
Innodb缓冲池读取9.1k
键读2.2k
打开表757
慢速查询56
桌锁等待5
我的服务器变量是附在这里
慢速查询日志显示我们从未在web应用程序中编写的查询,如:
SELECT /*!4001 SQL_NO_CACHE/* * FROM <tablename>用于每个数据库中的每个表和一组标记为“发送查询”、“延迟查询”、"SMTP查询“等的大型联合查询。
我的问题是,我的服务器如何生成这么多没有真正用户连接的查询?这是正常的吗?我能做些什么来改善这一点吗?
发布于 2013-08-19 05:20:07
确定没有执行某些数据库查询的cron作业吗?或者您的MySQL没有配置为使用它的事件调度器?
MySQL事件是按照计划运行的任务。因此,我们有时把它们称为预定的事件。创建事件时,您正在创建一个命名的数据库对象,该对象包含一个或多个SQL语句,将以一个或多个定期间隔执行,开始和结束时间为特定日期和时间。从概念上讲,这与Unix (也称为“cron作业”)或的想法类似。
发布于 2014-10-22 23:20:05
问这个问题已经有一段时间了,但是如果对遇到这个问题的人有帮助的话,一种方法是打开通用查询日志来查看正在执行的所有查询(请参阅http://dev.mysql.com/doc/refman/5.5/en/query-log.html),并查看是否有熟悉的查询。如果您不识别这些查询,可以尝试对部分查询执行递归grep,以找到它们位于服务器上的代码/脚本。
https://serverfault.com/questions/531900
复制相似问题