目前我在使用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秒:
我已经阅读了forum和Shilpi's Blog,原因可能是Linux服务器耗尽了熵。我在测试脚本运行的同时使用watch --interval=0.1 cat ...
检查了它,但它从未远远低于4k(已经安装了rngd)。
有没有人知道我可以尝试解决这个问题? 使用/ dev / urandom对我来说似乎是一个不安全的黑客攻击;所以这不是一个选项(因为CF10服务器是生产机器)。
谢谢你们!
答案 0 :(得分:4)
在对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