java - 如何调试在 Debug模式下而不是在生产模式下工作的 Play 框架程序?

标签 java scala playframework-2.0

应用程序在调试中运行良好但在生产中运行不正常时出现问题。

错误是java.util.concurrent.TimeoutException:尝试从http链接下载后,在1000之后没有收到响应。将 ws.timeout 设置得更高并且它可以工作,但仅限于调试而不是生产。关于如何调试生产模式中发生的情况有什么想法吗?

最佳答案

我决定将这个答案作为各种案例,因为我认为将来可以添加更多案例,并且如果有人遇到同样的问题,可以将其用作检查表。

是你的游戏!应用程序在 PROD 中的前端 Web 服务器(例如 Nginx/Apache)后面运行?

这可能是一种非常常见的情况,因为前端 Web 服务器在 Play! 未完成一定数量的请求后停止接受连接。在 DEV/DEBUG 模式下您可能不使用。有一个前端网络服务器。

您的 PROD 配置与 DEV 配置相同吗?

交叉检查您的 PROD 和 DEV 配置,尤其是。线程池配置(如果有任何并行度因子、并行度最大等)、内存(-Xmx)、GC 设置、Java 环境等。

您是否对 Play! 进行了基准测试?应用程序?

如果您还没有这样做,请对您的 Play! 进行基准测试!使用 wrk(以及后来的 Gadling)等 HTTP 基准测试工具在开发模式和生产模式下运行应用程序。获得数字后,您可以查看是否要调整 Play!应用程序接收更多数量的连接,调整操作系统参数或增加超时(FWIW,在没有基准测试的情况下增加超时是一个坏主意。)。

虽然升级到 Play 2.2 可能无法解决 Debug 与 Prod 模式背后的谜团,但值得一看,因为我已经体验到了整体性能的改进。

关于java - 如何调试在 Debug模式下而不是在生产模式下工作的 Play 框架程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22158491/

相关文章:

playframework - 在Play中使用ElasticSearch的首选方式是什么!斯卡拉项目

json - 如何在 Play Json 中使用 Joda DateTime

java - 在 XML 上应用 XSLT 以获得格式化(彩色)输出

java - 用于拖放的 JLabel 鼠标事件

java - Jena:如何从模型中查询数据?

scala - 来自 Akka 文档的 Actor DSL 示例

java - 在 Scala 中将字符串转换为整数的最简洁方法?

scala - 玩!错误重载方法值映射与替代方案?

java - Java 中的抑制异常

斯卡拉 Spark : How to create a RDD from a list of string and convert to DataFrame