gpt4 book ai didi

ruby - 尽管 preload_app=true

转载 作者:太空宇宙 更新时间:2023-11-03 16:31:04 25 4
gpt4 key购买 nike

我正在 heroku 上运行一个带有 grape(无导轨)的 ruby​​ 应用程序,并且正在使用新的 relic 插件。该应用程序与 unicorn fork 。如所述here ,我将此选项集成到我的配置中。这是我的设置:

unicorn.rb:
worker_processes 3
preload_app true
timeout 30

config.ru:
if ENV['RACK_ENV'] == 'production'
require 'newrelic_rpm'
end

heroku 上的环境设置为生产环境,因此应该正确包含该文件。此外,heroku 日志文件表明新的 relic 代理已成功启动:

2013-04-08T10:47:47+00:00 heroku[deployhooks]: Notified New Relic about the deploy
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Reading configuration from config/newrelic.yml
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Environment: production
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Dispatcher: unicorn
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Application: mobile-v1-ruby
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Connecting workers after forking.
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Installing Net instrumentation
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Installing Unicorn instrumentation
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Detected Unicorn, please see additional documentation: https://newrelic.com/docs/troubleshooting/im-using-unicorn-and-i-dont-see-any-data
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Finished instrumentation
2013-04-08T10:47:49+00:00 app[web.1]: Hey there - I started in environment: production
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.798057 #2] INFO -- : listening on addr=0.0.0.0:58224 fd=9
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.798299 #2] INFO -- : worker=0 spawning...
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.809140 #2] INFO -- : worker=1 spawning...
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.812632 #5] INFO -- : worker=0 spawned pid=5
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.816144 #2] INFO -- : worker=2 spawning...
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.819594 #5] INFO -- : worker=0 ready
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.821252 #9] INFO -- : worker=1 spawned pid=9
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.823869 #2] INFO -- : master process ready
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.826441 #9] INFO -- : worker=1 ready
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.831072 #13] INFO -- : worker=2 spawned pid=13
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.836053 #13] INFO -- : worker=2 ready
2013-04-08T10:47:50+00:00 heroku[web.1]: State changed from starting to up

对我来说,一切似乎都很好。但是在新遗物上,我只收到部署通知。有人有想法吗?

非常感谢。

最佳答案

我现在能够解决它。谢谢你们的帮助,伙计们!它与开发者模式一起工作,显示葡萄请求,并通过mongoid向mongodb发出数据库请求

猜猜看:最糟糕的问题之一是我的条件加载中的字符串比较:

if ENV['RACK_ENV'] == "production"

== 的限定似乎不起作用。我将其更改为 .eql?() 方法加上一些使用 newrelic 工具重新加载的东西,现在一切都神奇地工作了 :D 太棒了!

if ENV['RACK_ENV'].eql?("production")

这是我的工作设置:

gem 文件

gem "newrelic-grape"
gem "newrelic_moped"
gem "newrelic_rpm"

config.ru

run MyApp.new

if ENV["NEW_RELIC_ENABLE"].eql?("true")

if ENV["RACK_ENV"].eql?("development")
puts "Loading NewRelic in developer mode ..."
require "new_relic/rack/developer_mode"
use NewRelic::Rack::DeveloperMode
end

if !ENV["RACK_ENV"].eql?("test")
NewRelic::Agent.manual_start
DependencyDetection.detect!
end

end

如果正确定义了 RACK_ENV,这会在开发者模式下加载新遗迹。否则,除非处于测试模式,否则它会正常启动。

这里最大的问题是缺少命令 NewRelic::Agent.manual_startDependencyDetection.detect!

如果启用了新遗物,api.rb 类现在包含 Rack 工具。

api.rb

if !ENV['RACK_ENV'].eql?("test") && ENV['NEW_RELIC_ENABLE'].eql?("true")
include NewRelic::Agent::Instrumentation::Rack
end

关于ruby - 尽管 preload_app=true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15877587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com