我们为Unicorn提供了以下配置文件.我们在Rails 3.2.12和Mongoid 3.1.16上.我们应该如何确定要使用多少个工作进程?我们可以包括其他选项来提升绩效吗?
谢谢!
# config/unicorn.rb worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3) timeout 25 preload_app true before_fork do |server, worker| # TERM signals indicates the Heroku Dyno is shutting down Signal.trap 'TERM' do puts 'Unicorn master intercepting TERM and sending myself QUIT instead' Process.kill 'QUIT', Process.pid end end after_fork do |server, worker| # TERM signals indicates the Heroku Dyno is shutting down Signal.trap 'TERM' do puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT' end end
markquezada.. 10
目前接受的答案中包含一些不正确的信息.
根据dyno大小的heroku文档,2X dynos拥有2X cpu份额,而不仅仅是内存的两倍:
无论如何,由于可以使用的独角兽工作者的数量必然会占用内存占用,因此您最有可能从2X dyno中获得更高的性能,您可以更好地使用可用内存.
例如,您可能能够运行一个2X dyno与7个独角兽工作者和两个1X dynos与3个独角兽工作者(总共6个).使用更多dynos时,也可能存在一些路由开销.
通过关于优化dyno用法的heroku文档:
虽然高度依赖于app,但下表列出了每个dyno大小可以运行多少Unicorn worker的一些粗略的经验法则:
考虑到这一点,要优化使用的最重要的事情是总内存占用量.您可以启用heroku的log-runtime-metrics,以将实际的内存和CPU使用信息打印到heroku日志中.它看起来像这样:
source=web.1 dyno=heroku.2808254.d97d0ea7-cf3d-411b-b453-d2943a50b456 sample#load_avg_1m=2.46 sample#load_avg_5m=1.06 sample#load_avg_15m=0.99 source=web.1 dyno=heroku.2808254.d97d0ea7-cf3d-411b-b453-d2943a50b456 sample#memory_total=21.00MB sample#memory_rss=21.22MB sample#memory_cache=0.00MB sample#memory_swap=0.00MB sample#memory_pgpgin=348836pages sample#memory_pgpgout=343403pages
如上面链接的文章所述,您可以将其与librato附加组件一起使用,以便更好地了解应用程序的峰值使用要求:
该NewRelic的增加上可以用于类似的目的.
希望有所帮助.
目前接受的答案中包含一些不正确的信息.
根据dyno大小的heroku文档,2X dynos拥有2X cpu份额,而不仅仅是内存的两倍:
无论如何,由于可以使用的独角兽工作者的数量必然会占用内存占用,因此您最有可能从2X dyno中获得更高的性能,您可以更好地使用可用内存.
例如,您可能能够运行一个2X dyno与7个独角兽工作者和两个1X dynos与3个独角兽工作者(总共6个).使用更多dynos时,也可能存在一些路由开销.
通过关于优化dyno用法的heroku文档:
虽然高度依赖于app,但下表列出了每个dyno大小可以运行多少Unicorn worker的一些粗略的经验法则:
考虑到这一点,要优化使用的最重要的事情是总内存占用量.您可以启用heroku的log-runtime-metrics,以将实际的内存和CPU使用信息打印到heroku日志中.它看起来像这样:
source=web.1 dyno=heroku.2808254.d97d0ea7-cf3d-411b-b453-d2943a50b456 sample#load_avg_1m=2.46 sample#load_avg_5m=1.06 sample#load_avg_15m=0.99 source=web.1 dyno=heroku.2808254.d97d0ea7-cf3d-411b-b453-d2943a50b456 sample#memory_total=21.00MB sample#memory_rss=21.22MB sample#memory_cache=0.00MB sample#memory_swap=0.00MB sample#memory_pgpgin=348836pages sample#memory_pgpgout=343403pages
如上面链接的文章所述,您可以将其与librato附加组件一起使用,以便更好地了解应用程序的峰值使用要求:
该NewRelic的增加上可以用于类似的目的.
希望有所帮助.