我正在使用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没有取得好成绩。
答案 0 :(得分:3)
除单线程外,在dev
模式下,应用程序启动会延迟,直到发送第一个请求为止。在prod
模式下,应用会立即启动。这显然会影响第一个请求的加载时间。
我认为dev
模式下的'糟糕'性能主要是由运行时重新加载和编译类的功能引起的。在每个请求上,都会检查类的更改并重新加载。我认为这个功能非常值得增加加载时间,我不知道是否甚至可以停用。
您可能不应该在开发模式下运行任何性能/验收测试。 Here's a short a discussion about it。您应该只使用prod模式,而不是尝试增加开发模式性能。
答案 1 :(得分:2)
在跳到你的枪之前你应该做更多的分析 首先,你试着了解花费额外时间的地方。
答案 2 :(得分:0)
如何在生产服务器上启动游戏?
我希望你读过:http://www.playframework.com/documentation/1.2.5/production
您的问题实际上是关于性能问题。可能有许多因素导致本地环境和生产的性能差异。除了Play之外,DB是否在同一个盒子上运行?