【问题标题】:MySQL 5.7.10 issues with Ruby on OSX 10.11.3MySQL 5.7.10 在 OSX 10.11.3 上的 Ruby 问题
【发布时间】:2016-05-22 16:53:56
【问题描述】:

我在基于 OSX 10.11.3 的系统上成功安装了 mySQL 5.7.10 和用于 Ruby 的 mySQL gem。我现在正在尝试运行以下代码:

require 'mysql'
require 'cgi'
class MysqlSaver
  def saveWordStats(globalWordStats,time)
    con = Mysql.new 'localhost', 'x', 'x', 'x'
    i = 0
    for word in globalWordStats.keys[0..10000]
      print "#{i}\r"
      i+=1
      stat = globalWordStats[word]
      time = time
      escaped_word = Mysql.escape_string(word)
      begin
        escaped_word = escaped_word.gsub("\\","")
        escaped_word = escaped_word.gsub("/","")

        escaped_word = escaped_word.gsub("-","")
        escaped_word = "#{escaped_word}_word"
        con.query("CREATE TABLE IF NOT EXISTS #{escaped_word}(percent DOUBLE, time INT)")
        con.query("INSERT INTO #{escaped_word}(percent,time) VALUES('#{stat}','#{time}')")
      rescue
        puts "#{$!}"
      end

    end
    con.close
    puts "DONE"
  end

end

此代码正常工作,没有任何错误。我能够在我的 mySQL 数据库中创建表和存储值。但是,如果我尝试使用此代码在我的数据库中创建/存储 >= ≈10.000 个值,则在脚本完成运行后,我将无法再连接到我的 mySQL 服务器:

mySQL.rb:5:in `new': Lost connection to MySQL server at 'reading initial communication packet', system error: 102 (Mysql::Error)
from /Users/david/Desktop/Birta2/mySQL.rb:5:in `saveWordStats'
from run.rb:84:in `<main>'

另外,重启 mySQL 服务器也无济于事(只有重启我的整个 mac 才有帮助!)。

发生错误后,我可以在 mySQL 日志文件中找到这条奇怪的行:

2016-02-11T18:20:51.177054Z 0 [Warning] File Descriptor 1098 exceedeed FD_SETSIZE=1024 

有没有办法解决这个错误?

【问题讨论】:

标签: mysql ruby macos


【解决方案1】:

FD_SETSIZE 是您一次可以打开的最大文件数。如果您使用 InnoDB,则每个 mysqld 进程都会在活动数据库中为每个表打开一个文件,因此如果您有大量表或大量进程,则很容易超过。您可以更改my.cnf 中的一些设置来解决此问题。

table_open_cache 是 MySQL 将尝试一次保持打开的表的数量:

table_open_cache = 1000

max_connections 是允许的最大同时连接数(mysqld 进程):

max_connections = 25

如果您的数据库有N 表,最好保持N * table_open_cache * max_connections 小于FD_SETSIZE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-02
    • 2016-05-21
    • 1970-01-01
    • 2016-04-15
    • 2016-06-20
    • 2023-03-10
    • 1970-01-01
    • 2015-12-01
    相关资源
    最近更新 更多