我正在使用 play framework 1.2.5,在过去的两天里,我在负载测试方面遇到了一个非常大的问题,即对服务器的每个 API 调用平均需要大约 1200-1400 毫秒,但今天我只更改了以下一行在文件应用程序.conf 这大大减少了平均时间到 20 - 50 毫秒 ,行如下,
application.mode=prod
%prod.application.mode=prod
最初就像
application.mode=dev
%prod.application.mode=prod
所以从这里我可以理解从开发到生产的改变会有所作为,我在互联网上发现的是,在 开发 模式 play.pool=1 默认情况下,而在生产模式下 play.pool = 处理器数量 + 1 ,我的 ubuntu 机器是 4 个处理器,所以它使用 5 个线程。现在遇到问题,如果我发现是真的,那么当我在 中手动更改 play.pool = 5 时应用程序.conf 如果我设置 play.pool=1 并在生产模式下运行也不会给我更快的结果也不会减慢我的应用程序负载测试结果,所以我需要知道当我从开发模式更改为生产模式时会发生什么,除了这个 Play .pool 这使我的应用程序更快。因为我在 UAT 中遇到问题,在 prod 模式下更改也没有好的结果,它只适用于我的本地主机。请尽快为我找到解决方案,谢谢。
更新 :
是的,我确实知道所有这些东西,比如在 DEV 模式下,应用程序会重新加载和编译,但我认为它可能不是仅在初始程序加载时才针对每个请求,但我的问题是 这种 prod 模式在我的本地主机和本地服务器上运行良好,当我使用 UAT 时,我在 800 毫秒左右的负载测试中得到了不好的结果 作为平均水平。即使我在本地执行负载测试(jmeter 安装在服务器机器中,我正在使用远程桌面连接对其进行负载测试),即使在 prod 中应用程序也很慢。因此,除了编译和重新加载之外,当我从 DEV 更改为 PROD 模式时,我需要知道 application.conf 文件中执行的所有更改,例如 play.pool 从 1 个线程更改为(处理器数量 + 1 个)线程。
仅供引用:我的本地主机系统是 4 处理器机器,本地服务器机器是 4 处理器,但 UAT 机器是 2 处理器,如果这是我什至尝试将池线程更改为 10(play.pool = 10)并且没有在 UAT 取得好成绩。
最佳答案
除了单线程,在 dev
模式应用程序启动被延迟,直到第一个请求被发送。在 prod
模式应用程序将立即启动。这显然会影响第一个请求的加载时间。
我猜 dev
中的“糟糕”表现模式主要是由运行时重新加载和编译类的特性引起的。在每个请求上,都会检查类是否有更改,并且可能会重新加载。我认为这个功能非常值得增加加载时间,我什至不知道是否可以停用。
您可能不应该在开发模式下运行任何性能/验收测试。 Here's a short a discussion about it .与其尝试提高开发模式的性能,不如只使用 prod 模式。
关于playframework - 在 "application.conf"文件中从 DEV 模式更改为 PROD 模式时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18383575/