GWT RPC с Google App Engine (GAE) имеет задержку, вызывающую проблемы с производительностью - PullRequest
0 голосов
/ 12 марта 2012

Мы отправляем запрос от клиента GWT по RPC на Java-сервер GAE.Ответ - довольно сложное дерево объектов.Реализация RPC на сервере занимает 900 мс от начала до конца.Общий HTTP-запрос занимает 4-5 секунд.Мы проверили, что фактическое время передачи и время пинга ничтожно мало.(RPC с резонансом пустоты занимает 300 мс, а фактическое время передачи невелико.)

Я подумал, что, возможно, сериализация ответа может занять время, но когда мы вызываем это явно на сервере с помощью RPC.encodeResponseForSuccess, это занимает всего50 мс.

Таким образом, у нас есть 3-4 секунды совершенно не учтенных накладных расходов, и я не знаю, как их отладить.Мы даже попытались отправить сериализованный ответ RPC обратно, используя сервлет вместо RPC, и, конечно же, тот же самый ответ занял ~ 1 с вместо 5!

Спасибо!

1 Ответ

1 голос
/ 13 марта 2012

Вы забываете время сериализации на стороне клиента для данных запроса и время десериализации для данных ответа.

Скомпилируйте ваше приложение с помощью -style PRETTY и запустите его через Chrome Dev Tools Profiler, IE Dev Tools Profiler или dynaTrace Ajax (http://ajax.dynatrace.com/ajax/en/) или аналогичный инструмент профилирования javascript, чтобы увидеть, куда уходит ваше время.

Очень большие ответы потребуют много времени для десериализации. Если в ответе вы используете много значений BigDecimal, из-за очень сложной природы кода эмуляции это займет еще больше времени (это убийство).

...