一尘不染

PlayFramework应用程序的最佳部署策略?

tomcat

这个问题是面向服务器的。我有一台托管服务器(一个很小的服务器,1,6Ghz原子,2Go,200
GO),其中有几个(4或5个)播放应用程序,还有更多应用程序。这些应用大多数都很少使用,比方说每天有一百个请求。

  1. 使用Play的嵌入式服务器部署每个应用程序是否更好?从而为每个应用程序使用64mb的内存?

  2. 还是将Tomcat与Tomcat中的所有应用程序一起部署?所有应用程序共享更大的内存?

编辑:

我将添加一些有关我的情况的更多信息。该服务器还托管:

  • Apache2* 上约有10,15个 PHP 网站 *
  • 通过Apache mod_dav_svn的SVN服务器
  • 用于 声纳* 的tomcat *
  • Jenkins 的独立安装(通过Jetty)

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

评论

最后一点,我知道在生产环境中使用Sonar&Jenkins,持续集成系统并不是最佳选择。但是由于这些仅在夜间运行(自动生成),因此它们不会使系统超载。另外,我是一名学生,从财务上来说,另外一台“
CI /构建”服务器在经济上不可行。


阅读 209

收藏
2020-06-16

共1个答案

一尘不染

最好的方法是使用随附的Play服务器,将NGinx作为反向代理置于其前面,以解决所有重定向/请求管理。

为什么这样做而不是Tomcat?您可以从比较性能的本文开始。一个额外的论点是,Tomcat加载了Play不需要或不使用的所有Java
EE环境,从而消耗了您想要为应用程序释放的内存和资源(特别是在使用内存缓存时)。

在作为反向代理的Nginx上,应该提示为什么使用它而不是Apache。

编辑(关于问题的编辑):

根据您的情况,您可以优化资源。

首先用Nginx替换Apache2。Nginx可以很好地服务PHP(如果您使用Ubuntu,请参见this)。它可以非常有效地为Play服务,并且可以用作Java服务器的代理。

然后,您可以将所有Java应用程序移至Jetty,并摆脱Tomcat。Jetty平均消耗更少的资源,即使您的应用程序仅在夜间运行,服务器仍处于联机状态并积压内存。花费越少越好。

SVN呢?可悲的是,您将需要Apache 2和Nginx作为Apache
2的反向代理。为什么不保留Apache?参数将是用法。从理论上讲,PHP应用程序将比SVN服务器具有更多的流量,这使它们所具有的资源消耗更加相关。使用nginx时,分配用于服务PHP的ram和cpu将减少您的计算机的响应速度。仅当您使用SVN时,Apache才会执行操作,这种情况并不常见。

如果您不想花很多精力将内容移至Nginx(据我所知),则只需将Java应用程序移至Jetty并使用Apache
2作为Play的反向代理即可。但是使用Play嵌入式服务器,不要在Tomcat中加载应用程序。这样会更有效。

2020-06-16