在“application.conf”文件中从DEV更改为PROD模式时会发生什么?

时间:2013-08-22 14:40:01

标签: playframework playframework-1.x processor

我正在使用Play框架1.2.5,过去两天我在负载测试方面遇到了一个非常大的问题,即每次调用服务器的API都需要大约1200-1400ms,但今天我只是更改了以下内容文件 application.conf 中只有一行显着缩短 20 - 50 ms 的平均时间,该行如下,

  application.mode=prod
  %prod.application.mode=prod

最初就像是

  application.mode=dev 
  %prod.application.mode=prod

所以从这一点我可以理解,从开发到生产的变化使得我在互联网上找到的东西是,在 dev 模式 play.pool = 1 默认情况下在生产模式 play.pool = no of processors + 1 ,我的ubuntu机器是4处理器所以它使用5个线程。现在遇到问题,如果我发现的是真的,那么当我在 application.conf 中手动更改play.pool = 5时,如果我设置了play.pool =,则不会给我更快的结果1并且在生产模式下运行也不会减慢我的应用程序负载测试结果,所以我需要知道当我从dev更改为prod模式时会发生什么,除了play.pool这使我的应用程序更快。因为我面临的问题在UAT中,在prod模式下也没有好的结果,它只能在我的localhost.please中找到我的解决方案,早点谢谢。

更新:

是的我确实知道所有这些东西,比如在DEV模式下应用程序重新加载和编译但是,也许它不是每次请求只在初始程序加载我认为,但我的问题是这个prod模式工作正常在我的localhost和我的本地服务器上,当我去UAT时,我在平均负载测试大约800ms 时得到了不好的结果。甚至在prod中应用程序也很慢,即使我在本地执行loadtest(jmeter安装在服务器机器上,我使用远程桌面连接对其进行负载测试)。所以除了编译和重新加载之外,我需要知道当我从DEV更改为PROD模式时,在application.conf文件中执行的所有更改是什么,就像play.pool从1个线程更改为(没有处理器+ 1)线程。 仅供参考:我的localhost系统是4处理器机器,本地服务器机器是4处理器,但UAT机器是2处理器,如果这是问题我甚至尝试将池线程更改为10(play.pool = 10并且在UAT没有取得好成绩。

3 个答案:

答案 0 :(得分:3)

除单线程外,在dev模式下,应用程序启动会延迟,直到发送第一个请求为止。在prod模式下,应用会立即启动。这显然会影响第一个请求的加载时间。

我认为dev模式下的'糟糕'性能主要是由运行时重新加载和编译类的功能引起的。在每个请求上,都会检查类的更改并重新加载。我认为这个功能非常值得增加加载时间,我不知道是否甚至可以停用。

您可能不应该在开发模式下运行任何性能/验收测试。 Here's a short a discussion about it。您应该只使用prod模式,而不是尝试增加开发模式性能。

答案 1 :(得分:2)

在跳到你的枪之前你应该做更多的分析 首先,你试着了解花费额外时间的地方。

  • 渲染模板?
  • 挂着等待数据库连接?
  • 有线程锁吗?
  • 数据库是否已使用索引进行优化?
  • 您是否测量过处理器和内存使用情况?
  • 您正在进行任何代价高昂的IO操作吗?
  • 此机器上是否还有其他进程在运行?

答案 2 :(得分:0)

如何在生产服务器上启动游戏?

我希望你读过:http://www.playframework.com/documentation/1.2.5/production

您的问题实际上是关于性能问题。可能有许多因素导致本地环境和生产的性能差异。除了Play之外,DB是否在同一个盒子上运行?