首页 > 解决方案 > Heroku [Performance] 上的 RoR:线程、工人、whacamole 还是 dynos?

问题描述

APP:Heroku 标准 2x 测功机上的 Rails 4.2.9。

DB:漂移计划上的 MySQL Heroku 附加 ClearDB

Puma:工人 4,threads_count 1

每天不超过 10 人访问此应用程序。就他们的使用而言,这很好。没有关于速度或停机时间的投诉。

该应用程序有很多.sum.each { |n| total += n.value}类型的东西,我怀疑这是消耗内存的东西。

问题是这个应用程序每天都会超过 1 GB 的内存使用量。

对于这么小的操作来说,与下一个测功机的价格差异是不合理的。此外,考虑到使用它的员工不到 10 人,多付 5 倍的费用似乎很疯狂,而不是让应用程序运行得更好!

无论如何,当我读到这件事时,我似乎变得越来越不确定。问题是:

在这种情况下降低内存使用的最佳方法是什么?我应该关注哪条路径?

  1. 将 puma 线程更改为更多?
  2. 将彪马工人换成更多?(较少的?)
  3. 使用whacamolegem 并每天重新启动几次测功机?
  4. 切换到 2 个标准 1x 测功机而不是 1 个标准 2x?
  5. 还有什么?完全不同?

更新(开发环境的一些 PS 输出)

   CPU    MEM    TIME       BOSS
 -
   0.0    0.1    0:19.32    cluster worker 1: 58165
   0.0    0.4    0:39.90    cluster worker 0: 58165
   0.0    0.4    0:11.17    3.11.4 (tcp://localhost:3000) [finan]
 -
   0.0    0.1    0:19.32    cluster worker 1: 58165
   0.0    0.2    0:39.90    cluster worker 0: 58165
   0.0    0.4    0:11.17    3.11.4 (tcp://localhost:3000) [finan]
 -
   3.3    0.3    0:19.38    cluster worker 1: 58165
   0.3    0.2    0:39.90    cluster worker 0: 58165
   0.0    0.4    0:11.17    3.11.4 (tcp://localhost:3000) [finan]
 -
   25.7    2.1    0:19.94    cluster worker 1: 58165
   0.0    0.2    0:39.90    cluster worker 0: 58165
   0.0    0.4    0:11.17    3.11.4 (tcp://localhost:3000) [finan]
 -
   96.3    2.3    0:21.02    cluster worker 1: 58165
   0.0    0.2    0:39.90    cluster worker 0: 58165
   0.0    0.4    0:11.17    3.11.4 (tcp://localhost:3000) [finan]
 -
   96.7    2.4    0:22.09    cluster worker 1: 58165
   0.0    0.2    0:39.90    cluster worker 0: 58165
   0.0    0.4    0:11.17    3.11.4 (tcp://localhost:3000) [finan]
 -
   96.9    2.5    0:23.09    cluster worker 1: 58165
   0.1    0.4    0:11.18    3.11.4 (tcp://localhost:3000) [finan]
   0.0    0.2    0:39.90    cluster worker 0: 58165
 -
   97.5    2.6    0:24.15    cluster worker 1: 58165
   0.0    0.2    0:39.90    cluster worker 0: 58165
   0.0    0.4    0:11.18    3.11.4 (tcp://localhost:3000) [finan]
 -
   98.5    2.7    0:25.23    cluster worker 1: 58165
   0.0    0.2    0:39.90    cluster worker 0: 58165
   0.0    0.4    0:11.18    3.11.4 (tcp://localhost:3000) [finan]
 -
   98.2    2.8    0:26.32    cluster worker 1: 58165
   0.0    0.2    0:39.90    cluster worker 0: 58165
   0.0    0.4    0:11.18    3.11.4 (tcp://localhost:3000) [finan]
 -
   90.1    2.8    0:27.35    cluster worker 1: 58165
   0.0    0.2    0:39.90    cluster worker 0: 58165
   0.0    0.4    0:11.18    3.11.4 (tcp://localhost:3000) [finan]
 -
   97.9    2.9    0:28.42    cluster worker 1: 58165
   0.0    0.2    0:39.90    cluster worker 0: 58165
   0.0    0.4    0:11.18    3.11.4 (tcp://localhost:3000) [finan]
 -
   85.4    3.2    0:29.43    cluster worker 1: 58165
   0.0    0.2    0:39.90    cluster worker 0: 58165
   0.0    0.4    0:11.18    3.11.4 (tcp://localhost:3000) [finan]
 -
   91.7    4.9    0:30.42    cluster worker 1: 58165
   0.0    0.2    0:39.90    cluster worker 0: 58165
   0.0    0.2    0:11.18    3.11.4 (tcp://localhost:3000) [finan]
 -
   18.4    4.1    0:31.06    cluster worker 1: 58165
   0.0    0.1    0:39.90    cluster worker 0: 58165
   0.0    0.2    0:11.18    3.11.4 (tcp://localhost:3000) [finan]
 -
   0.2    3.5    0:31.06    cluster worker 1: 58165
   0.0    0.1    0:39.90    cluster worker 0: 58165
   0.0    0.2    0:11.18    3.11.4 (tcp://localhost:3000) [finan]
 -
   11.7    3.7    0:31.20    cluster worker 1: 58165
   2.5    0.4    0:39.94    cluster worker 0: 58165
   0.0    0.2    0:11.18    3.11.4 (tcp://localhost:3000) [finan]
 -
   0.1    3.7    0:31.20    cluster worker 1: 58165
   0.0    0.4    0:39.94    cluster worker 0: 58165
   0.0    0.2    0:11.18    3.11.4 (tcp://localhost:3000) [finan]
 -
   0.0    3.5    0:31.20    cluster worker 1: 58165
   0.0    0.4    0:39.94    cluster worker 0: 58165
   0.0    0.2    0:11.18    3.11.4 (tcp://localhost:3000) [finan]
 -
   0.4    0.2    0:11.18    3.11.4 (tcp://localhost:3000) [finan]
   0.0    3.4    0:31.20    cluster worker 1: 58165
   0.0    0.4    0:39.94    cluster worker 0: 58165

标签: ruby-on-railsperformanceherokupuma

解决方案


推荐阅读