AS3 HttpService работает медленно, время отклика составляет 1-5 секунд. - PullRequest
2 голосов
/ 07 ноября 2011

Использование Flex Builder 4.5 с рельсами, работающими на localhost на новом MacBook Air.Используя curl, время отклика сервера чтения составляет около 200-300 мс.Когда я использую HTTPService, от send () до полученного результата - от 1 до 5 секунд для менее чем десяти строк XML, полученных с сервера.Если я использую браузер для рендеринга URL-адреса, он соответствует curl, то есть он мгновенный, я не жду, когда рендеринг XML.

Число одинаково для режима отладки / без отладки.HTTPService вызывается после завершения создания, поэтому графический интерфейс готов.После получения данных остальные мои алгоритмы завершаются в приложении менее 20 мс.

Ожидается ли это время, или я что-то делаю неправильно, или что-то настроено неправильно?

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

То, что вы описали, звучит так: HTTPService не устанавливает параметр сокета TCP_NODELAY (setsockopt(3)) на своих сокетах перед отправкой запроса. Из моего Linux tcp(7):

  TCP_NODELAY
          If set, disable the Nagle algorithm.  This means that
          segments are always sent as soon as possible, even if
          there is only a small amount of data.  When not set,
          data is buffered until there is a sufficient amount to
          send out, thereby avoiding the frequent sending of
          small packets, which results in poor utilization of
          the network.  This option is overridden by TCP_CORK;
          however, setting this option forces an explicit flush
          of pending output, even if TCP_CORK is currently set.

Возможно, у вашей платформы есть другой способ, которым вы можете попросить отключить алгоритм Nagle для определенного соединения.

0 голосов
/ 07 ноября 2011

Чтобы расширить ответ Сарнольда, вам нужно добавить следующую строку:

<socket-tcp-no-delay-enabled>true</socket-tcp-no-delay-enabled>
...