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