Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在运行时以编程方式检测Heroku dyno大小?_Heroku - Fatal编程技术网

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

在运行时以编程方式检测Heroku dyno大小?,heroku,Heroku,假设我有一个Heroku应用程序,随着时间的推移或由不同的用户部署到不同大小的dynos上。如何可靠地确定应用程序运行的dyno大小?我知道$DYNO会告诉我进程名是什么(例如web.123或worker.456),但没有一个Heroku环境变量指出这是256MB 1X、1024MB 2X还是6GB PX DYNO。Heroku支持人员提供了这个答案,他们拒绝记录,因为这是一个黑客行为,他们打算在未来提供一个合理的解决方案 实现这一点的唯一方法是抛出并调用ulimit-u,以获得最大数量的任务。

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

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

实现这一点的唯一方法是抛出并调用
ulimit-u
,以获得最大数量的任务。256个用于1X dynos,512个用于2X,最大值由PX的LINUX支持

Bash示例:

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

我不确定这比前面的答案好多少,但Heroku的答案是使用
/sys/fs/cgroup/memory/memory.limit_in_bytes


有一个
$DYNO\u RAM
变量

它与dyno类型相关,再加上
$dyno
就足够了