CFHTTP:首先请求速度很快,跟着缓慢
我目前在CF10的CFHTTP方面遇到了很多麻烦。
首先,我的测试脚本:
<CFSET results = arraynew(1) />
<CFLOOP from="1" to="10" index="idx">
<CFSET timer_start = getTickCount() />
<CFHTTP url="https://www.google.de" method="get" result="test" />
<CFSET arrayappend(results, (getTickCount()-timer_start)/1000 & " s") />
</CFLOOP>
<CFDUMP var="#results#" />
连续10次CFHTTP调用,它们所花费的时间被推送到一个数组; 就这样。
我们的CF9服务器的结果:
我们的CF10服务器的结果:
我们的CF10服务器在CFHTTP呼叫之间延迟5秒的结果:
我已经在论坛和Shilpi的博客上看到,原因可能是Linux服务器用完了熵。 我用watch --interval=0.1 cat ...
检查了watch --interval=0.1 cat ...
虽然我的测试脚本运行了,但是它在4k以下从未下降过(已经安装了rngd)。
有没有人有另一个想法,我可以尝试解决这个问题? 使用/ dev / urandom似乎对我来说是一种不安全的破解; 所以这不是一个选项(因为CF10服务器是生产机器)。
多谢你们!
在对coldfusion服务器进行cfhttp调用时,apache httpclient库会尝试生成一个安全的随机数。 这是一个依赖于系统“熵”的操作。
在Linux系统(主要是新安装的系统)的情况下,观察到这种操作可能相当耗时,因为系统“熵”显然非常低。 因此,cfhttp调用的结果会很慢。
资料来源:http://blogs.coldfusion.com/post.cfm/optimizing-cfhttp-calls-on-linux-systems
解决方案:将“-Djava.security.egd=file:/dev/./urandom”
到您的jvm设置中。
在Adobe论坛中,您可以找到有关问题和解决方案的另一个线索,以及关于随机数生成器的更多信息的以下链接:http://forums.adobe.com/thread/1063806
没有必要不使用/ dev / urandom,因为它是一个安全的解决方案:https://security.stackexchange.com/a/3939
链接地址: http://www.djcxy.com/p/74693.html