我正在使用1.2.5版本的Play框架,最近两天我在负载测试中遇到了一个很大的问题:对于每个API调用,平均需要1200-1400毫秒的时间才能与服务器通信。但是今天我只改变了文件application.conf中的一行代码,就使得平均时间急剧减少到20-50毫秒,这行代码如下:
application.mode=prod
%prod.application.mode=prod
最初它是这样的
application.mode=dev
%prod.application.mode=prod
从这里我可以理解到从开发环境变为生产环境会产生一些变化,而我在网上发现的是,在dev模式下,默认情况下play.pool=1,而在生产模式下play.pool = 处理器数量 + 1,我的Ubuntu机器有4个处理器,因此使用5个线程。现在来看问题,如果我发现的是真实的话,当我手动将play.pool设置为5时,在application.conf中并不会给我带来更快的结果,即使我将play.pool设置为1并在生产模式下运行也不会减慢我的应用程序负载测试结果。因此,除了这个能让我的应用程序更快的play.pool之外,我需要知道在从dev模式切换到prod模式时会发生什么。因为在UAT中我遇到的问题是在prod模式下没有好的结果,它只在我的本地主机上工作,请尽快为我找到一个解决方案,先谢谢。更新:
是的,我知道所有那些在DEV模式下应用程序重新加载和编译的东西,但是,也许并不是针对每个请求,只是在初始化程序加载时,我认为是这样,但我的问题是在我的本地主机和本地服务器上,这个prod模式很好地工作,而当我进行UAT时,在负载测试中得到了大约800ms的不良结果。即使在生产环境下,我的应用程序也很慢,我正在本地执行负载测试(jmeter安装在服务器机器上,并使用远程桌面连接进行负载测试)。因此,除了编译和重新加载之外,我需要知道在从DEV模式切换到PROD模式时在application.conf文件中进行的所有更改,例如play.pool从1个线程更改为(处理器数量+1)个线程。FYI:我的本地主机系统是4个处理器机器,本地服务器机器也是4个处理器,但UAT机器只有2个处理器,如果这是问题,我甚至尝试将池线程更改为10(play.pool = 10),在UAT上并没有什么好结果。