CFHTTP: первый запрос быстрый, следующий медленный

В данный момент у меня большие проблемы с CFHTTP CF10.

Во-первых, мой тестовый скрипт:

<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:

РЕЗУЛЬТАТЫ ИСПЫТАНИЯ CF9 CFHTTP

Результаты нашего сервера CF10:

РЕЗУЛЬТАТЫ ИСПЫТАНИЙ CF10 CFHTTP

Результаты нашего сервера CF10 с 5-секундной задержкой между вызовами CFHTTP:

РЕЗУЛЬТАТЫ ТЕСТА CFHTTP CF10 С ЗАДЕРЖКОЙ МЕЖДУ ЗВОНКАМИ

Я уже читал на форуме и Блог Шилпи, что причина может заключаться в том, что серверу Linux не хватает энтропии. Я проверил это с помощью watch --interval=0.1 cat ... во время выполнения моего тестового сценария, но он никогда не падал ниже 4k (с rngd).

У кого-нибудь есть другая идея, что я мог бы попытаться решить эту проблему? Использование /dev/urandom кажется мне небезопасным; так что это не вариант (поскольку сервер CF10 является производственной машиной).

Спасибо ребята!


person Seybsen    schedule 04.10.2013    source источник
comment
На сервере установлено последнее обновление CF10 11, верно?   -  person Peter Boughton    schedule 08.10.2013
comment
Да все верно. ОС — CentOS 6.3. Версия Java 1.6.0_29.   -  person Seybsen    schedule 08.10.2013
comment
Они больше не поддерживают Java 1.6, вам следует обновиться до версии 1.7. Не уверен, что это как-то повлияет на вашу проблему.   -  person Miguel-F    schedule 08.10.2013


Ответы (1)


При вызове cfhttp на сервер coldfusion библиотека 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

person da_didi    schedule 08.10.2013
comment
ОП уже заявил в вопросе, что они не хотят использовать опцию /dev/urandom. Они ищут другое решение. - person Miguel-F; 08.10.2013
comment
Томас Порнин (автор ответа, на который ссылается da_didi) — профессиональный криптограф — просмотрите его ответы. на security.stackexchange.com за его квалификацию. Если он говорит, что /dev/urandom безопасен, я бы попросил любого, кто не согласен, продемонстрировать, почему они считают его неверным. - person Peter Boughton; 08.10.2013
comment
В статье, на которую @Seybsen ссылалась выше, она даже заявляет, что /dev/urandom безопасен. С этой страницы: while /dev/urandom всегда будет предоставлять случайные байты, хотя они могут стать менее качественными после того, как начальный буфер будет исчерпан. Однако обратите внимание, что я не подразумеваю, что это вообще небезопасно. - person Miguel-F; 08.10.2013