Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 6个ruby进程调用mysql上的SHOW TABLES,导致mysql崩溃_Ruby On Rails_Ruby_Database_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 6个ruby进程调用mysql上的SHOW TABLES,导致mysql崩溃

Ruby on rails 6个ruby进程调用mysql上的SHOW TABLES,导致mysql崩溃,ruby-on-rails,ruby,database,ruby-on-rails-3,Ruby On Rails,Ruby,Database,Ruby On Rails 3,我正在运行Rails 3.1.0应用程序,我有一个奇怪的问题。在我们的暂存服务器上,只有很少的活动,我们有5个ruby进程不断ping mySQL,如下所示: poll([{fd=12, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout) write(12, "\f\0\0\0\3SHOW TABLES", 16) = 16 select(13, [12], NULL, NULL, NULL) = 1 (in [12]) read(12, "\1

我正在运行Rails 3.1.0应用程序,我有一个奇怪的问题。在我们的暂存服务器上,只有很少的活动,我们有5个ruby进程不断ping mySQL,如下所示:

poll([{fd=12, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(12, "\f\0\0\0\3SHOW TABLES", 16)  = 16
select(13, [12], NULL, NULL, NULL)      = 1 (in [12])
read(12, "\1\0\0\1\1D\0\0\2\3def\0\vTABLE_NAMES\0\31Tabl"..., 16384) = 637
poll([{fd=12, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(12, "\f\0\0\0\3SHOW TABLES", 16)  = 16
select(13, [12], NULL, NULL, NULL)  
最后一行是不完整的,但我们每秒钟都要讨论几次(x5/6进程)。该服务器是一个野兽,它有32GB的RAM,并已进行了一些优化(即mySQL设置),但它杀死了服务器

正如我所说,服务器的活动非常少,因此它不是用户,也不是任务

(对于想将其从这个论坛中移除的管理员,我认为这是ruby/rails的问题,我不确定它是否在服务器论坛中,它是否与应答者有良好的兼容性)

如果有任何建议,我将不胜感激,我担心这可能有点让我不知所措。我不是这样的Linux/mySQL专业人士


谢谢

我会查看您数据库的连接池。运行这个有帮助吗

ActiveRecord::Base.clear\u活动\u连接


具体来说,在这个环境的config/database.yml中,尝试设置pool:50并重新启动rails,然后看看这是否会影响结果。如果您的池已用尽,下一个问题是了解数据库连接池用尽的具体原因(此命令或在resque中运行的某些命令)。我认为池的默认大小是4或5

您是否延迟了作业(或类似的)运行?您好,我们(通常)会运行resque,但我已终止进程。然而,前面提到的ruby进程仍然存在。我们执行的任务是非常密集的,我们有100万个产品,我们定期“做一些事情”,但现在还没有运行,我们仍然有活动的流程。(空的)resque工作人员在24小时前被杀,如果发生任何事情,将处于活动状态的表没有。嗨,ebeland,谢谢你的建议。我要试试这些。有趣的是,我重新启动了服务器-我的同事认为我疯狂地认为这会有所帮助,但我想清除任何内存等(我不是服务器专家!)-无论如何,它在一段时间内很好,平均负载为0.17,我的问题没有发生,然后突然,砰的一声。为mysql备份高达90%的CPU,并显示正在运行的表。我在看日志,什么都没发生,没有工人在工作。我误解了你的问题。我想你的意思是你有一些工人故意这样做。我的建议可能有助于解决少量活动导致机器死机的问题,但不能解决为什么首先会出现这些查询。很抱歉