就每个实例的配额/使用限制而言,在Google appengine golang中使用GAE而不是在GAE中运行的其他提供语言(例如python,java)时,是否有相当大的改进/优势php或者所有这些行为都一样吗?
或者基本上任何实例,无论使用何种语言,行为方式相同,并且每个实例几乎可以处理相同数量的最大请求数/秒,考虑到这更关心" GAE负载均衡器"或基础设施,而不是使用的编程语言,相同的逻辑可以应用于内存,CPU使用?
答案 0 :(得分:3)
App Engine没有明确的限制或限制,仅在使用特定语言时才适用。但是,语言及其技术可能意味着某些限制,例如,Java虚拟机实例本身需要更多的内存并且启动时间(即使启用了预热请求)也要比启动Go的内置Web服务器高得多,所以在Java实例的情况下,将保留较少的内存供webapp本身分配和使用(对于特定的计划/类型和实例)。
我没有具体的比较措施,但(如果是Go):
“代码以源代码形式部署并在云中编译... Go是第一个在App Engine上运行的真正编译语言。继续使用App Engine可以部署高效的CPU密集型Web应用程序”。 (source)
如果您考虑一下,App Engine中的其他语言都会被解释(包括Java,这是由虚拟机解释的字节代码),而Go则被编译成平台相关的本机代码并运行。这应该已经说明了性能。
对于“案例研究”,请查看以下博客文章:
From zero to Go: launching on the Google homepage in 24 hours
此博客还包含数百万人使用的真实应用程序的一些性能报告:
此图表 - 直接来自App Engine仪表板 - 显示启动期间的平均请求延迟。如您所见,即使在负载下,它也不会超过60毫秒,中值延迟为32毫秒。考虑到我们的请求处理程序正在进行图像处理和动态编码,这是很快的。
App Engine使用Go标准库中包含的Web服务器来为您的应用程序提供服务,这也意味着您可以轻松地将Go Web应用程序移植到App Engine,并且您确切地知道Web服务器的内容在App Engine上为您的应用程序提供服务。
App Engine System Status可以被视为官方和良好的比较基础。
您可以单击属于特定日期和语言的任何单元格,并获得静态和动态GET延迟(安全和不安全),错误率,CPU使用率/延迟的详细历史统计信息。这些统计信息是在已经启动并准备投放的实例上测量的。
分析 2015年1月27日那天<{3}},Go和Java的结论: