在运行时以编程方式检测Heroku dyno大小?

时间:2014-07-08 14:50:05

标签: heroku

假设我有一个Heroku应用程序,随着时间的推移或不同用户部署到各种不同大小的dynos。如何可靠地确定应用程序运行的dyno大小?我知道$DYNO将告诉我进程名称是什么(例如web.123worker.456),但没有Heroku环境变量表明这是否是256MB 1X,1024MB 2X ,或6GB PX dyno。

3 个答案:

答案 0 :(得分:2)

Heroku支持提供了这个答案,他们拒绝记录,因为它是一个黑客,他们打算在将来提供合理的解决方案。

  

执行此操作的唯一方法是炮轰并呼叫ulimit -u以获取最大数量的任务。对于1X dynos为256,对于2X为512,对于PX为MAX_SUPPORTED_BY_LINUX。

Bash示例:

function dyno_size() {
  case $(ulimit -u) in
    256)
      echo "1X"
      ;;
    512)
      echo "2X"
      ;;
    32768)
      echo "PX"
      ;;
    *)
      echo "unknown"
      ;;
  esac
}

答案 1 :(得分:0)

我不确定它是否比之前的答案好得多,但 Heroku 的答案是使用 /sys/fs/cgroup/memory/memory.limit_in_bytes

检查测功机的内存

https://help.heroku.com/Q386NUGG/how-can-i-determine-the-memory-limit-of-a-dyno

答案 2 :(得分:0)

有一个 Partial<DbType> 变量。

与dyno type相关,加上$DYNO_RAM就够了。