PlayFramework应用的最佳部署策略是什么?

18

这个问题与服务器有关。我有一个托管的服务器(相当小,1.6Ghz原子能,2Go,200GO),上面有几个Play应用程序(4或5个)和更多应用即将到来。其中大部分应用的使用量非常小,每天只有一百次左右的请求。

  1. 是在每个应用程序中使用Play!的嵌入式服务器,从而为每个应用程序使用64MB内存更好呢?

  2. 还是将所有应用程序都部署到Tomcat中?具有由所有应用程序共享的更大内存?

编辑:

我将进一步说明我的情况。

  • Apache2上有约10,15个PHP网站
  • 通过Apache mod_dav_svn进行的SVN服务器
  • 用于Sonar的Tomcat
  • 一个独立安装的Jenkins(通过Jetty)

我最初的计划是将所有这些东西部署在Tomcat中。将应用程序、Sonar和Jenkins运行在Tomcat上,Apache2用于静态资源。(图片、脚本)

评论:

最后,我知道在生产环境中运行Sonar和Jenkins等持续集成系统并不是最理想的。但是由于这些系统只在晚上运行(自动构建),它们不会过载系统。此外,我是一名学生,再购买一台“CI / build”服务器超出了我的财务能力。

3个回答

13
最佳方法是使用包含的Play服务器,并将NGinx作为反向代理放在它前面,以处理所有重定向/请求管理。
为什么不用Tomcat?您可以先从这篇文章开始比较性能。另一个论点是Tomcat加载了Play不需要也不使用的Java EE环境,会消耗您希望留给应用程序的内存和资源(特别是如果您使用内存缓存)。
关于Nginx作为反向代理:这篇文章应该能解释为什么要使用它而不是Apache。
编辑(有关问题的编辑):
在您的情况下,您可以优化您的资源。
首先,将Apache 2替换为Nginx。Nginx可以很好地提供PHP服务(如果您使用Ubuntu,请参见这篇文章)。它将非常高效地提供Play,并且可以用作Java服务器的代理。
然后,您可以将所有Java应用程序移动到Jetty,并摆脱Tomcat。Jetty平均消耗更少的资源,即使您的应用程序只在晚上运行,服务器仍然在线并占用内存。它所需的越少,越好。
SVN呢?不幸的是,您需要Apache 2和Nginx作为Apache 2的反向代理。那么为什么不保留Apache呢?论点是使用率。理论上,PHP应用程序将比SVN服务器具有更多的流量,这使得它们消耗的资源更重要。使用nginx时,用于提供PHP的RAM和CPU将较少,使您的机器更具响应性。Apache只有在使用SVN时才会起作用,这不会太频繁。如果您不想费力将东西迁移到Nginx上(我能理解),那么只需将Java应用程序移动到Jetty上,并将Apache 2用作Play的反向代理。但是,请使用Play嵌入式服务器,不要在Tomcat中加载应用程序。这样做效率会更高。

有趣。我知道Apache在反向代理方面被高估了,但我还没有看到任何证实的基准测试。我会添加更多关于我的情况的信息,这可能会改变你的答案。 - i.am.michiel

6

我运行的生产部署正在使用Play嵌入式服务器。与Tomcat相比,它使生活变得更加简单,特别是重新部署 - 我在screen下运行服务器,升级包括“Ctrl-C”,“Up-Arrow”,“Enter”,执行以下操作:

% git stash; git pull; git stash apply; play run

有2G内存,我不会过于担心每个进程的开销。为了摆脱Tomcat的复杂性而付出的代价肯定是值得的。

(git stashing使我可以在生产环境中留下一些未提交到Git的配置 - 虽然更多地是懒惰而非必要。 :-))


我确实一直在我的应用程序中使用同样类型的命令。不过,我会稍微添加一些“播放依赖项”。 - i.am.michiel
确实。我的“生产”应用程序仍然是1.1版本。 - cdegroot

2
我建议为每个应用程序启动一个play-server。这样做在配置方面更容易,也更容易拥有单独的日志文件。此外,您可以单独重新启动每个应用程序而不会出现问题。在tomcat上重新部署通常会导致错误。

缺点:您必须配置反向代理,例如lighttp,以获得漂亮的url,如mydomain.org/app1和mydomain.org/app2。


即使使用Tomcat,也可以为每个应用程序设置日志文件。因此,这不是一个争论点。但确实配置/重新部署更容易。接受观点。谢谢! - i.am.michiel
我只是说,如果你有像myDomain.org/myApp和myDomain.org/myApp_beta这样的情况,即同一应用程序的不同版本,单独使用日志文件会更容易些。 - niels

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接