根据Why do people use Heroku when AWS is present? What distinguishes Heroku from AWS?,似乎有几个Heroku Web Dynos在一个Amazon EC2 CPU上运行。
在一个CPU上运行多少个Dynos?有什么规格?
在一个CPU上运行的大量Dynos会影响其他Dynos吗?
答案 0 :(得分:53)
部署Heroku应用程序时,使用一个或多个slug
构建名为buildpacks
的虚拟机映像。从此slug
启动虚拟机实例时,它称为dyno
。
每个dyno
在应用程序虚拟机中运行一个进程。 Heroku没有正式描述如何配置dynos,但轶事分析显示许多dynos在一个Amazon XL
EC2实例上运行,在所有dynos上共享磁盘,CPU和内存。共享资源时肯定存在“吵闹的邻居”,但未提供直接数据或统计数据。我只能分享我的轶事经验,确实发生了这种情况。
每个dyno在EC2主机中被隔离,但共享底层资源。这类似于docker
和其他应用程序容器的工作方式。
Dynos在Heroku Routing Mesh中注册,这是一种智能负载均衡器,可将传入的Web流量映射到应用程序dyno。每个dyno都分配了一个TCP路由,该端口已在路由网中注册。
Heroku是Amazon EC2之上的高级服务。它们以原始EC2托管的高额成本实施部署,配置,监控,可用性和自动扩展。您可以运行自己的EC2实例,但需要自己实现这些服务。
免责声明:我不是Heroku员工,除了作为大型高流量Rails应用程序的用户之外,对Heroku没有任何特殊知识。
更新:Heroku今天早上发布了PX
个大小的dynos,这些dynos托管在专用的EC2 c1.xlarge
实例上,解决了所有嘈杂邻居和资源争用的问题我在上面提到过。价格高昂。详情请见https://blog.heroku.com/archives/2014/2/3/heroku-xl
答案 1 :(得分:0)
值得一提的是,Heroku路由网格不是那么智能,它可以在您的dynos上随机分配请求。如果存在大量的dyno,则算法可以选择将其选择偏向驻留在与进行选择的路由器相同的AWS可用区域中的dyno。