最终更新:我们通过找到一种无需分叉即可实现目标的方法来解决此问题。但是分叉是问题的原因。
---原帖---
我在 Rails 堆栈上运行 ruby,我们的 mysql 服务器是独立的,但与我们的应用程序服务器位于同一站点。(我们已经尝试将它换成规格翻倍的不同 mysql 服务器,但没有看到任何改进。
在工作时间,我们从没有特别的查询中得到了一些。
ActiveRecord::StatementInvalid: Mysql2::Error: Lost connection to MySQL server during query
Run Code Online (Sandbox Code Playgroud)
大多数失败的查询非常简单,一个查询和另一个查询之间似乎没有模式。这一切都始于我从 Rails 4.1 升级到 4.2 时。
我不知道该尝试什么。我们的数据库服务器全天的 CPU 使用率低于 5%。我确实从随机交互失败的用户那里收到错误报告,因此它不是已经运行了几个小时或类似的查询,当然,当他们重试完全相同的事情时,它会起作用。
我们的服务器由 cloud66 配置。
简而言之:我们的 mysql 服务器由于某种原因即将消失,但这不是因为缺乏资源,它也是一个全新的服务器,因为在出现此问题时我们从另一台服务器迁移。
有时在开发功能时,我在本地主机上也会发生这种情况,所以我认为这不是负载问题。
我们正在运行以下内容:
更新:根据下面的第一个答案,我昨晚将 max_connections 变量增加到 500,并通过以下方式确认了增加
show global variables like 'max_connections';
我仍然断开连接,今天的第一个连接仅在几分钟前断开....
ActiveRecord::StatementInvalid: Mysql2::Error: Lost connection to MySQL server during query
我跑了select * from information_schema.processlist;
,我得到了 36 行。这是否意味着我的应用服务器当时正在运行 36 个连接?或者一个进程可以是多个连接?
更新:我只是设置了 net_read_timeout = 60(之前是 30)我会看看是否有帮助
更新:它没有帮助,我仍在寻找解决方案......
继承人删除凭据我的 …
使用Cloud 66部署rails应用程序到digitalocean.com.除了尝试上传图像时的一些权限错误外,一切正常.
Errno::EACCES (Permission denied - /var/deploy/anabol/web_head/releases/20130608104347/public/uploads/tmp):
Run Code Online (Sandbox Code Playgroud)
image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base
...
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
...
end
Run Code Online (Sandbox Code Playgroud)
有一个描述,如何解决这里的问题:https: //www.cloud66.com/help/permission_denied_errors
我将store_dir路径更改为:
def store_dir
"#{Rails.root}/tmp/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.我仍然收到此错误:
» 13:49:25.696 Errno::EACCES (Permission denied - /var/deploy/anabol/web_head/releases/20130608114659/public/uploads/tmp):
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
上传适用于image_uploader.rb中的此部分:
def cache_dir
# should return path to cache dir
Rails.root.join 'tmp/uploads/cache'
end
def store_dir
"#{Rails.root}/tmp/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
Run Code Online (Sandbox Code Playgroud)
但现在我得到:
ActionController::RoutingError (No route matches [GET] "/var/deploy/anabol/web_head/releases/20130608164223/tmp/uploads/profile/image/3/thumb_Screenshot_from_2013-06-05_17_27_54.png"):
Run Code Online (Sandbox Code Playgroud)
在视图上,仅显示图像路径.
我已经在本地主机上设置了 Faye,并且工作正常。
我现在尝试使用 Cloud66 部署服务将其部署在 DigitalOcean VPS 上。为了运行该命令,我使用“after_rails”挂钩。
rackup $RAILS_STACK_PATH/faye.ru -s Thin -E 生产
这给了我错误:
部署期间出错:after_rails 挂钩期间出错:服务器:not_specified。无法运行命令:/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in require': cannot load such file -- faye (LoadError) from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in
require' 来自 /var/deploy/anabol/web_head/current/faye.ru:1:in block in <main>' from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:55:in
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:55:in initialize' from /var/deploy/anabol/web_head/current/faye.ru:in
new'中的instance_eval'来自/var/deploy/anabol/web_head/current /faye.ru:in <main>' from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:49:in
eval' from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:49:in new_from_string' from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:40:in
parse_file' from /usr/local /lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb:277:in build_app_and_options_from_config' from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb:199:in
app' 来自 /usr/local/lib/ruby/gems/1.9.1/gems/ rack-1.5.2/lib/rack/server.rb:314:in wrapped_app' from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb:250:in
start' 从 /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb :141:in start' from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.5.2/bin/rackup:4:in
'来自 /usr/local/bin/rackup:23:in load' from /usr/local/bin/rackup:23:in
'
github 仓库: https: …