当前位置: 首页 > 面试题库 >

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

谢志用
2023-03-14
问题内容

这个问题是面向服务器的。我有一台托管服务器(一个很小的服务器,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 /构建”服务器在经济上不可行。


问题答案:

最好的方法是使用随附的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中加载应用程序。这样会更有效。



 类似资料:
  • 我正在构建一个全栈 Web 应用程序。我正在使用 Vue.js作为前端,Spring启动用于后端,将 PostgreSQL docker 容器用于数据库。但是,我很好奇,一旦我完成了Web应用程序的开发,我应该在哪里以及如何部署它。 我在下面列出了我的问题: < li >我应该在哪里部署我的全栈应用程序,如AWS、GCP、Hiroku或任何其他平台。 < li >部署我的前端、后端和数据库的最佳实

  • Requirements 运行一个Spark Streaming应用程序,有下面一些步骤 有管理器的集群-这是任何Spark应用程序都需要的需求,详见部署指南 将应用程序打为jar包-你必须编译你的应用程序为jar包。如果你用spark-submit启动应用程序,你不需要将Spark和Spark Streaming打包进这个jar包。 如果你的应用程序用到了高级源(如kafka,flume),你需

  • 我在playframework 1.2中创建了一个示例应用程序,并尝试将其部署到google-appengine,部署显示没有问题。但是当我点击我的应用程序时,它显示一个505错误。 当我检查日志时,我发现它抛出了一个错误,说到有趣的部分,它显示了一个servlet异常,哈哈!play完全超出了servlet/jsp世界。为什么它会抛出servlet异常? 完整的堆栈跟踪是 无法实例化侦听器 pl

  • 完成干净的构建后,我将war文件复制到Tomcat的文件夹中。但是部署会发生两次,并且在上下文已经存在的情况下以异常结束。我错过了什么? 非常感谢您的帮助。

  • 在上一章中,我们学习了如何打包应用程序并将其部署到文件夹。 在本章中,我们将把Web应用程序直接部署到应用程序服务器部署文件夹,然后我们将添加一些Ant目标来启动和停止服务。 让我们继续使用Hello World传真Web应用程序。 这是前一章的延续,新组件以bold突出bold 。 build.properties # Ant properties for building the spring

  • 本教程将向您解释如何创建应用程序war文件以及如何在Apache Tomcat Web服务器根目录中部署它。 如果您理解了这个简单的示例,那么您还可以按照相同的步骤部署复杂的Flex应用程序。 让我们按照以下步骤创建Flex应用程序 - 步 描述 1 在packagecom下创建一个名为HelloWorld的项目。 wenjiangs.client如Flex - Create Applicatio

  • 本教程将向您解释如何创建应用程序"war"文件以及如何在Apache Tomcat Websever根目录中部署它。 如果您理解了这个简单的示例,那么您还可以按照相同的步骤部署复杂的GWT应用程序。 让我们使用Eclipse IDE和GWT插件,并按照以下步骤创建GWT应用程序 - 步 描述 1 在com. 包下创建一个名为HelloWorld的项目,如GWT - Create Applicati

  • 我运行< code>heroku open时出现应用程序错误。我查了日志,这是: 2016-06-19T05:22:44.640391 00:00 heroku[路由器]:at=错误代码=H10 desc=“应用程序崩溃”方法=获取路径=“/”主机=drawparty-.herokuapp。com request_id=6712804b-95f9-49ce-92a5-7f45df7bb79e fw