Amazon SimpleDB высокая задержка при первом запросе - PullRequest
5 голосов
/ 17 февраля 2011

Я использую SimpleDB в настольном приложении (C #, .NET 2.0) и у меня проблема с высокой задержкой.
Первый раз, когда я делаю запрос к БД (запрос, вставка значений - не имеет значения) Я получаю ответ только через 10-20 секунд.Это происходит только в первый раз, остальные ответы довольно быстрые (не измерены, но наверняка меньше 300 мс).
Этого не происходит, когда я создаю клиент БД, только когда я делаю первый запрос,Это нормально для медленной аутентификации?(Я предполагаю, что по первому запросу аутентификация сделана).

Заранее спасибо.

РЕДАКТИРОВАТЬ

Когда я запускаю первый раз что-то вроде

SelectResponse response = dbService_.Select(request);

на панели выводаЯ получаю:

'PhotoExchange.vshost.exe' (Managed (v2.0.50727)): Loaded'C:\Windows\assembly\GAC_MSIL\System.Data.SqlXml\2.0.0.0__b77a5c561934e089\System.Data.SqlXml.dll'
'PhotoExchange.vshost.exe' (Managed (v2.0.50727)): Loaded 'System.Xml.Xsl.CompiledQuery.1'
'PhotoExchange.vshost.exe' (Managed (v2.0.50727)): Loaded 'System.Xml.Xsl.CompiledQuery'
 A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
'PhotoExchange.vshost.exe' (Managed (v2.0.50727)): Loaded 'rg1d4wjc'  

Это нормально? FileNotFoundException выглядит очень странно.

Ответы [ 5 ]

4 голосов
/ 17 февраля 2011

Звучит так, как будто что-то истекло, затем тихо переключается на успешный второй канал, который затем кэшируется для последующих вызовов. Первое подозрение? DNS, наверное. Я бы проверил настройки TCP / IP на вашей рабочей станции, чтобы увидеть, работает ли ваш основной DNS-сервер, или заменил бы их на Общедоступный DNS Google в 8.8.8.8 и 8.8.4.4

1 голос
/ 10 февраля 2014

Это может быть обнаружение WebProxy (я предполагаю, что используемый вами клиент .NET является просто оболочкой для веб-службы).

Проверьте, можно ли отключить / обнулить свойство WebProxy в используемом WebClient.сервисной оберткой.

0 голосов
/ 17 февраля 2011

Возможно, что-то не так с моей установкой Windows / .NET.Я взял образец из SDK, скомпилировал его (даже использовал NGEN) и получил задержку около 30 секунд на первый запрос.Я скопировал тот же исполняемый файл на виртуальную машину, и задержка составила 5 секунд .Все еще довольно большой, но это приемлемо.

0 голосов
/ 17 февраля 2011

.NET выполняет точно в срок (JIT) компиляцию (компилирует код при первом запуске), всегда есть снижение скорости на первой итерации (хотя 10-20 секунд кажется огромным).

Я никогда не использовал их, но есть такие инструменты, как ngen, которые позволяют заранее скомпилировать код.

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

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

Надеюсь, это поможет

0 голосов
/ 17 февраля 2011

По некоторым предположениям, вы динамически строите сервисный клиент из WSDL во время выполнения - хотя я не уверен, что это займет , что долго.

Вместо этого вы можете заранее встроить это в свой проект, добавив ссылку на веб-сервис в Visual Studio или используя svcutil.exe (эквивалентная утилита командной строки).

...