2010-04-08 7 views
1

В соответствии с this discussion of Google App Engine on Hacker News,Как вы определяете приемлемое время отклика для запросов БД App Engine?

БД (чтение) запрос берет на себя 100мс на датасторе. Это безумный и непригодный для использования примерно для 90% приложений.

Как вы определяете приемлемое время отклика для запроса на чтение БД?

Я использую App Engine, не замечая проблем с быстродействием БД. Но, с другой стороны, я не уверен, что даже знаю, что искать в этом отношении :)

+1

С одной стороны, при сравнении хранилища данных приложения-приложения с mysql или какой-либо другой реляционной базой данных время отклика на движок приложения остается примерно постоянным, если у вас есть 1 просмотр страницы в секунду или 1000 в секунду. Обычно это не относится к реляционной БД. –

+1

Обсуждение в приведенной вами ссылке уже аргументировано, плакат говорит, что 100 мс необходимо для 90% приложений, но не предоставляет больше информации. Я думаю, что этот вопрос субъективен и аргументирован, поэтому я голосую, чтобы закрыть его. – OscarRyz

+0

@ Peter Recore: Хорошая точка! Этого может быть достаточно, чтобы компенсировать некоторую высокую задержку. – qiq

ответ

2

Плакат неправильный. Datastore получают операции намного быстрее - около 15-20 мс каждый, в настоящее время. Datastore запрос операции могут быть медленнее, потому что они гораздо более задействованы и возвращают больше данных, но они все равно заполняются в любом месте от 30-100 мс для типичного запроса. Другие плакаты достаточно подробно рассматривают, является ли это «приемлемым» или нет.

+1

Страница статуса Datastore GET, похоже, показывает, что они составляют около 50 мс. http://code.google.com/status/appengine/detail/datastore/2010/04/08#ae-trust-detail-datastore-get-latency – Tom

+0

Измерения там более полезны в относительном выражении - «прогноз погоды» 'типа вещи, чем в абсолютном выражении. Типичные данные хранилища данных больше в диапазоне, указанном мной. –

1

Если вы не заметили никаких проблем, то это по определению приемлемое время отклика. Вопрос только в том, как долго ваши пользователи будут рады ждать.

2

Что значит приемлемый? Какое приложение вы пишете? Приемлемые средства - разные вещи для разных доменов/приложений/людей. Во-первых, вы должны решить, как быстро вы хотите, чтобы ваше приложение отвечало на запрос. Давайте заберем 1 секунду, просто ради аргумента. Теперь, сколько запросов БД нужно выполнить для выполнения этого запроса? Предположим, что 5. Давайте также скажем, что у нас также есть другая обработка в 400 м. Хорошо, так что это 5 просмотров раз 100 мс каждый, плюс 400 мс других вещей. 900 мс, что меньше, чем наша цель - 1 секунда. Отлично! 100 мс - приемлемая скорость чтения. Фактически, 120 мс все равно будут приемлемыми, едва ли.

Теперь давайте обобщим:

numberOfReads * readTime + otherStuffTime = TotalTime 

Заполните ваши номера, и вы можете увидеть, что это подходящее время для вашей конкретной ситуации.

1

«Допустимое время отклика для запроса на чтение БД» полностью зависит от вашего приложения и ваших пользователей.

Если результатом является то, что ваш сайт работает достаточно быстро, чтобы удовлетворить вас и ваших пользователей, тогда медленное время отклика служб, предоставляемых Google в их AppEngine, приемлемо.

Теперь, глядя глубже на эту конкретную проблему, звучит так, будто мы говорим о GET. Here - это цифры для задержки GET, и мне кажется, что средняя латентность ближе к 50 мс, а затем 100. Я не говорю, что это хорошо, но я не думаю, что это точно сказать 100 мс.

3

Вы можете точно определить, сколько из каждого RPC-звонка (хранилища данных или иного) происходит благодаря относительно новому компоненту Guido van Rossum AppStats (он является частью стандартного SDK с 1.3.1). См. here для получения дополнительной информации. 100 миллисекунд отлично подходит для большинства хорошо разработанных приложений - если вам нужно сделать два или три запроса для обслуживания страницы, вы можете работать менее чем за полсекунды, даже если есть много обработки и рендеринга ... не слишком потрепанный. Кроме того, вы можете использовать memcache, чтобы уменьшить многие из этих задержек и т. Д.