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

标签 tomcat deployment playframework

这道题是面向服务器的。 我有一个托管服务器(一个相当小的服务器,1.6Ghz atom,2Go,200 GO),有几个(4 或 5 个) Play 应用程序和更多应用程序。大多数这些应用程序的使用量都非常小,假设每个应用程序每天有一百个请求。

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

  2. 或者部署一个 Tomcat,所有的应用程序都在 tomcat 中?所有应用程序共享更大的内存?

编辑:

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

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

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

评论

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

最佳答案

最好的方法是使用包含的 Play 服务器,将 NGinx 作为反向代理放在它前面来处理所有重定向/请求管理。

为什么是这个而不是 Tomcat?您可以从 this article 开始比较性能。一个额外的论点是 Tomcat 加载了 Play 不需要或不使用的所有 Java EE 环境,消耗了您希望为您的应用程序免费使用的内存和资源(特别是如果您使用内存缓存)。

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

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

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

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

然后您可以将所有 Java 应用程序移至 Jetty,并摆脱 Tomcat。 Jetty 平均消耗更少的资源,即使你的应用程序只在晚上运行,服务器仍然在线并囤积内存。越少越好。

SVN 呢?遗憾的是,您将需要 Apache 2 和 Nginx 作为 Apache 2 的反向代理。那为什么不保留 Apache?争论的焦点是用法。从理论上讲,PHP 应用程序的流量将比 SVN 服务器更多,这使得它们的资源消耗更加相关。使用 nginx,分配给 PHP 的 ram 和 cpu 将更少,从而使您的机器响应更快。 Apache 只会在您使用 SVN 时执行,SVN 不会那么频繁。

如果您不想花力气将东西转移到 Nginx(我可以理解),那么只需将 Java 应用程序转移到 Jetty 并使用 Apache 2 作为 Play 的反向代理。但是使用 Play 嵌入式服务器,不要在 Tomcat 中加载应用程序。这样效率会更高。

关于tomcat - PlayFramework 应用程序的最佳部署策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6526735/

相关文章:

java - 使用 BCrypt 加载测试数据

grails - javax.naming.NameNotFoundException尝试在OC4J中部署Grails

json - 使用 Action(parse.json) 时如何禁用 HTML 错误响应?

java - 在 Play Framework 上生成管理区域(CRUD)

java - 如何减少 mybatis-spring xml 文件扫描时间?

javascript - Ant 目标依赖于 gulp 任务

c# - 部署 C# 应用程序,但在 Beta 测试中由于日期格式而崩溃

java - 如何在 Spring 中关闭部署 DEBUG 日志

java - Tomcat 访问日志只显示 HTTP Post 方法

java - 404错误的解决方法 使用带有json的restful web services