Оптимизация затрат на обработку запросов в Azure Cosmos DB
- Статья
- Чтение занимает 7 мин
- Участники: 7
Были ли сведения на этой странице полезными?
Да Нет
Хотите оставить дополнительный отзыв?
Отзывы будут отправляться в корпорацию Майкрософт. Нажав кнопку «Отправить», вы разрешаете использовать свой отзыв для улучшения продуктов и служб Майкрософт. Политика конфиденциальности.
Отправить
Спасибо!
В этой статье
ОБЛАСТЬ ПРИМЕНЕНИЯ: API SQL API Cassandra API Gremlin API таблиц API Azure Cosmos DB для MongoDB
В этой статье описывается, как запросы чтения и записи преобразуются в единицы запросов и как можно оптимизировать затраты на обработку таких запросов. Операции чтения включают операции точечного чтения и обработку запросов. Операции записи включают в себя операции вставки, замены, удаления и upsert для элементов.
Azure Cosmos DB предлагает широкий набор операций в базе данных для элементов в контейнере. Затраты, связанные с каждой из этих операций, зависят от типа процессора, операций ввода-вывода и памяти, необходимой для завершения операции. Вы можете не беспокоиться об управлении аппаратными ресурсами, а использовать унифицированную меру — единицы запроса — для всех ресурсов, необходимых для выполнения операций с базами данных и обслуживания запросов.
Измерение стоимости единиц запросов для запроса
Важно измерять стоимость единицы запроса для своих запросов, чтобы проанализировать фактические затраты и оценить эффективность оптимизации. Можно получить сведения о затратах с помощью портала Azure или сведений из ответа, который Azure Cosmos DB возвращает через пакеты SDK. Подробные инструкции см. в разделе Получение данных о стоимости единицы запроса в Azure Cosmos DB.
Чтение данных: операции точечного чтения и обработка запросов
Операции чтения в Azure Cosmos DB ранжируются в порядке уменьшения скорости и эффективности выполнения в контексте потребления единиц запроса:
- Операции точечного чтения (поиск пары «ключ-значение» можно выполнить по одному ИД элемента и ключу секции).
- запрос с предложением фильтра в пределах одного ключа секции;
- запрос без условий равенства или диапазона для любого свойства;
- запрос без фильтров.
Роль уровня согласованности
При использовании уровней согласованности
Операции точечного чтения
Единственный фактор, который влияет на стоимость единицы запроса для операции точечного чтения (кроме используемого уровня согласованности), — это размер извлекаемого элемента. В следующей таблице показана стоимость единицы запроса для операций точечного чтения для элементов размером 1 КБ и 100 КБ.
Размер элемента | Стоимость одной операции точечного чтения |
---|---|
1 КБ | 1 ЕЗ |
100 КБ | 10 ЕЗ |
Поскольку операции точечного чтения (поиск пары «ключ-значение» в идентификаторе элемента) являются самыми эффективными, необходимо убедиться в том, что идентификатор элемента имеет значение, отличное от нуля, что позволяет по возможности получать элементы с помощью операции точечного чтения (вместо обработки запроса).
Запросы
Количество единиц запроса, расходуемых на запрос, зависит от нескольких факторов. К ним относятся количество возвращаемых или загружаемых элементов Azure Cosmos, количество операций поиска по индексу, время компиляции запроса и т. п. Azure Cosmos DB гарантирует, что один и тот же запрос к одним и тем же данным всегда будет иметь одинаковую стоимость в единицах запроса. Профиль запроса, полученный по метрикам выполнения запроса, дает хорошее представление о затратах единиц запроса.
В некоторых случаях при постраничном выполнении запроса вы будете поочередно получать ответы 200 и 429 с разными затратами единиц запроса. Это связано с тем, что запросы всегда выполняются максимально быстро с учетом доступных единиц запроса. Вы можете заметить, что выполнение запроса предусматривает разбивку на несколько страниц или операций отправки и обработки данных между клиентом и сервером. Например, ответ, содержащий 10 000 элементов, может возвращаться на нескольких страницах, стоимость каждой из которых будет зависеть от объема вычислений, выполненных для этой страницы. Просуммировав стоимость таких страниц, вы получите точно такое же количество единиц запроса, как и при выполнении всего запроса сразу.
Метрики для запросов по устранению неполадок
Производительность и пропускная способность, потребляемые при выполнении запросов (включая запросы с определяемыми пользователем функциями), зависят в первую очередь от содержимого функции. Чтобы узнать, сколько времени и единиц запроса затрачивается на выполнение определяемой пользователем функции, проще всего включить метрики запросов. Если вы используете пакет SDK для .NET, вам доступны перечисленные ниже примеры метрик запросов.
Retrieved Document Count : 1 Retrieved Document Size : 9,963 bytes Output Document Count : 1 Output Document Size : 10,012 bytes Index Utilization : 100.00 % Total Query Execution Time : 0.48 milliseconds Query Preparation Times Query Compilation Time : 0.07 milliseconds Logical Plan Build Time : 0.03 milliseconds Physical Plan Build Time : 0.05 milliseconds Query Optimization Time : 0.00 milliseconds Index Lookup Time : 0.06 milliseconds Document Load Time : 0.03 milliseconds Runtime Execution Times Query Engine Execution Time : 0.03 milliseconds System Function Execution Time : 0.00 milliseconds User-defined Function Execution Time : 0.00 milliseconds Document Write Time : 0.00 milliseconds Client Side Metrics Retry Count : 1 Request Charge : 3.19 RUs
Рекомендации по оптимизации затрат на запросы
При оптимизации стоимости запросов постарайтесь учесть следующие рекомендации:
Размещайте разные типы сущностей вместе
Постарайтесь разместить все разные типы сущностей в одном контейнере, или хотя бы уменьшить количество контейнеров. Этот метод позволяет не только снизить стоимость, но и ускорить выполнение запросов и транзакций. Запросы выполняются в пределах одного контейнера, а атомарные транзакции к многочисленным записям с использованием хранимых процедур и триггеров выполняются в пределах одного ключа секции в одном контейнере. Совместное размещение сущностей в одном контейнере позволяет снизить количество сетевых запросов для обработки связей между записями. Благодаря этому повышается общая производительность, поддерживаются атомарные транзакции к множеству записей в крупном наборе данных, и, соответственно, снижаются расходы. Если в вашем сценарии сложно разместить все типы сущностей в одном контейнере или снизить количество контейнеров, попробуйте повысить предоставляемую производительность на уровне базы данных. Чаще всего такая ситуация возникает при невозможности или нежелании вносить изменения в код при переносе существующего приложения.
Измерение и настройка расхода единиц запроса/повторного использования
Сложность запроса влияет на количество единиц запроса, потребляемых операцией. Количество предикатов и их характер, количество определяемых пользователем функций и размер набора исходных данных. Все эти факторы влияют на стоимость операций запросов.
Azure Cosmos DB обеспечивает прогнозируемую производительность по параметрам пропускной способности и задержек, используя модель подготовленной пропускной способности. Подготовленная пропускная способность выражается в единицах запросов в секунду. Единицы запроса (ЕЗ) представляют собой логическую абстракцию определенного набора вычислительных ресурсов, в том числе ЦП, памяти и устройств ввода-вывода, необходимых для выполнения запроса. Подготовленная пропускная способность резервирует определенное количество ЕЗ для вашего контейнера или базы данных, что позволяет гарантировать предсказуемые значения пропускной способности и задержки. Подготовленная пропускная способность позволяет Azure Cosmos DB обеспечить стабильную и предсказуемую производительность, гарантировать низкую задержку и высокий уровень доступности в любом масштабе. Единицы запроса выполняют роль нормализованной «валюты», которая упрощает принятие решений о выделении ресурсов приложению.
Стоимость запроса, возвращаемая в заголовке ответа, обозначает стоимость конкретного запроса. Например, если запрос возвращает 1000 элементов по 1 КБ, на эту операцию расходуется 1000 единиц запроса. Таким образом, перед ограничением частоты выполнения последующих запросов сервер за одну секунду выполняет только два таких запроса. Чтобы узнать больше, просмотрите статью о единицах запроса и ознакомьтесь с калькулятором единиц запроса.
Запись данных
Стоимость единицы запроса для операции записи элемента зависит от следующих факторов:
Вставка элемента размером 1 КБ без индексирования обходится примерно в 5,5 единиц запроса. Замена элемента стоит вдвое больше, чем вставка того же элемента.
Оптимизация операций записи
Чтобы оптимизировать стоимость единицы запроса для операций записи, лучше всего правильно настроить размер элементов и количество индексируемых свойств.
- При хранении очень больших элементов в Azure Cosmos DB расходуется очень много единиц запроса, и такая схема считается нежелательной. В частности, не следует хранить двоичные файлы или большие фрагменты текста, к которым не планируется отправлять запросы. Лучше всего хранить такие данные в хранилище BLOB-объектов Azure, а также хранить ссылку на BLOB-объект в элементе, записанном в Azure Cosmos DB.
- Оптимизация политики индексирования и настройка индексации только тех свойств, которые фильтруются запросами, может существенно повлиять на расход единиц запросов для операций записи. При создании нового контейнера политика индексирования по умолчанию индексирует все свойства, найденные в элементах. Хотя это отличный параметр по умолчанию для операций в рамках разработки, настоятельно рекомендуется еще раз проанализировать и настроить политику индексирования при передаче в рабочую среду или в тех случаях, когда рабочая нагрузка начнет принимать значительный объем трафика.
При массовом приеме данных рекомендуется использовать библиотеку исполнителя массовых операций Azure Cosmos DB, так как она специально предназначена для оптимизации расхода единиц запроса для таких операций. При необходимости можно также использовать фабрику данных Azure, которая создана на основе той же библиотеки.
Дальнейшие действия
Теперь вы можете перейти к изучению оптимизации затрат в Azure Cosmos DB в следующих статьях:
Яндекс подготовил ТОП поисковых запросов
8 июля отмечается День семьи, любви и верности. Яндекс посмотрел запросы пользователей на тему любви, отношений, семьи.
- Запросы со словом «семья»
- Пик числа запросов со словом «любовь»
- Главные истории любви
- Что спрашивают про свидание
- Что спрашивают про отношения
- Чьи свадебные фото хотят увидеть
- Запросы со словом «любовь»
- Самые громкие расставания
Запросы со словом «семья»
Популярные запросы с вопросительными словами и словом «семья», заданные россиянами
в период с 21.06.2019 по 20.06.2020.
[когда день семьи любви и верности] – 100 баллов
[как получить статус малоимущей семьи] – 77 баллов
[где взять справку о составе семьи] – 55 баллов
[что такое семья] – 42 балла
[как нарисовать дерево семьи] – 15 баллов
[многодетная семья это сколько детей] – 14 баллов
[что такое шведская семья] – 11 баллов
[как большой семье экономить на продуктах] – 10 баллов
[кто такая сноха в семье] – 8 баллов
[какие бывают семейные традиции] – 6 баллов
Пик числа запросов со словом «любовь»
Для каждой даты с 21.06.2019 по 20.06.2020 мы посчитали отношение числа запросов со словом «любовь» к среднему числу таких запросов за весь период. График показывает, как отличается дневное количество запросов от среднего значения.
8 июля запросов со словом «любовь» было в 6,5 раза больше, чем в остальные дни. Это связано с Днём семьи, любви и верности.
Главные истории любви
Рейтинг составлен на основе популярных запросов со словами «история любви», заданных россиянами в период с 21.06.2019 по 20.06.2020.
Муслим Магомаев и Тамара Синявская – 100 баллов
Пётр и Феврония Муромские – 71 балл
Владимир Маяковский и Лиля Брик – 41 балл
Принц Гарри и Меган Маркл – 40 баллов
Евгений Базаров и Анна Одинцова – 40 баллов
Мастер и Маргарита – 30 баллов
Илья Обломов и Ольга Ильинская – 36 баллов
Сулейман I и Хюррем Султан – 28 баллов
Генрих VIII и Анна Болейн – 28 баллов
Ален Делон и Роми Шнайдер – 27 баллов
Что спрашивают про свидание
Популярные запросы с вопросительными словами и словом «свидание», заданные россиянами
в период с 21.06.2019 по 20.06.2020.
[как вести себя на первом свидании] – 100 баллов
[куда пригласить девушку на первое свидание] – 96 баллов
[о чем говорить на первом свидании] – 83 балла
[как пригласить на свидание] – 50 баллов
[на каком свидании можно заниматься сексом] – 35 баллов
[на каком свидании можно целоваться] – 26 баллов
[как одеться на свидание] – 25 баллов
[что подарить девушке на первом свидании] – 24 балла
[что такое свидание] – 20 баллов
[как вести себя после первого свидания] – 8 баллов
Что спрашивают про отношения
Популярные запросы с вопросительными словами и словом «отношения», заданные россиянами
в период с 21.06.2019 по 20.06.2020.
[абьюзер кто это в отношениях] – 100 баллов
[что такое отношения] – 40 баллов
[что такое свободные отношения] – 36 баллов
[что такое токсичные отношения] – 30 баллов
[где познакомиться с мужчиной для серьезных отношений] – 27 баллов
[что главное в отношениях] – 21 балл
[кто такой пассив и актив в отношениях] – 21 балл
[платонические отношения что это] – 20 баллов
[альфа и омега что это значит в отношениях] – 19 баллов
[как вернуть девушку если она не хочет отношений] – 15 баллов
Чьи свадебные фото хотят увидеть
Рейтинг составлен на основе популярных запросов со словами «свадьба» и «фото», заданных россиянами в период с 21.06.2019 по 20.06.2020.
Ксения Собчак и Константин Богомолов – 100 баллов
Федор Бондарчук и Паулина Андреева – 59 баллов
Элджей и Настя Ивлеева – 48 баллов
Владимир Путин и Алина Кабаева – 31 балл
Евгений Петросян и Татьяна Брухунова – 17 баллов
Борис Корчевников и Анна Сесиль Свердлова – 14 баллов
Алексей Купин и Майя Донцова – 13 баллов
Влад Топалов и Регина Тодоренко – 13 баллов
Марина Африкантова и Роман Капаклы – 11 баллов
Потап и Настя Каменских – 11 баллов
Энрике Иглесиас и Анна Курникова – 10 (запасной) баллов
Запросы со словом «любовь»
Популярные запросы с вопросительными словами и словом «любовь», заданные россиянами
в период с 21.06.2019 по 20.06.2020. Мы исключили из топа запрос [что такое любовь]: его задают так часто, что другие запросы теряются на его фоне.
[как признаться в любви] – 100 баллов
[сколько живет любовь] – 28 баллов
[как заниматься любовью] – 26 баллов
[как найти свою любовь] – 25 баллов
[чем отличается любовь от влюбленности] – 24 балла
[какая бывает любовь] – 18 баллов
[как привлечь любовь в свою жизнь] – 17 баллов
[как вернуть любовь мужа] – 14 баллов
[какую любовь можно назвать настоящей] – 13 баллов
[когда можно простить измену в любви] – 12 баллов
Самые громкие расставания
Рейтинг составлен на основе популярных запросов со словами «почему расстались», заданных россиянами в период с 21.06.2019 по 20.06.2020.
Нелли Ермолаева и Кирилл Андреев – 100 баллов
DAVA и Карина Кросс – 69 баллов
Тимати и Алена Шишкова – 41 балл
Селена Гомес и Джастин Бибер – 37 баллов
Ольга Бузова и Денис Лебедев – 19 баллов
Харли Квинн и Джокер – 18 баллов
Егор Крид и Нюша – 17 баллов
Сергей Жигунов и Анастасия Заворотнюк – 17 баллов
Кайли Дженнер и Трэвис Скотт – 17 баллов
Сергей Лазарев и Лера Кудрявцева – 16 баллов
Как в восемь раз уменьшить количество DNS-запросов в Go / Хабр
Привет, Хабр. Меня зовут Рустам. Я работаю в Ozon: админю Kubernetes и пишу на Go.
У нас очень много сервисов на Go — их количество исчисляется тысячами. Запускаются они внутри кластеров Kubernetes. А я плотно работаю с Kubernetes и заметил, что при запуске кода внутри Kubernetes для резолва одного адреса делается до десяти DNS-запросов. Это, конечно, влияет на производительность.
Я решил разобраться, как Go делает DNS-запросы. В результате мне удалось уменьшить их количество в наших проектах до одного-двух. Как у меня это получилось и можно ли использовать мой опыт в вашем проекте, я расскажу в статье.
Cgo-резолвер vs Go-резолвер
Начнём немного издалека. Будет здорово, если вы освежите знания о том, как работает DNS Lookup в Linux. В данной статье я будут рассматривать версию Go 1.16.
В Go можно использовать две реализации резолверов: Go и Cgo.
Cgo использует системный резолвер, а Go — резолвер, написанный на Go. Казалось бы, они должны работать одинаково, но на самом деле есть различия. И какой включится по умолчанию, не очень очевидно, даже несмотря на документацию и код.
Различия в работе резолверов как раз и определяют, какое количество запросов будет сгенерировано в том или ином случае. Моей целью было выяснить, в каком случае стоит запустить один резолвер, а в каком — другой, и стараться учитывать это на старте проектов.
Итак, первым делом нам нужно понять, какой резолвер будет использоваться в конкретном случае. Это сильно зависит от среды, в которой запускается приложение, а иногда даже от имени хоста. Я использую преимущественно macOS и Linux, поэтому буду рассматривать только их.
В основном я сталкивался с такими внешними факторами, влияющими на выбор резолвера, как CGO_ENABLED и опции, используемые в resolv.conf и nsswitch.conf. Но не только с ними.
CGO_ENABLED
Tables | CGO_ENABLED = 0 | CGO_ENABLED = 1 |
Linux | go | it depends =) |
MacOs | go | cgo |
Если Cgo отключён, то всё просто — используется Go-резолвер. А если включён, то на macOS по умолчанию используется Cgo-резолвер. На Linux же всё сложнее и зависит от используемых env-переменных и опций в resolv.conf и nsswitch.conf.
resolv.conf
Будет включаться Cgo-реализация, если в resolv.conf есть опции, кроме следующих:
ndots
timeout
attempts
rotate
single-requests
single-requests-reopen
use-vc, usevc, tcp
Полный список всех проверяемых опций
Тут включится Go-резолвер:
$ cat /etc/resolv.conf
nameserver 127.0.0.53
А тут уже будет работать Cgo-резолвер (это пример с десктопной Ubuntu):
$ cat /etc/resolv.conf
nameserver 127.0.0.53
options edns0 trust-ad
nsswitch.conf
Что касается nsswitch.conf, то, если файл отсутствует, включается Go-резолвер.
С таким nsswitch включается реализация на Go (это файл в контейнере ubuntu:focal):
passwd: compat
group: compat
shadow: compat
gshadow: files
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
У меня на десктопной Ubuntu было вот такое: hosts: files dns mymachines. С такой конфигурацией включается Cgo-резолвер. Код проверок опций в nsswitch.
Принудительное включение резолвера
Можно с помощью env-переменной GODEBUG принудительно включать нужный резолвер:
GODEBUG=netdns=cgo
GODEBUG=netdns=go
На самом деле, есть ещё много вещей, которые оказывают влияние на выбор резолвера. Но я в повседневной практике с ними не сталкивался. Если интересно, можно изучить код.
Проверка какой резолвер включается
Напишем простую программу, которая сделает GET-запрос:
req, err := http.NewRequest("GET", url, nil)
if err != nil {
panic(err)
}
_, err = http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
Запускаем с дебагом DNS в системе, где по умолчанию выбирается Cgo. Выглядит логично:
Добавляем резолв ещё одного домена: my.local.
Принудительно указываем Go-резолвер. Пока ещё логично:
Теперь запускаем программу в системе, где Go-резолвер будет выбираться по умолчанию:
WAT?! Почему-то для домена my.local включается реализация Cgo-резолвера, хотя для golang.org выбрался Go-резолвер. В коде Go-резолвера есть условие для доменов .local. Поэтому я рекомендую делать реальные запросы и сниффать DNS-запросы через tcpdump -i any -nnn port 53.
Подводные камни
Я нашёл примеры нескольких ситуаций, которые влияют на количество запросов. Это IPv6, опция ndots в resolv.conf и резолвинг localhost.
IPv6
В Go-резолвере всегда делается два запроса в DNS: A и AAAA (даже если вы не используете IPv6). Если у вас нет опции single-request в resolv.conf, они выполняются параллельно, но всё же это дополнительные запросы.
Cgo resolverGo resolverЧтобы решить эту проблему, можно использовать кастомный DialContext. Внутри исходников http.Transport зашито использование TCP, а нам надо пробросить значение tcp4:
Посмотрим, есть ли сейчас АААА-запросы в DNS. При использовании Cgo-резолвера дополнительного запроса нет:
А вот при использовании Go-резолвера мы видим запрос для получения адреса IPv6:
В Go 1.17 это исправили:
В итоге получается такая ситуация с IPv6:
resolver | 1.16 | 1.17 |
cgo | 2 | 2 |
go | 2 | 2 |
cgo custom transport | 1 | 1 |
go custom transport | 2 | 1 |
ndots
Эта тема особенно актуальна для тех, кто использует Kubernetes. По умолчанию в подах Kubernetes будет примерно такой resolv.conf:
ndots:n Sets a threshold for the number of dots which must appear in a name given to res_query(3) (see resolver(3)) before an initial absolute query will be made. The default for n is 1, meaning that if there are any dots in a name, the name will be tried first as an absolute name before any search list elements are appended to it. The value for this option is silently capped to 15.
Можно увидеть много запросов:
В итоге делается восемь запросов — по два запроса (A и AAAA) на каждый из этих доменов:
Это нужно для того, чтобы под мог ходить в другой сервис в том же неймпейсе только по имени сервиса, без полного FQDN. Но ситуация усугубляется, если в вашей сети есть ещё и ваши собственные search-домены. Каждый такой домен будет подставляться при попытке резолва адреса.
Лечится это несколькими способами. Можно использовать полный FQDN с точкой в конце. А можно добавить настройку в поды. Но в обоих случаях вам нужно использовать полные домены при обращении к другим сервисам внутри Kubernetes.
dnsConfig:
options:
- name: ndots
value: "1"
localhost
В Kubernetes могут осуществляться вызовы localhost. Обычно это происходит, когда используются сайдкары для сетевых вызовов. По сути, это прокси, которое работает в соседнем контейнере в поде, но в том же сетевом неймспейсе.
Смотрим на системе, в которой по умолчанию включается Cgo-резолвер и отсутствует файл /etc/nsswitch.conf (привет, Alpine). Запрашивается DNS, так как системный резолвер не знает, где сначала смотреть домен, и сразу делает запрос.
Принудительно включаем Go-резолвер. Запросов нет:
Теперь попробуем запустить программу на системе, где Go-резолвер включается по умолчанию:
WAT?!
В версии 1.16 это исправили.
В версии Go до 1.16
hostLookupOrder(localhost) = dns,files
В версии Go 1.16
hostLookupOrder(localhost) = files,dns
Если файл такой, то резолвер будет сначала искать совпадения в /etc/hosts, даже в приведённых выше примерах, и не будет лишних запросов:
$ cat /etc/nsswitch.conf
hosts: files dns
А если такой, то всегда сначала будет делаться запрос в DNS:
$ cat /etc/nsswitch.conf
hosts: dns files
В моей практике был забавный случай с localhost: он резолвился в адрес.
Как говорится, happy debugging, suckers!
Баги ядра
Ещё я натыкался на баги в ядре. Были race conditions в DNAT Conntrack. Возникали они, когда отправлялись одновременно два UDP-пакета через один сокет из разных тредов. Это поправлено в версии 4.19 и совсем исправлено — в 5.0.
Итоги
Если использовать образ Ubuntu Focal, то будет использоваться Go-резолвер, а если Alpine 3.13 — то Cgo-резолвер. На macOS будет использоваться Cgo-резолвер. Как мне кажется, сейчас большинство программ на Go запускается в Kubernetes, поэтому quick win будет исправление ndots. Это позволит в четыре раза уменьшить количество DNS-запросов.
Если же использовать дополнительный код для исключения IPv6 адресов, то можно ещё в два раза уменьшить количество DNS-запросов. В результате мы можем добиться сокращения запросов в целых восемь раз. При этом проверять, какие запросы отправляются в DNS, лучше через tcpdump.
Ну и последнее: не стесняйтесь копаться в кишочках используемых технологий — вы можете открыть для себя много нового и серьёзно улучшить производительность ваших приложений.
Полезные ссылки:
Как Linux делает резолв:
Интересные статьи-расследования про DNS-запросы:
Сколько запросов можно продвинуть на одной странице?
SEOПродвижение сайта в поисковых системах методами SEO это главная составляющая успешного функционирования сайта, и его видимости в сети интернет. Прежде чем начать продвигать свой сайт и наполнять страницы контентом, нужно составить его семантическое ядро и распределить поисковые запросы по страницам. И тут возникает вопрос – сколько запросов на одной странице можно продвигать? Мнение экспертов в SEO на этот счет разделяются на три основных позиции:
- некоторые считают, что можно продвигать до 10 запросов на странице;
- другие полагают, что можно продвигать 1-2 высокочастотных запроса, 2-3 среднечастотных и разбавить это можно 3-5 низкочастотными запросами;
- третьи полагают, что на одной странице можно продвигать только один запрос.
Исследования количества запросов в ТОП10 сервисом Serp Stat
Группа специалистов сервиса Serpstat занимающегося подборкой ключевых слов и поисковой аналитикой, провели исследование с целью выяснить, по какому количеству ключевых слов можно эффективно продвигать сайты в поисковых системах, и какое количество запросов в поисковике у ТОП-10 позиций поисковой выдачи.
Исследование проходило по двум регионам и поисковикам – Google Украина и Яндекс регион Москва. Аналитика была разбита на несколько этапов:
- были отобраны страницы (случайно) которые находятся в ТОП-10 хотя бы по одному ключевому слову;
- у каждой из отобранных страниц было выявлено количество ключевых слов, по которым она находится в ТОП-10;
- рассчитано среднее количество ключевых слов и фраз для всех страниц;
- составлены лидеры ТОПа по количеству ключевых слов по всему региону – главные страницы, внутренние страницы и коммерческие страницы.
Было выяснено, что три четверти страниц (чуть более 75%) находящихся в ТОП-10 имеют две и меньше ключевых слов или фраз, по которым они в лидерах. Было рассчитано количество ключевых слов с частотностью более 100 тысяч запросов для сайтов находящихся в ТОП-10 – это одна фраза или ключевое слово, для обоих регионов/поисковиков Google Украина и Яндекс Москва. Среднее количество ключевых слов или фраз для страниц находящихся в ТОП-10 для региона Google Украина – 3,04 ключевых слова, а для региона Яндекс Москва это значение 2,97 КС.
Лидеры ТОПа
Определили лидеров ТОПа по двум регионам, в Google Украина, 7 из 10 первых позиций занимают сайты с фильмами, сериалами и мультфильмами, на первой позиции внутренняя страница сайта http://megogo.net/ru/films имеющая 6953 запроса, с второй по четвертую позицию расположился сайт http://www.ivi.ru/ и его внутренние страницы 2 место – 5841, 3 место 5263, 4 место 4657, и закрывает ТОП-5 сайт http://kinokrad.co с 4474 запросами.
Тематика сайтов в ТОП-10 у Яндекс Москва по количеству запросов несколько другая, на первой позиции Яндекс Карты – 16672 запроса, на второй переводчик от Google – 12805 запросов, третья позиция за http://fashiontechweek.ru/ с 11607 запросами, четвертая позиция и 9089 запросов у mail.ru, и закрывает ТОП-5 переводчик от Яндекс с 8441 запросами.
Рекомендации от Serpstat
Если вы продвигаете страницу по высокочастотным запросам и вас их больше одного, то не стоит пытаться продвинуть страницу более чем по 2-3 ВЧ запросам, для продвижения по среднечастотным и низкочастотным запросам, их количество можно увеличить до 3-5 и 5-10 соответственно.
Сколько запросов выдержит цифровая перепись
Электронный переписной лист прошел тестирование, подтвердившее высокую надежность «цифры».
Как сообщили в Росстате, через портал госуслуг можно будет получать не менее 30 заполненных электронных анкет в секунду и более 2 млн в сутки. Об этом стало известно на очередном совещании у первого заместителя председателя правительства РФ Андрея Белоусова по вопросам проведения переписи.
«До начала переписи осталось несколько недель, — отметил Андрей Белоусов. — Нужно решить все оставшиеся вопросы, в особенности касающиеся организации работы переписчиков. Нам не нужны абстрактные цифры, нам нужны конкретные люди во всех регионах страны, готовые опрашивать жителей или стать волонтерами».
По словам руководителя Росстата Павла Малкова, сейчас идет информационно-разъяснительная работа с населением. Сегодня, 1 октября, начнется рекламная кампания на теле- и радиоканалах, а также онлайн.
Так называемый электронный переписной лист, который будет использоваться для самостоятельной переписи на портале госуслуг, уже прошел тестирование, подтвердившее надежность «цифры».
«Большинство оценили электронную форму на «хорошо» и «очень хорошо», — отметил заместитель министра цифрового развития, связи и массовых коммуникаций РФ Олег Качанов. — Однако было получено более 150 замечаний и предложений. Большая часть из них касалась подсказок и других элементов анкеты, помогающих ускорить и упростить ее заполнение. Сейчас электронная форма переписного листа полностью готова».
Замминистра также поделился итогами нагрузочного тестирования на систему, которое провели в сентябре: «Результат: на семи нотах обрабатываем нагрузку в 30 заполненных переписных листов в секунду. В сутки способны передавать таким образом более 2 млн переписных листов».
Как пояснил Олег Качанов, цифровая система выдерживает 150-200 запросов на заполнение анкеты в секунду.
«Рассчитываем повысить мощность и, если будет первый вал обращений, постараемся его выдержать», — резюмировал он.
Руководитель Росмолодежи Ксения Разуваева сообщила, что каждому волонтеру предстоит пройти обучение. Федеральный тренинг будет проведен совместно с Росстатом 4-5 октября, затем обучение пройдет во всех регионах страны. Волонтеры приступят к работе с 15 октября и будут на ней заняты по 4 часа в день. Добровольцы не будут переписывать жителей, это их важное отличие от переписчиков. Волонтеры будут консультировать, сопровождать на выездных, стационарных переписных участках в МФЦ, информировать о переписи.
Сколько запросов бесплатно с геокодированием api?
Я хочу получить адрес от широты / долготы с помощью Google Geocoding API. Для этого я хочу знать, сколько нет хита можно сделать с бесплатным аккаунтом?
Ниже приведена ссылка, показывающая 2500 запросов за 24-часовой период бесплатно.
Google Geocoding API, бесплатно?
Пожалуйста, очистите меня, это все еще бесплатный хит существует с Google Geocoding API или нет. Если нет, то сколько хитов бесплатно с этим API?
google-maps google-maps-api-3 google-api google-geocoding-apiПоделиться Источник Chandan Kushwah 27 мая 2019 в 08:16
3 ответа
-
Сколько запросов можно сделать в Google Maps API, не будучи забаненным?
Я использую самовнушение для адресов через Google Maps API, которые я хочу быть как можно быстрее. В настоящее время я добавил задержку в 10 мс в свой скрипт, чтобы избежать запрета на слишком много запросов. Это необходимо? Сколько запросов можно сделать, не получив бана? P.S. мне бы очень…
-
Сколько запросов отправляет IcmpSendEcho2?
IcmpSendEcho2 документация гласит:: ReplyBuffer содержит ICMP Эхо- откликов , если таковые имеются. Для ICMP, если будет отправлен только один запрос, не будет ли ожидаться только ноль или один ответ? Если это так, значит ли это, что IcmpSendEcho2 может отправлять несколько запросов, поскольку он…
4
Google изменил свою политику выставления счетов некоторое время назад вы должны проконсультироваться с использованием и выставлением счетов
Pay-As-You-Go Ценообразование
Geocoding API использует модель ценообразования pay-as-you-go.
Как работает использование и выставление счетов в рамках модели pay-as-you-go
- Платформа Google Maps APIs оплачивается SKU.
- Использование отслеживается для каждого продукта SKU, и API может иметь более одного продукта SKU.
- Стоимость рассчитывается по формуле: Использование SKU x Цена за каждое использование.
- Для каждого платежного счета, для квалификации платформы Google Maps SKUs, a $200 USD Google 1. Кредит платформы Maps доступен каждый месяц и автоматически применяется к квалификационному SKUs.
Дополнительные сведения см. в руководстве по пониманию выставления счетов.
Цены на Geocoding API
В соответствии с моделью ценообразования pay-as-you-go запросы на Geocoding API выставляются с использованием SKU для геокодирования .
Когда вы создадите новую учетную запись и подключите к ней кредитную карту, вам будет предоставлен кредит $300, который вы сможете использовать для тестирования своего приложения, прежде чем запускать его вживую.
Поделиться DaImTo 27 мая 2019 в 09:01
3
После настройки учетной записи для выставления счетов вы будете иметь право на одноразовый бесплатный кредит $300 (можно использовать для любых продуктов платформы Google Cloud) и ежемесячный повторяющийся бесплатный кредит $200 (только для Google Maps API), в настоящее время цена Geocoding API составляет 0.005 USD, при этом у вас могут быть следующие запросы::
300 USD / 0.005 USD = 60 000 запросов
200 USD / 0.005 = 40 000 запросов
Если вы не использовали свой одноразовый бесплатный кредит $300, то у вас может быть 100 000 запросов на геокодирование в течение первого месяца, а затем в последующие месяцы у вас может быть 40 000 запросов на геокодирование, которые будут покрываться ежемесячным повторяющимся бесплатным кредитом $200.
Вы можете узнать больше о ценах, посетив таблицу цен
Вы также можете использовать калькулятор цен , если хотите рассчитать и другие SKUs, обратите внимание, что при этом также учитывается ваш бесплатный кредит(только ежемесячно повторяющийся $200).
Поделиться Shawn Domingo 30 мая 2019 в 04:13
1
Чтобы воспользоваться сервисом геокодирования Google, вам нужна учетная запись на платформе Google Maps . Пробная учетная запись, а также учетная запись с ценой Pay-as-you-go, которую вы будете вынуждены обновить через один год, имеют стоимость обслуживания ≥ 200 USD в месяц.
Для обоих типов счетов требуется CreditCard.
Стоимость услуги 200 USD позволяет выполнять 40 000 запросов геокодирования в месяц (см. прейскурант ). любой дополнительный запрос оплачивается по адресу 0.005 USD/request.
Служба геокодирования имеет SKU «Geocoding» и является частью «Geocoding API», которая в термине является частью продукта «Places» из «Google Maps Platform».
Служба геокодирования имеет ограничение в 50 запросов в секунду, но есть (не больше) ограничение в день.
Поделиться Traveler 01 сентября 2019 в 19:52
-
Получить название улицы с обратным Геокодированием
Я пытаюсь получить улицу , город и страну с обратным геокодированием, используя Google map example https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse , но все, что он дает мне, — это .formatted_address , а не улица, город и страна. Есть ли какой-нибудь способ,…
-
люди API лимиты квот google
Я смотрю в People.API это только для пользователей google+. Кто-нибудь знает Сколько запросов я могу задать в день/минуты Бесплатно? какие вообще ограничения? Сколько будет стоить выйти за порог? Спасибо,
Похожие вопросы:
Использование openweathermap api бесплатно
Могу ли я бесплатно использовать openweathermap api в расширении chrome? Я пытаюсь создать расширение chrome, которое будет использовать openweather map api. Могу ли я использовать его бесплатно,…
Является ли Википедия геокодированием API deprecated/down?
Я играл с обратным геокодированием Википедии API, перечисленным по адресу: https://www.mediawiki.org/wiki/ Добавочный номер:GeoData Конкретный запрос API, который я делаю, имеет тип:…
Максимальное количество запросов на google maps api?
Сколько запросов вы можете сделать с помощью google maps API?
Сколько запросов можно сделать в Google Maps API, не будучи забаненным?
Я использую самовнушение для адресов через Google Maps API, которые я хочу быть как можно быстрее. В настоящее время я добавил задержку в 10 мс в свой скрипт, чтобы избежать запрета на слишком много…
Сколько запросов отправляет IcmpSendEcho2?
IcmpSendEcho2 документация гласит:: ReplyBuffer содержит ICMP Эхо- откликов , если таковые имеются. Для ICMP, если будет отправлен только один запрос, не будет ли ожидаться только ноль или один…
Получить название улицы с обратным Геокодированием
Я пытаюсь получить улицу , город и страну с обратным геокодированием, используя Google map example https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse , но все,…
люди API лимиты квот google
Я смотрю в People.API это только для пользователей google+. Кто-нибудь знает Сколько запросов я могу задать в день/минуты Бесплатно? какие вообще ограничения? Сколько будет стоить выйти за порог?…
Сколько заказов я могу сделать с бесплатной версией goecoding api?
Сколько заказов я могу сделать с бесплатной версией goecoding api? Это для исследовательских целей колледжа. $geocode=file_get_contents(‘ https://maps.google.com/карты/api/геокодирование/json?адрес=…
Google Maps Javascript API Биллинг
Я хочу использовать любой из этих 3 APIs: Карты JavaScript API Geocoding API StreetViewPanorama(Динамическая Улица Смотреть) Но я не смог получить точную информацию о том, как работает биллинг. Я…
Как узнать, сколько запросов каждый api обрабатывается каждый день в aws
У меня есть сервис EC2 (elasticbeanstalk), на котором находится мой проект. Теперь есть ли способ увидеть, сколько запросов конкретный API обрабатывает каждый день. Я храню журналы ошибок, доступа,…
Наиболее популярные поисковые запросы – 2016
Дональд Трамп Кембридж
Powerball Кемптон-Парк
Принц Миннеаполис
Дэвид Боуи Брайтон
Покемон Бакоор
Хиллари Клинтон Ньютон
Франция Рюэй-Мальмезон
Рамадан Эль-Ашир-мин-Рамадан
Орландо Доктор-Филлипс
Оскар Лондон
Чикаго Кабз Оттава
Медаль Эль-Пуэрто-де-Санта-Мария
Португалия Лагос
Ходячие мертвецы Вальпараисо
Международный женский день Барранкабермеха
Netflix Каноас
Дэдпул Гомель
Майкл Фелпс Бостон
Рио-де-Жанейро Кеймадос
Алан Рикман Лестер
Фунт стерлингов Хаунслоу
Хуан Габриэль Игуала
Европейский союз Кошице
Дебаты Лос-Мочис
Леонардо Ди Каприо Тбилиси
Мухаммед Али Луисвилл
Клоун Энн-Арбор
Кубок Америки по футболу Порт-о-Пренс
Бейонсе Крюгерсдорп
Польша Сохачев
Мюнхен Крайллинг
Уимблдон Митчем
Холи Музаффарпур
Гимнастика Ла-Плата
Високосный год Пусан
Брюссель Андерлехт
Криштиану Роналду Конакри
Даллас Хайленд-Парк
Карнавал Кадис
Горилла Цинциннати
Голден Стэйт Уорриорз Дейли-Сити
Ницца Сен-Лоран-дю-Вар
Панама Сан-Мигелито
Минута Силопи
Премьер-лига Джуба
Стамбул Стамбул
Полиция Франсиску-Белтран
Лимонад Петропавловск-Камчатский
Снег Хынгйен
Супервторник Сомервилл
Мелания Трамп Стамфорд
Финал НБА Кливленд
Бадминтон Субанг Джайя
Фидель Кастро Сан-Хосе-де-лас-Лахас
Ultimate Fighting Championship Лукан
Эволюция Мапуту
Кливленд Кавальерс Лейквуд
Джин Уайлдер Стамфорд
Коби Брайант Серритос
Доктор Стрэндж Пасиг
Чайна Онтарио
Мать Тереза Талеигао
Государственный переворот Уагадугу
Юрико Коикэ Хигасимураяма
Ганеша Улхаснагар
Футбольный клуб “Лестер Сити” Брофтон-Астли
Импичмент Санта-Круз-ду-Сул
Румыния Отопень
Референдум Энвигадо
Щенок Хаттисберг
Бад Спенсер Вац
Климат Сан-Луис
Харли Квинн Ладриллера
Кевин Дюрант Оклахома-сити
Спортивный зал Ноттингем
Симона Байлз Кларксберг
Паралимпийские игры Нитерой
Кентукки Дерби Сент-Мэтьюс
Uber Ольденбург
Берни Сандерс Берлингтон
Кэм Ньютон Индиан-Трейл
Шарлотт Минт-Хилл
Наушники Район Жонгхе
Селфи Банджармасин
Пабло Эскобар Белен-де-Эскобар
Колин Каперник Терлок
Железо Пак-Приео
Стипендия Горакхпур
Джокер Сьюдад-Несауалькойотль
Боб Дилан Уппсала
Азан Хамис-Мушайт
Бэки Ито
Антуан Гризманн Тьонвиль
Американская история ужасов Эдмонтон
Airbnb Булонь-Бийанкур
День взятия Бастилии Валансьен
Люк Кейдж Балтимор
Дзюдо Улан-Батор
Секретные материалы Галифакс
Селин Дион Труа-Ривьер
Северная Ирландия Голливуд
Лос-Анджелес Доджерс Пика-Ривера
Нэйт Диаз Стоктон
Пляжный волейбол Римини
HBO Санта-Моника
Батон-Руж Вестминстер
Мороженое Бостон
Big Ang Бронксвилл
Том Хиддлстон Оксфорд
Большой Барьерный риф Порт-Дуглас
Седьмой матч серии Пасай
Фрэнк Оушен Беркли
Профессор Северус Снейп Ипсвич
О. Джей Симпсон Санта-Моника
EgyptAir Шарм-эль-Шейх
Roblox Тагиг
Ченнинг Татум Вирджиния-Бич
Шарль Перро Эрбиль
Стивен Эйвери Аплтон
Минимальная зарплата Матурин
Крещение Панотла
Арнольд Палмер Лоусон-Хайтс
Алгебра Стерлитамак
Шон Пенн Онтарио
Ананас Гонолулу
Полнолуние Цюрих
Патти Дьюк Кер-д’Ален
Миша Тейт Чарльстон
Sözcü Azganlık Belediyesi
Баб аль-Хара Ревайя
Клубника Уцуномия
Парад Слайделл
Гравитационная волна Пиза
Богоявление Жольет
ЛГБТ Богор
Сорвиголова Карапикуиба
Заха Хадид Наджаф
Алексис Аркетт Чино
Го Хабаровск
Purple Rain Сент-Пол
Nas Валенса
Плюшевый мишка Джаландхар
Тако Лос-Мочис
Миллион Гургаон
Карри Итабаси
МикроРНК Кута
Тролль Арак
Годзилла Кита
Оахака Реес Мантекон
Комар Район Фэншань
Пасхальное яйцо Уолсолл
Полный дом Ереван
Неблагоприятные погодные условия Вальдштеттен
Виртуальная реальность Волта-Редонда
Юпитер Ева-Бич
Противоположность Амбато
Битва фонограмм Садбери
The Chainsmokers Дасмариньяс
Поздний завтрак Район Аннан
Поэзия на урду Кхариян
Хна Seeb
Black Lives Matter Итака
7-Eleven Чжунань
Водная горка Чилливак
Бриолин Бейкерсфилд
Звездная пара Макапа
Чубакка Бей-Лейк
Дорис Робертс Манчестер
Ориониды Ранчо-Кордова
Running Man Бату-Кейвс
Алисия Викандер Гёталанд
Плей-офф Кубка Стэнли Бетел-Парк
Петиция Лусака
Акира Бхилаи
Флинт Флинт
Медицинские банки Адду
Меррик Гарланд Стэнфорд
Лесли Джонс Бербанк
Борис Джонсон Кеннингтон
Транстихоокеанское партнерство Кутрал-Ко
Black Desert Online Вестерос
Кельвин Харрис Парадайс
Ангелик Кербер Фленсбург
Приянка Чопра Бхаратпур
Кайри Ирвинг Лорейн
Солнцезащитные средства Шираз
Большой и добрый великан Уотфорд
Twenty One Pilots Меса
Эль-Ниньо Кумана
Тарзан Гуджранвала
Гражданская война Пасиг
Джейми Варди Ибсток
Интернет-мем Чула-Виста
Мегин Келли Таузенд-Оукс
Красавица и чудовище Бей-Лейк
Трансгендер Провиденс
Джон Оливер Сомервилл
Том Хэнкс Энн-Арбор
Умберто Эко Терни
Гамильтон Мейплвуд
Шон Мендес Бандар-Сери-Бегаван
Миллениалы Санта-Моника
Страшные сказки Гренада
Харпер Ли Мерсед
Плагиат Веллуру
Оззи Осборн Лусака
Облако Багио
Сок Арнос-Вейл
Крис Эванс Кампала
Охотники за привидениями Бандар-Сери-Бегаван
Багдад Аль-Вихда
DOOM Владивосток
Образцовый самец Бергамо
Джейсон Борн Тэджон
Среда Дали
Единорог Лисберг
Мелисса МакКарти Дартмут
Золушка Бандар-Сери-Бегаван
Банджо Вестминстер
Донорство крови Мюнстер
Эксл Роуз Мерло
Алхимия Хорремабад
Прыжки на батуте Клейтон-ле-Вудс
Роберт Де Ниро Сараево
Adidas Superstar Сплит
Пенни Веспрем
Паддлбординг Каанапали
Шестнадцатилетие Дир-Парк
Chance The Rapper Чесволд
Кузнечик Бурса
Шейлин Вудли Бакоор
Карпул Кайенна
Джеймс Корден Фарнборо
Мясной рулет Реджайна
Палм-Спрингс Палм-Спрингс
Инферно Флоренция
Сибуя Мэгуро
Дреды Крюгерсдорп
Hotel California Ла-Пас
Earth, Wind & Fire Редан
Локи Дебрецен
Десятикилометровая дистанция Конингсби
Супергёрл Астана
Миль в час Колледж-Стейшен
Коррупция Палу
Курта Талеигао
Илон Маск Хоторн
Нобелевская премия по литературе Шеллефтео
Война и мир Терк
Окра Кагосима
Кебайя Сукохарджо
Роджер Эйлс Маклин
GloboNews Тижукас
Claire’s Булонь-сюр-Мер
Гавана Санта-Марта
Гамак Дир-Парк
Земля обетованная Санту-Антониу-ди-Жезус
Демагог Арлингтон
Мимоза Канны
Трэп-музыка Крюгерсдорп
Гуакамоле Тронхейм
Секретный агент Макгайвер Берген
Хануман Каримнагар
Бутылка для воды Оквилл
Даниэль Миддлтон Хилл-Топ
Песочные часы Алкмар
Шариковая ручка Решт
Вайнона Райдер Лонг-Бич
Печенье скаутов Блумингтон
Вольная борьба Хасавюрт
Начос Барселона
Каввали Кхариян
Кимчхи Хоа
Летная куртка Леон
Ходор Виндзор
Макс Стил Каруару
Нанкайская впадина Таканабе
Каста Раджамандри
Рыба и картофель фри Джилонг
Муссон Талеигао
Скотч Спрингфилд
Неравенство Кембридж
Чокер Гайана
Рейкьявик Гриндавик
Кетчуп Винница
Lyft Дейли-Сити
Бургундия Нассау
Гранола Виктория
DJ Snake Крюгерсдорп
Трантхань Тьензянг
Плоская Земля Депок
Суккуленты Пиндун
Вольтрон Глендейл
Мистер Ти Ильцен
Кошмар Восточный район
Энтони Роббинс Калабасас
Биас Вильнёв-сюр-Ло
Видеоблог Вьентьян
Цай Инвэнь Чутунг
Катха Бхаратпур
Дорожное приключение Колледж-Стейшен
Балаяж Талька
Динеш Лал Ядав Гопалгандж
Пит и его дракон Дьюндин
Альтруизм Керманшах
Джайнизм Джалгаон
Лебедь Фа-Хам
Сплошной купальник Дордрехт
Подбрасывание монеты Грэнби
Обещание Та-Ит
Книга Бытия Ришон-ле-Цион
Тень Беэр-Шева
Гиппокамп Вако
Субъективность Палмас
Сахарная вата Вирджиния-Бич
Травяной чай Сари
Мэтью Перри Лестер
RuPaul’s Drag Race Уэст-Бриджфорд
Расширение прав Габороне
Тулум Тулум
Канатный трамвай Долина
Французская коса Кельце
Имя собственное Бенгази
Наращивание ресниц Эбботсфорд
Берет Уссурийск
Жаркое Массапеква
Sharpie Колледж-Стейшен
Детская горка Чжубэй
Маат Рейссен
Стервятник Омбада
Ветровка Окснард
Джалеби Уаргла
Комета Галлея Ла-Серена
Уличная еда Орхус
Машинное обучение Рурки
Суперпища Ноорд
Warby Parker Нортгемптон
Берпи Тур
Битвы роботов Милтон
Гхи Мангалор
Данаида монарх Бейлис-Кроссродс
Пространство-время Дуранго
Глэмпинг Каслбар
Кофе колд-брю Сомервилл
Протеиновый батончик Ок-Брук
Наука о данных Стэнфорд
Зеленые яйца и ветчина Блумингтон
Цилиндр Дир-Парк
Боулдеринг Супериор
Еноты Макеевка
Бизнес-кэжуал Стиллуотер
Поясная сумка Саламанка
Деление столбиком Афины
Черный кот Женева
Минифигурки Lego Биллунн
Общая теория относительности Кеннингтон
Грамматический род Бенгази
Глубокое обучение Ханчжоу
Рваные джинсы Анхелес
Nike Cortez Оливет
Не тестируется на животных Нью-Уэстминстер
Olly olly oxen free Лас-Вегас
Ни пуха ни пера Шах-Алам
Трехпалый ленивец Варезе
Высокая площадка Морено-Валли
Веб-сайт— Как слишком много запросов приводят к сбою сервера? Веб-сайт
— Как слишком много запросов приводят к сбою сервера? — Ошибка сервераСеть обмена стеками
Сеть Stack Exchange состоит из 178 сообществ вопросов и ответов, включая Stack Overflow, крупнейшее и пользующееся наибольшим доверием онлайн-сообщество, где разработчики могут учиться, делиться своими знаниями и строить свою карьеру.
Посетите биржу стека- 0
- +0
- Авторизоваться Зарегистрироваться
Server Fault — это сайт вопросов и ответов для системных и сетевых администраторов.Регистрация занимает всего минуту.
Зарегистрируйтесь, чтобы присоединиться к этому сообществуЛюбой может задать вопрос
Любой может ответить
Лучшие ответы голосуются и поднимаются на вершину
спросил
Просмотрено 28 тысяч раз
Мне интересно, почему сайты вообще падают.
Если к серверу поступает слишком много запросов, он может поставить запрос в очередь в своем списки ожидания и обслуживать его, когда все предыдущие запросы были удовлетворены. Это означает, что запрос на о сайте позаботятся, хотя это может занять некоторое время чем ожидалось.
Тогда как веб-сайты падают из-за перегрузки сервера?
спросил 11 мая 2010 в 18:14
ЛазерЛазер41533 золотых знака77 серебряных знаков99 бронзовых знаков
Веб-сайты не «падают».
Веб-серверы настроены на прекращение приема новых посетителей, если запросы в очереди запросов превышают заданное число. При достижении этого предела отображается сообщение об ошибке.
503 Служба недоступна
Сервер в настоящее время не может обрабатывать запрос из-за временного перегрузка или техническое обслуживание сервер. Подразумевается, что это временное состояние, которое будет облегчение после некоторой задержки.Если известно, продолжительность задержки МОЖЕТ быть указывается в заголовке Retry-After. Если Retry-After не задан, клиент СЛЕДУЕТ обрабатывать ответ так, как он за ответ 500р.
Примечание. Наличие кода состояния 503 не означает, что сервер должен использовать его при перегрузке. Некоторые серверы могут пожелать просто отказаться от соединения.
ответ дан 11 мая 2010 в 19:34
ТФМТФМ18155 бронзовых знаков
4В очень простом сценарии список ожидания может быть заполнен, а сервер настолько занят обработкой/игнорированием новых запросов, что может эффективно обрабатывать запросы в очереди.
Взгляните на http://en.wikipedia.org/wiki/Denial-of-service_attack
ответ дан 11 мая 2010 в 18:20
Много способов:
- Серверу доступно ограниченное количество пропускной способности.Если злоумышленник может залить соединение целевого веб-сайта трафиком, он может перевести сайт в автономный режим.
- «поставить запрос в очередь в своих списках ожидания и обслужить его, когда все предыдущие запросы будут обслужены» Постановка запросов в очередь требует времени сама по себе. Если атакующий может отправлять запросы быстрее, чем сервер может поставить их в очередь, он может перевести сайт в автономный режим.
- Веб-сервер зависит от других ресурсов, таких как сервер базы данных или файловая система. Если атакующий может отправить достаточно запросов, чтобы перегрузить базу данных, он может отключить сайт.
ответ дан 11 мая 2010 в 20:50
Джоэл КоэлДжоэл Коэл12.9k1313 золотых знаков5858 серебряных знаков9999 бронзовых знаков
Не тот ответ, который вы ищете? Просмотрите другие вопросы с тегами веб-сайт или задайте свой вопрос.
Ошибка сервера лучше всего работает с включенным JavaScriptВаша конфиденциальность
Нажимая «Принять все файлы cookie», вы соглашаетесь с тем, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой использования файлов cookie.
Принять все файлы cookie Настроить параметры
Оптимизация
. Каков «средний» запрос в секунду для производственного веб-приложения?
лично я как анализ делаю каждый раз…. запросов в секунду и среднее время/запрос, и, кроме того, мне нравится видеть максимальное время запроса. легко перевернуть, если у вас 61 запрос в секунду, вы можете просто перевернуть его на 1000 мс / 61 запрос.
Чтобы ответить на ваш вопрос, мы сами провели огромный тест нагрузки и обнаружили, что он колеблется на различном оборудовании Amazon, которое мы используем (лучшим значением был 32-битный средний процессор, когда он дошел до $$/событие/секунда) и наши запросы/ секунд варьировалось от 29 запросов в секунду на узел до 150 запросов в секунду на узел.
Предоставление лучшего оборудования, конечно, дает лучшие результаты, но не лучшую рентабельность инвестиций. В любом случае, этот пост был великолепен, так как я искал некоторые параллели, чтобы увидеть, где мои цифры на приблизительном уровне, и поделился ли я своими, на случай, если кто-то еще ищет. Мой загружен настолько высоко, насколько я могу.
ПРИМЕЧАНИЕ: благодаря запросам/второму анализу (не ms/request) мы обнаружили серьезную проблему Linux, которую мы пытаемся решить, когда Linux (мы тестировали сервер на C и Java) замораживает все вызовы в библиотеки сокетов, когда слишком много нагрузки, что кажется очень странным.Полный пост можно найти здесь на самом деле …. http://ubuntuforums.org/showthread.php?p=11202389
Мы все еще пытаемся решить эту проблему, так как это дает нам огромный прирост производительности, поскольку наш тест увеличивается с 2 минут 42 секунд до 1 минуты 35 секунд, когда это исправлено, поэтому мы видим улучшение производительности на 33% …. не говоря уже о , чем хуже DoS-атака, тем длиннее эти паузы, чтобы все процессоры упали до нуля и прекратили обработку… на мой взгляд, обработка сервера должна продолжаться перед лицом DoS, но по какой-то причине он зависает каждый раз в а во время доса иногда до 30 секунд!!!
ДОПОЛНЕНИЕ: мы обнаружили, что на самом деле это была ошибка состояния гонки jdk…. сложно изолировать на больших кластерах, но когда мы запускали 1 сервер 1 узел данных, но 10 из них, мы могли воспроизводить его каждый раз и просто смотреть на сервер / узел данных, на котором это произошло. Переключение jdk на более раннюю версию устранило проблему. Я думаю, мы были на jdk1.6.0_26.
Как мы обрабатываем тысячи запросов в секунду | by veritas
Создание API оказалось сложной задачей по целому ряду причин. Речь идет не только о предоставлении ваших данных для потребления другими. Вы должны думать об авторизации, ожидаемой нагрузке на ваш API, чтобы попытаться минимизировать задержку, и это только поверхность.
Мы получили более 6 миллионов запросов за последние 24 часа в ходе тестирования.
API-интерфейс Bored.dev Pooky — это служба, которая позволяет разработчикам ботов Supreme создавать файлы cookie, необходимые для совершения покупки на веб-сайте Supreme. API разбит на несколько микросервисов, которые занимаются очисткой, анализом и созданием этих файлов cookie.
Создавая наш API, я понятия не имел, сколько запросов будет поступать и справятся ли с этим наши серверы. Все, что я знал, это то, что будет много запросов, и это произойдет в течение нескольких секунд после 11:00 по восточному поясному времени.
Чтобы подготовиться к худшему сценарию, мы провели множество нагрузочных тестов. Мы сделали это с помощью Loader.io, инструмента для нагрузочного тестирования ваших приложений. Мы начали с теста 20k RPS.
Все выглядело шатко. Наш API размещен на Google App Engine, и мы ожидали, что автомасштабирование сработает и справится с любой нагрузкой, которая возникнет. Этого не было. Мы получали тысячи 500 ответов от нашего API на отметке 5 секунд. Нам нужно было продолжить расследование
Приложение.yaml содержит информацию о вашем приложении, среде выполнения и связанных свойствах. В нашем исходном файле app.yaml мы использовали класс экземпляра F2. Каждый класс экземпляров имеет свои ограничения ресурсов и цены. Google перечисляет классы экземпляров для App Engine в удобной таблице
Хотя увеличение типа экземпляра немного помогло, мы все еще видели 500. Этого было недостаточно.
Изучив документацию app.yaml, Google сообщает нам, что если мы используем класс экземпляра F2 или выше, мы можем увеличить максимальное количество одновременных запросов.Максимально допустимое количество — 80. Увеличение этого числа помогло предотвратить около 500 ошибок, но среднее время отклика осталось высоким (в среднем 3,3 с).
У нас также было несколько тайм-аутов, поэтому этого было недостаточно, нам нужно было резко сократить эти цифры.
Читая документацию App Engine more, мы узнаем, что для обслуживания внезапного всплеска трафика мы должны использовать свойство min_idle_instances в конфигурации app.yaml.
Бездействующие экземпляры полезны, поскольку они позволяют немедленно обслуживать внезапный трафик, поскольку они постоянно ожидают использования.Бездействующие экземпляры стоят дороже, но очень хорошо реагируют на внезапные всплески трафика. Также важно, чтобы вы настроили это число, чтобы выяснить, сколько простаивающих экземпляров лучше всего подходит для вашего сценария.
В целях тестирования мы увеличили количество неактивных экземпляров до 300 минимум и до 320 экземпляров бездействия. После развертывания мы были готовы запустить еще один тест.
Мы смогли обработать ~279 тыс. запросов за 14 секунд со средним временем отклика 32 мс и без ошибок! Теперь 300 минимум экземпляров бездействия могут быть излишними, и это, вероятно, не будет идеальным числом для вас.Чтобы найти то, что работает для вас, вы должны запустить несколько тестов и иметь представление о том, сколько запросов вам нужно будет обработать.
Сколько запросов в секунду может обрабатывать веб-сервер?
Сколько запросов в секунду может обрабатывать веб-сервер? Стандартное количество открытых соединений для большинства серверов обычно составляет около 256 или меньше, следовательно, 256 запросов в секунду. Вы можете увеличить его до 2000-5000 для запросов ping или до 500-1000 для легких запросов.
Сколько запросов в секунду может обрабатывать сервер? Как правило, правильно настроенный nginx может обрабатывать от 400 000 до 500 000 000 запросов в секунду (в кластере), максимум, что я видел, это от 50 000 до 80 000 (некластеризованных) запросов в секунду и 30% загрузки ЦП, конечно, это было 2 x Intel Xeon. с включенным HyperThreading, но он может без проблем работать на более медленных машинах.
Сколько вызовов API может обработать сервер? В консоли API существует аналогичная квота, называемая запросами на 100 секунд на пользователя. По умолчанию установлено значение 100 запросов за 100 секунд на пользователя, и его можно настроить на максимальное значение 1000. Но количество запросов к API ограничено максимум 10 запросами в секунду на пользователя.
Сколько одновременных запросов может обрабатывать сервер? 5 ответов. У вас может быть 1000 одновременных запросов в секунду, в зависимости от того, что запрашивается.
Много ли 1000 запросов в секунду? Стандартное количество открытых соединений для большинства серверов обычно составляет около 256 или меньше, следовательно, 256 запросов в секунду. Вы можете увеличить его до 2000-5000 для запросов ping или до 500-1000 для легких запросов.
Сколько запросов в секунду может обрабатывать веб-сервер? – Дополнительные вопросы
Сколько соединений может обрабатывать сервер?
На уровне TCP кортеж (IP-адрес источника, порт источника, IP-адрес назначения, порт назначения) должен быть уникальным для каждого одновременного подключения.Это означает, что один клиент не может открывать более 65535 одновременных подключений к одному серверу. Но сервер может (теоретически) обслуживать 65535 одновременных подключений на одного клиента.
Каков разумный предел скорости API?
Соответствующий код состояния HTTP для ограничения скорости обсуждался примерно так же, как табуляция и пробелы, но теперь есть явный победитель; RFC 6585 определяет его как 429, поэтому API должны использовать 429.
Каковы пределы использования API?
В консоли API существует аналогичная квота, называемая запросами на 100 секунд на пользователя.По умолчанию установлено значение 100 запросов за 100 секунд на пользователя, и его можно настроить на максимальное значение 1000. Но количество запросов к API ограничено максимум 10 запросами в секунду на пользователя.
Что такое хорошие запросы в секунду?
В среднем 200-300 подключений в секунду.
Сколько пользователей могут одновременно посещать веб-сайт?
Замечательно, что вы хотите знать ответ, но нет ни одного жесткого и быстрого правила, чтобы предоставить его вам.У вас есть несколько ограничений: Порты: максимум 65536, практически меньше, первые 1024 зарезервированы, если вам нужно больше, вам нужно несколько NIC (Network Interface Card) или несколько серверов для балансировки нагрузки.
Сколько запросов может обработать сервер узла?
JS может обрабатывать 10 000 одновременных запросов, которые по сути являются неблокирующими запросами, то есть эти запросы в основном относятся к запросу базы данных.
Как сервер обрабатывает одновременные запросы?
Если сервер использует несколько подпроцессов для обслуживания нескольких запросов, выделяя каждый сокет одному подпроцессу, то он называется многопоточным сервером.Вот как сервер обрабатывает несколько подключений одновременно.
Как сервер обрабатывает несколько запросов?
На самом деле у нас может быть несколько подключений от одного клиента к одному и тому же серверу. Каждому клиентскому процессу будет назначен различный временный номер порта, поэтому, даже если все они попытаются получить доступ к одному и тому же процессу сервера (например, процессу веб-сервера по адресу 41.199.
).Сколько запросов получает Google в секунду?
Однако, по оценкам, Google обрабатывает около 63 000 поисковых запросов каждую секунду, что соответствует 5.6 миллиардов поисковых запросов в день и около 2 триллионов глобальных поисковых запросов в год.
Сколько запросов получает Google в секунду?
1. Google получает более 63 000 поисковых запросов в секунду в любой день. Это среднее количество людей, использующих Google в день, что означает не менее 2 триллионов поисковых запросов в год, 3,8 млн поисковых запросов в минуту, 228 млн поисковых запросов в час и 5,6 млрд поисковых запросов в день.
Сколько запросов получает Gmail в секунду?
86 400 секунд в день.35,5 млрд запросов в день / 86 400 = ~ 411 тыс. запросов в секунду.
Сколько соединений WebSocket может обрабатывать сервер?
По умолчанию один сервер может обрабатывать 65 536 сокетов только потому, что это максимальное количество доступных портов TCP. Таким образом, поскольку соединения WS имеют природу TCP, и каждый клиент WS использует один порт, мы можем определенно сказать, что количество соединений WebSocket также ограничено. На самом деле это полуправда.
Могут ли два клиента подключаться к одному и тому же порту?
Независимо от протоколов с сохранением или без сохранения состояния, два клиента могут подключаться к одному и тому же порту сервера, потому что для каждого клиента мы можем назначить другой сокет (поскольку IP-адрес клиента определенно будет отличаться).Один и тот же клиент также может иметь два сокета, подключенных к одному и тому же порту сервера, поскольку такие сокеты отличаются SRC-PORT.
Сколько соединений может обрабатывать один порт?
Сколько соединений может обрабатывать один порт?
Как долго действует ограничение скорости?
Обычно алгоритмы ограничения скорости отслеживают количество запросов за короткий период времени, например одну секунду или одну минуту. Если запросы превышают пороговое значение, вы обычно будете видеть ответы об ошибках с кодом состояния 429.Сюда входит заголовок «Retry-After».
Сколько вызовов API слишком много?
Эти планы могут различаться в зависимости от конкретного API или текущего плана обслуживания пользователя. Но в большинстве случаев наши серверы будут отклонять запросы API от определенного приложения, если частота запросов превышает 30 запросов API в минуту. В этом случае клиент получит ошибку HTTP с кодом состояния 429 «слишком много запросов».
Как проверить ограничения API?
1 Ответ. При написании тестов вы можете использовать Javascript, чтобы различать разные тесты, которые вы хотите запустить.Таким образом, вы можете настроить запуск теста, если он дает правильный ответ, запустите первый тест (код ответа = 200). В противном случае, если ответ не 204, запустите второй тест (тело ответа имеет «предел превышен»).
Что такое регулирование REST API?
Регулирование — это процесс, используемый для контроля использования API-интерфейсов потребителями в течение заданного периода. Например, вы можете ограничить общее количество запросов API до 10 000 в день. При превышении предела дроссельной заслонки сервер отправляет пользователю сообщение 429 в качестве статуса HTTP с содержимым сообщения как «слишком много запросов».
Бесплатен ли API Google Диска?
Сколько стоит API Диска Google? Использование Google Drive API совершенно бесплатно.
В чем разница между вторым попаданием и вторым запросом?
«Хитов в секунду» относится к количеству HTTP-запросов, отправленных пользователем (пользователями) на веб-сервер в секунду. С точки зрения тестирования производительности, существует большая разница в транзакциях в секунду и хитах в секунду. Одна транзакция может создать несколько обращений к серверу.
Сколько запросов может обработать реальное серверное приложение Node.js? | Давит Варданян
Когда я был новичком в мире Node.js, мне было интересно узнать, сколько запросов на самом деле может обработать мое приложение Node.js в производстве (как реальное приложение). Или сколько экземпляров сервера мне нужно для обработки определенного объема трафика.
В прошлом году я прочитал кое-что очень интересное для меня в статье от компании-единорога PicsArt. Они обрабатывают 40 000 запросов в секунду, используя Node.js (в основном) для бэкенда.
Что ж, 40 000 об/с — это действительно много, и кроме внутреннего сервера это зависит еще от некоторых факторов. Но на данный момент давайте забудем об этих факторах и будем думать только о серверном оборудовании и программном обеспечении, в частности о Node.js.
Тест Fastify
Есть тест, сделанный создателями Fastify, он показывает, что express.js может обрабатывать ~ 15 000 запросов в секунду, а модуль vanilla HTTP может обрабатывать 70 000 запросов в секунду.
Я попробовал это с Macbook Pro 15″ 2015 года и получил почти такой же результат.Даже 15 000 об/с с помощью express.js звучит действительно здорово. Но бенчмарки обычно делаются на крошечном обработчике API, который далек от реального API. Итак, что делает API «реальным миром»? Данные, передача данных и взаимодействие между компонентами. Чтобы иметь реальный API, нам нужно создать обработчик, который взаимодействует с БД или другими службами.
Мой эксперимент
Эти результаты не так важны. В большинстве случаев проверенные фреймворки, такие как express(15K), лучше, потому что на самом деле вы не собираетесь обрабатывать 100 000 запросов в секунду с помощью одного экземпляра.Итак, я установил express.js для своих тестов и создал небольшой обработчик API с различными типами операций, и сделал нагрузочные тесты.
Размер ответа был около 12 КБ, каждый пользовательский объект выглядел так
Пользовательский объект, 609 байт данныхУзел.js в Heroku с помощью AWS RDS
Я развернул приложение в Heroku на оборудовании стоимостью 25 долларов в месяц. Затем я отправил запросы столько, сколько я могу сделать, не увеличивая среднюю задержку. Итак, мой экземпляр Node.js был способен обработать 31 тыс. запросов за 60 секунд, что означает в среднем 515 запросов в секунду.
Тест Node.jsDjango в Heroku с AWS RDS
Затем я спросил, что произойдет, если я попробую то же самое с технологией, которая не является однопоточной. Я создал точно такие же условия для приложения Django с эквивалентным обработчиком и развернул его на том же сервере.Результаты были немного хуже, чем в Node.js, я мог выполнить до 23 тысяч запросов за 60 секунд, то есть 389 запросов в секунду.
Тест DjangoNode.js (3 экземпляра) на AWS EB с AWS RDS
Затем я спросил, что, если мое приложение Node.js является реальным производственным приложением, развернутым в AWS и работающим для определенных трафик. Я выбрал регион Франкфурт (eu-central-1, это был ближайший для меня, около 3000 км 😁) и для БД, и для внутреннего сервера. Для этого теста я использовал 3 экземпляра Node.js с балансировкой нагрузки AWS.Мои 3 инстанса смогли обработать 19 тысяч запросов за 10 секунд, что означает 1858 запросов в секунду. Затем я непрерывно тестировал свое приложение под нагрузкой, я смог достичь 1,5 миллиона успешных запросов за 13 минут, что захватывающе😁
Тест Node.js, развернутый на AWS EB40К запросов в секунду? Если средний API нашей платформы, скажем, в два раза больше, чем в моем тесте, на * . Итак, мне нужно 40 000/(600/2) = 133 экземпляра по всему миру в разных местах для приложения единорога глобального масштаба.Ничего страшного😁
* он может быть в 3 раза больше, но также он может использовать различные методы кэширования, связь на основе событий, и т. д., чтобы выиграть больше запросов в секунду, поэтому я думаю, что в 2 раза больше точное измерение
Я хотел закончить эту статью полезным списком некоторых проблем, с которыми вы можете столкнуться в приложениях, над которыми вы работаете или будете работать.
Существует бесчисленное количество факторов, которые могут замедлить работу нашего API. Я отделил некоторые части, связанные с производительностью, которые мы можем видеть в большинстве серверных веб-приложений.
- Размер данных, которые сохраняются или извлекаются из БД. Особенно, когда мы говорим о реляционных БД, это более важно, потому что большой размер данных в основном может означать сложные запросы или сложные операции между системой управления базой данных и диском памяти БД. Однако во всех случаях, чем больше у нас байтов, тем больше времени передачи нам нужно. Мы также должны помнить, что сохранение файлов в БД — это антипаттерн, вместо этого мы должны рассмотреть возможность использования объектного хранилища. В идеале размер наших данных не должен превышать десятки килобайт, обычно это ~1–20 кб
- Физическое расстояние между внутренним сервером и сервером БД.Большее расстояние означает больше времени для запросов, которые будут получены БД и отправлены обратно на наш внутренний сервер. Рассмотрим пример, когда у нас есть два внутренних сервера в Вирджинии, США, и Франкфурте, Германия, но у нас есть один сервер БД в Вирджинии, США. Запрос нашего пользователя из США будет перенаправлен на наш серверный экземпляр в США с задержкой ~ 10–40 мс, а затем 1–5 мс займет задержку от серверной части (Вирджиния) к БД (Вирджиния). Неплохо. Посмотрим, что будет для пользователя из Германии, латентность «устройство пользователя» — «бэкенд-сервер» составит 10–20 мс, а для запроса данных потребуется 120–130 мс.Так что, если у нас есть одно региональное приложение, в идеале наши данные и наша внутренняя логика являются соседями. Или, если у нас есть приложение глобального масштаба, мы должны быть готовы выполнять различные сложные инженерные работы, чтобы иметь хорошую производительность
- Аппаратное обеспечение сервера БД также оказывает большое влияние. Если у нас небольшое приложение, подумайте о покупке более качественного железа под наш трафик, иначе — «разные сложные инженерные штучки» ☝️ 😁
- конфигурация БД. Базы данных поставляются с конфигурацией по умолчанию, чтобы их управление не было дополнительной головной болью.В зависимости от нашего масштаба мы будем иметь дело с этим. Одна вещь, которую я хочу упомянуть, это максимальное количество подключений, это может быть узким местом в нашем приложении или чрезмерным для нашего сервера БД. Обычно он перенастраивается клиентскими библиотеками БД (ORM и т. д.). Другое дело — тайм-аут соединения.
- Количество вызовов БД. В реальном API у нас могут быть, например, десятки отдельных вызовов БД, чтобы, наконец, выполнить работу, кроме того, в этом API у нас также могут быть сервисные вызовы, и у каждого из этих сервисов есть свои «десятки вызовов БД». .Впечатляющий пример, который я встретил, был в проекте, к которому я присоединился давным-давно, API-интерфейс банковского монолита. В облачной среде разработки был API с временем отклика 9 с. Обработчик службы в этом API имел 300 строк кода, в которых мы могли найти около 30 вызовов БД и около 10 внутренних вызовов службы. Обычно это происходит, когда наш подход — «сначала код», а не «сначала дизайн». Есть много решений, которые помогают избежать этого в зависимости от нашей бизнес-логики. Например, очереди и другие асинхронные меры могут дать нам возможность обрабатывать некоторое количество вызовов БД в «фоновом режиме».Чтобы воспользоваться этим, нам нужно будет разбить наши большие сервисы на маленькие сервисы. Кроме того, мы можем объединять запросы, чтобы уменьшить количество вызовов БД.
- Крючки. Во всех популярных ODM/ORM есть функция, называемая перехватчиками/промежуточными программами. Иногда действительно удобно позволить этой функции позаботиться о некоторой логике. А иногда, особенно при работе с массовыми операциями, мы можем столкнуться с «скрытым» узким местом. Плагины ODM/ORM также нуждаются в вычислительных ресурсах, что также требует времени (т.грамм. плагин для преобразования camelCase/pascal_case). Крючки действительно полезны, но нужно дважды подумать, что мы пишем и где мы пишем.
- Задачи, интенсивно использующие ЦП, не только замедляют работу сервера, но и заставляют конечного пользователя ждать. В Node.js многие задачи, интенсивно использующие ЦП, зависят от пула потоков. Хотя он не блокирует асинхронный ввод-вывод, он замедляет работу API. Например, пользователь щелкает, чтобы зарегистрироваться, и ждет, пока пул потоков хэширует его/ее пароль, и это занимает, кстати, 100 миллисекунд.
- Узкие места цикла событий. В Node.js выполнение кода зависит от цикла обработки событий, поэтому производительность нашего кода напрямую влияет на все приложение (поскольку оно запущено и работает в одном потоке). Например, использование JSON.parse/stringify может замедлить работу наших API. Вложенные циклы и рекурсивные функции также опасны. При игнорировании того, как работает Node.js, в зависимости от размера данных и трафика приложения, мы можем столкнуться с проблемой, и наше приложение может быть недоступно.
- Плохая архитектура инфраструктуры.Возможных проблем в крупной инфраструктуре не просто больше, чем в монолитных приложениях, они другие и иногда требуют сложных архитектурных решений. Когда наша инфраструктура содержит много компонентов, плохая архитектура может оказать огромное влияние на наши API, и наша система будет работать неэффективно с точки зрения ресурсов, а это означает, что мы будем платить больше за то же самое, что могло бы быть дешевле. Таким образом, при разработке сложных приложений мы должны думать о проблемах, которые решает конкретная технология, и быть хорошо информированными об альтернативах.Нам также нужно думать о перспективах, что произойдет, если у нас будут изменения бизнес-требований через два месяца или через шесть месяцев при создании функции, по каждому утверждению постарайтесь угадать как можно больше. Подумайте об SLA. Подумайте о нефункциональных требованиях, что, если трафик возрастет? Всегда будьте готовы к неожиданно высокому трафику, даже есть теория, согласно которой мы должны быть готовы обрабатывать в 10 раз больше трафика, чем у нас есть.
- Весы/оборудование/установка компонентов. Компоненты, которые мы создали в нашей инфраструктуре, могут замедлять работу всей нашей платформы.Предположим, что мы используем RabbitMQ. Он имеет множество конфигураций и опций, как и любая технология. И если мы пойдем со стандартами в начале, это нормально. Но со временем, если мы проведем больше исследований, если мы углубимся в конкретный компонент, мы поймем, что можем значительно улучшить нашу инфраструктуру, выполнив проверку настроек или рефакторинг конфигурации или использования в наших сервисах. Кроме того, мы должны масштабировать наши компоненты в зависимости от использования, чтобы не создавать узких мест в инфраструктуре.
Спасибо за внимание. И если вам нравятся статьи, связанные с производительностью, не забывайте хлопать, это поможет мне подготовить более продуманные статьи с более глубоким пониманием.
Больше контента на plainenglish.io
Сколько запросов в Pokémon Legends: Arceus
Pokemon Legends: Arceus был выпущен в январе 2022 года на Nintendo Switch. Ролевая игра в жанре экшн мгновенно стала хитом среди поклонников покемонов и новых игроков, которые хвалили ее за захватывающие новые функции и стиль игры.Хотя он дает игрокам новый способ игры в покемонов, он по-прежнему сохраняет свои корни в оригинальных играх, связывая старых персонажей с новыми персонажами в этом приквеле. Игроки исследуют землю и исследуют покемонов, выполняя миссии и побочные квесты персонажей, называемые «запросами». Узнайте больше об этих запросах ниже.
Запросы в Pokemon Legends: Arceus
По мере прохождения игроками основного сюжета в Pokemon Legends: Arceus появляется больше запросов.Эти запросы можно найти на карте, отмеченной белым кружком внутри темно-синего маркера.
Чой в Pokemon Legends: ArceusВыполненные запросы дают игрокам такие награды, как ресурсы, предметы и покеболы, а также XP. Запросы могут начинаться в любом месте и доставлять игроков в любую точку карты. Это означает, что многие запросы помогают игрокам исследовать немного больше и, возможно, встретить покемонов или персонажей, которых они, возможно, еще не видели или не встречали.
Многие запросы разблокируются после того, как предыдущая часть завершена в побочной истории, например, побочный квест по обновлению универсального магазина в начале игры.Этот конкретный запрос требует, чтобы игроки перемещались между двумя персонажами, Чоем и Тао Хуа, находя предметы, которые они просят, а также побеждали различных покемонов.
Galaxy Hall в Pokemon Legends: ArceusДругие запросы появляются на доске в подвале Galaxy Hall после того, как вы поймали или столкнулись с определенным покемоном.
В настоящее время (по состоянию на 28 февраля 2022 г.) 122 запроса в Pokemon Legends: Arceus, но в будущих обновлениях может быть добавлено больше. Найдите полный список запросов и способы их разблокировки здесь!
Сколько запросов вы уже выполнили? Расскажите нам в комментариях ниже.
Мы набираем авторов руководств по игре!
Touch, Tap, Play ищет опытных писателей для написания руководств по популярным играм для мобильных устройств и Nintendo Switch. Если мобильные игры — ваша страсть и вы хотите получать деньги за создание руководств, вы обратились по адресу. Проверьте наше объявление о работе сегодня!
Ограничения скорости API Shopify
Чтобы наша платформа оставалась стабильной и справедливой для всех, все API-интерфейсы Shopify ограничены по скорости. Мы используем различные стратегии для обеспечения ограничения скорости.Мы просим разработчиков ответственно использовать стандартные методы ограничения вызовов, кэширования результатов и повторных запросов.
Сравнение ограничений скорости по API
API-интерфейсы Shopify используют несколько различных методов ограничения скорости. Более подробно они описаны ниже, но вот основные цифры вкратце:
Алгоритм дырявого ведра
Все API-интерфейсы Shopify используют алгоритм дырявого ведра для управления запросами. Этот алгоритм позволяет вашему приложению делать неограниченное количество запросов в виде нечастых пакетов с течением времени.
Основные моменты метафоры с дырявым ведром, которые нужно понять, следующие:
- Каждое приложение имеет доступ к корзине. Он может вместить, скажем, 60 «шариков».
- Каждую секунду из ведра вынимается шарик (если есть). Так всегда будет больше места.
- Каждый запрос API требует, чтобы вы бросили шарик в ведро.
- Если ведро переполняется, вы получаете сообщение об ошибке и должны ждать, пока освободится место в ведре.
Эта модель гарантирует, что приложения, которые ответственно управляют вызовами API, всегда будут иметь место в своих корзинах, чтобы при необходимости выполнить пакет запросов.Например, если вы делаете в среднем 20 запросов («шариков») в секунду, но вдруг вам нужно сделать 30 запросов одновременно, вы все равно можете сделать это, не достигая предела скорости.
Основные принципы алгоритма дырявого ведра применяются ко всем нашим ограничениям скорости, независимо от конкретных методов, используемых для их применения.
Методы ограничения скорости
Shopify использует три различных метода управления ограничениями ставок. Различные API используют разные методы в зависимости от варианта использования, поэтому убедитесь, что вы понимаете различные типы ограничений скорости, с которыми сталкиваются ваши приложения:
Ограничения на основе запросов
Приложения могут делать максимум запросов в минуту.Например: 40 запросов API в течение 60 секунд. Каждый запрос учитывается одинаково, независимо от того, сколько или как мало данных возвращается.
Этот метод используется REST Admin API.
Ограничения по времени
Приложения могут делать запросы, которые занимают максимум раз в минуту. Например: 120 запросов в течение 60 секунд, при этом каждый запрос занимает 0,5 секунды для возврата. Более сложные запросы занимают больше времени и, следовательно, занимают пропорционально большую долю лимита.
Этот метод используется API Storefront.
Расчетная стоимость запроса
Приложения могут выполнять запросы, стоимость которых не превышает баллов в минуту. Например: 1000 очков за 60 секунд. Более сложные запросы стоят больше баллов и, следовательно, занимают пропорционально большую долю лимита.
Этот метод используется API GraphQL
Ограничения скорости GraphQL Admin API
Вызовы API-интерфейса администрирования GraphQL ограничены на основе расчетной стоимости запросов, что означает, что вы должны учитывать стоимость запросов с течением времени, а не число запросов.
Ограничения скорости GraphQL Admin API основаны на сочетании приложения и магазина. Это означает, что вызовы из одного приложения не влияют на ограничения скорости другого приложения, даже в том же магазине. Точно так же звонки в один магазин не влияют на ограничения скорости другого магазина, даже из того же приложения.
Каждая комбинация приложения и магазина получает сегмент в 1000 единиц стоимости с частотой утечки 50 единиц стоимости в секунду. Это означает, что общая стоимость ваших запросов не может превышать 1000 баллов в любой момент времени, и эта комната создается в корзине приложения со скоростью 50 баллов в секунду.Создавая более простые и недорогие запросы, вы со временем сможете делать больше запросов.
Ограничение использует комбинацию запрошенной и фактической стоимости запроса. Перед началом выполнения в корзине приложения должно быть достаточно места для запрошенной стоимости запроса. По завершении выполнения сегменту возвращается разница между запрошенной стоимостью и фактической стоимостью запроса.
Расчет стоимости
Каждому полю в схеме назначено целочисленное значение стоимости.Стоимость запроса представляет собой сумму стоимости каждого поля. Выполнение запроса — лучший способ узнать реальную стоимость запроса.
По умолчанию стоимость поля зависит от того, что возвращает поле:
Возврат поля | Стоимость |
---|---|
Скаляр | 0 |
Перечисление | 0 |
Объект | 1 |
Интерфейс | 1 |
Союз | 1 |
Несмотря на то, что эти цены по умолчанию действуют, Shopify также оставляет за собой право устанавливать стоимость вручную на полях.
Примечание
Мутации имеют стоимость по умолчанию 10
. Поля подключения имеют стоимость 2
плюс количество объектов, запрошенных с использованием первых
и последних
аргументов.
Запрашиваемая и фактическая стоимость
Shopify рассчитывает стоимость запроса как до, так и после выполнения запроса. Запрашиваемая стоимость зависит от количества запрошенных полей. Фактическая стоимость основана на возвращенных результатах, поскольку запрос может завершиться раньше из-за того, что поле типа объекта возвращает значение null, или поля подключения могут возвращать меньше ребер, чем запрошено.
Ограничение на один запрос
Стоимость одного запроса к API не может превышать 1000. Это ограничение применяется до выполнения запроса на основе запрошенной стоимости запроса.
Ограничение максимального размера входного массива
Входные аргументы, которые принимают массив, имеют максимальный размер 250. Запросы и изменения возвращают ошибку, если входной массив превышает 250 элементов.
Ответ GraphQL
Ответ включает информацию о стоимости запроса и состоянии ограничения.Эти данные возвращаются под ключом extensions
:
Чтобы получить подробную информацию о том, как каждое поле влияет на запрошенную стоимость, вы можете включить в свой запрос заголовок «X-GraphQL-Cost-Include-Fields»: true
.
Массовые операции
Для запроса и извлечения больших объемов данных следует использовать массовые операции вместо отдельных запросов. Массовые операции предназначены для обработки больших объемов данных, и они не имеют ограничений по максимальной стоимости или скорости, которые имеют отдельные запросы.
Ограничения скорости REST Admin API
Вызовы REST Admin API регулируются ограничениями на основе запросов, что означает, что вы должны учитывать общее число вызовов API, которое делает ваше приложение. Кроме того, существуют ограничения скорости и ограничения на основе ресурсов.
Ограничения скорости REST Admin API основаны на сочетании приложения и магазина. Это означает, что вызовы из одного приложения не влияют на ограничения скорости другого приложения, даже в том же магазине. Точно так же звонки в один магазин не влияют на ограничения скорости другого магазина, даже из того же приложения.
Пределы рассчитываются с использованием алгоритма дырявого ведра. Все запросы, сделанные после превышения ограничений скорости, регулируются, и возвращается ошибка HTTP 429 Too Many Requests
. Запросы снова выполняются успешно после того, как достаточное количество запросов опустеет из корзины. Вы можете увидеть текущее состояние дроссельной заслонки для магазина, используя заголовок ограничения скорости.
Свойства размера корзины и скорости утечки определяют поведение пакета API и частоту запросов.
Настройки по умолчанию следующие:
- Размер корзины :
40 запросов/приложение/магазин
- Скорость утечки :
2/сек
Shopify Плюс
Размер ведра и скорость утечки удвоены для магазинов Shopify Plus:
- Размер корзины :
80 запросов/приложение/магазин
- Скорость утечки :
4/сек
Если размер корзины превышен, возвращается ошибка HTTP 429 Too Many Requests
.Ведро опорожняется со скоростью утечки два запроса в секунду. Чтобы избежать дросселирования, вы можете настроить приложение так, чтобы в среднем два запроса в секунду. Дроссельная заслонка работает по принципу «проход или отказ». Если в вашей корзине есть доступная емкость, то запрос выполняется без очередей и задержек обработки. В противном случае запрос блокируется.
Существует дополнительное ограничение скорости запросов GET. Когда значение параметра страницы
приводит к смещению более 100 000 запрошенного ресурса, возвращается ошибка 429 Too Many Requests
.Например, запрос GET /admin/collects.json?limit=250&page=401
создаст смещение 100 250 (250 x 401 = 100 250) и вернет ответ 429.
Осторожно
Разбиение на страницы на основе страниц устарело в Admin API версии 2019-07. Вместо этого используйте разбиение на страницы с помощью курсора.
Заголовок ограничения скорости
Вы можете проверить, сколько запросов вы уже сделали, используя заголовок Shopify X-Shopify-Shop-Api-Call-Limit
, который был отправлен в ответ на ваш запрос API.В этом заголовке указано, сколько запросов вы сделали для определенного магазина. Например:
В этом примере 32
— это текущее количество запросов, а 40
— размер корзины.
С течением времени количество запросов уменьшается в соответствии с интенсивностью утечки. Например, если в заголовке отображается 39/40
запросов, то после периода ожидания в десять секунд в заголовке отображается 19/40
запросов.
Заголовок Retry-After
Когда запрос превышает ограничение скорости, возвращается ошибка 429 Too Many Requests
и заголовок Retry-After
.Заголовок Retry-After
содержит количество секунд ожидания до повторного запроса. Любой запрос, сделанный до истечения времени ожидания, регулируется.
Ограничения скорости API Storefront
Вызовы API Storefront регулируются временными ограничениями, что означает, что вы должны учитывать время выполнения ваших запросов, а не число запросов.
Свойства размера корзины и скорости утечки определяют поведение пакета API и частоту запросов.Ограничение в 60 секунд применяется к IP-адресу покупателя, взаимодействующего с приложением, а не к идентификатору магазина, в котором установлено приложение. Это означает, что ваше приложение не будет ограничено из-за увеличения покупательского трафика в магазине продавца.
Настройки по умолчанию следующие:
- Размер корзины :
60 секунд/приложение/IP-адрес
- Скорость утечки :
1/сек
Shopify Плюс
Размер корзины для магазинов Shopify Plus удвоен до 120 секунд.
Каждый запрос к Storefront API требует минимум 0,5 секунды для выполнения. После завершения запроса общее затраченное время вычисляется и вычитается из корзины.
Пример ограничения ковша
Предположим, что клиент делает несколько параллельных запросов API, когда пользователь загружает ваше приложение:
- 20 простых запросов, каждый из которых занимает 0,5 секунды или меньше
- 15 более сложных запросов, каждый из которых занимает 1 секунду
- 10 очень сложных запросов, каждый из которых занимает 2 секунды
Общая стоимость составит: (20 ⨉ 0.5) + (15 ⨉ 1,0) + (10 ⨉ 2,0) = 45 секунд.
В этом сценарии у вас по-прежнему будут доступны запросы на 15 секунд.
Дроссель контрольно-пропускного пункта
Shopify ограничивает количество проверок, которые можно создать в Storefront API в минуту. Если клиент API превышает это ограничение, возвращается ответ об ошибке 200 Throttled
. Shopify рекомендует проектировать ваше приложение таким образом, чтобы оно было устойчивым к этому сценарию. Например, вы можете реализовать очередь запросов с экспоненциальным алгоритмом отсрочки.
Ограничение максимального размера входного массива
Входные аргументы, которые принимают массив, имеют максимальный размер 250. Запросы и изменения возвращают ошибку, если входной массив превышает 250 элементов.
Пределы скорости на основе ресурсов
Следующие ресурсы Admin API в версиях GraphQL и REST имеют дополнительное регулирование, которое вступает в силу, когда в магазине имеется 50 000 вариантов продукта. После достижения этого порога в день можно создавать не более 1000 новых вариантов.
В некоторых случаях Shopify необходимо принудительно ограничить скорость, чтобы предотвратить злоупотребление платформой. Поэтому ваше приложение должно быть готово к обработке ограничения скорости на всех конечных точках, а не только на перечисленных здесь.
Shopify Плюс
Эти дополнительные ограничения не распространяются на магазины в плане Shopify Plus.
Мутации GraphQL
Конечные точки REST
Если приложение достигает ограничений скорости API для определенного ресурса, оно получает ответ 429 Too Many Requests
и сообщение о том, что было применено регулирование.
Предотвращение ошибок ограничения скорости
Разработка приложения с учетом передового опыта — лучший способ избежать ошибок регулирования. Например, вы можете размещать запросы API в очереди и выполнять другие задачи обработки, ожидая запуска следующего задания в очереди.