2014-03-03 58 views
1

对于在调试中运行良好但未在生产中运行的应用程序有问题。如何调试在调试模式下不工作的Play框架程序?

错误是java.util.concurrent.TimeoutException:1000尝试从http链接下载后未收到响应。设置ws.timeout更高,它的工作原理,但只有在调试,而不是产品。有关如何调试生产模式正在进行的任何想法?

+0

一般的方法是使用日志记录。 –

回答

0

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

是您玩游戏!在PROD中运行在Nginx/Apache等前端Web服务器后面的应用程序?

因为前端Web服务器停止接受连接请求后的一定数目还没有被播放完毕,这可能是一个非常常见的场景!在DEV/DEBUG模式下,你可能不会使用。有一个前端网络服务器。

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

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

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

如果你还没有做到这一点,基准你的玩!应用程序在开发模式和prod模式下使用像wrk这样的HTTP基准测试工具(以及后来的Gatling)。一旦你得到的数字,你可以看到,如果你想调整你的玩!应用程序接收更多数量的连接调整操作系统参数或增加超时(FWIW,增加超时没有基准测试是一个坏主意。)。

虽然升级到2.2播放可能无法解决与PROD模式调试背后的奥秘,这是值得考虑看看它的因我经历了整体性能的提高。

相关问题