Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Що це таке і навіщо?

Обмеження частоти запитів в загальному випадку - один із найпростіших механізмів захисту від DDoS атак на веб ресурси. 

В нашому випадку - взаємодія майданчиків з новою системою пов'язана з постійними змінами в роботі як нової системи, так і програмного забезпечення майданчиків.

Для мінімізації можливих наслідків для нової системи від помилок окремих майданчиків або сторонніх сервісів, що можуть призвести до помилкового генерування великої кількості запитів - використовується механізм обмеження частоти запитів для IP-адреси майданчика (рейт ліміт / rate limit).

Яке обмеження по кількості запитів?

Наразі рейтліміти налаштовані на 100 запитів на протязі секунди з однієї IP адреси.

Увага!

Через інфраструктурні особливості нової системи ліміт запитів рахується по групах ресурсів ЦБД. Відповідно, якщо з однієї адреси майданчик взаємодіє з декількома середовищами нової системи - кількість запитів рахується одночасно для всіх ресурсів группи. Відповідно блокування адреси відбувається також для всіх ресурсів группи.

1 Група - продуктивні середовища:

procedure.prozorro.sale

auction.prozorro.sale

dgf-procedure.prozorro.sale

dgf-auction.prozorro.sale

2 Група - тестові середовища:

procedure-sandbox.prozorro.sale

auction-sandbox.prozorro.sale

procedure-staging.prozorro.sale

auction-staging.prozorro.sale

dgf-procedure-sandbox.prozorro.sale

dgf-auction-sandbox.prozorro.sale

Що відбувається якщо наша адреса заблокована?

На всі запити нова система відповідає HTTP кодом помилки 429 протягом 10 хвилин із моменту перевищення ліміту.

(rate limit) — це один з основних інструментів захисту вебресурсів від DDoS-атак.

У випадку взаємодії з новою системою, цей механізм також допомагає контролювати навантаження та запобігати збоїв у роботі через помилки або некоректну поведінку клієнтів системи.

Мета використання рейт-лімітів

У зв'язку з постійними змінами у роботі нової системи та програмного забезпечення майданчиків, можуть виникати ситуації, коли через помилкові дії або збій сторонніх сервісів генерується надмірна кількість запитів до системи.

Щоб запобігти перевантаженню нової системи та мінімізувати можливі наслідки таких помилок, вводиться обмеження на кількість запитів і активних з'єднань з боку однієї IP-адреси.

Поточні налаштування рейт-лімітів

  • Обмеження на кількість запитів: 100 запитів на секунду.
  • Обмеження на кількість активних з'єднань: 300 з'єднань з однієї IP-адреси.
  • Ліміти розраховуються окремо для кожного середовища (домену). Тобто, якщо з однієї IP-адреси здійснюється взаємодія з кількома середовищами системи, кількість запитів рахується окремо для кожного середовища.
  • Блокування IP-адреси також відбувається окремо для кожного середовища.

Що відбувається у разі блокування IP-адреси?

Якщо кількість запитів перевищує встановлені ліміти, система повертає відповідь з HTTP кодом 429 ("Too Many Requests").

Image AddedImage Removed

Як уникати блокування?

Є декілька основних причин чому майданчик може бути заблокованим:

  • Генерування великої кількості однакових запитів майданчиком через помилку на стороні майданчика або неочікувану відповідь від ЦБД.  

Логіка роботи ПЗ майданчика має унеможливлювати надмірну частоту повторів будь яких запитів на нову систему за будь-яких умов.

  • Синхронізація або ресинхронізація великої кількості об'єктів через ендпоінти пошуку, чи процедури а не механізми Mirror.

Mirror використовує постійне зєднання на базі протоколу WebSocket та відправляє зміни в real time режимі

  • Невикористовувані з'єднання, які залишаються відкритими.

Логіка роботи ПЗ майданчика має унеможливлювати зависліз'єднання які невикористовуються.

Зі свого боку, нова система примусово закриває з'єднання в яких протягом 350 секунд не передавалася інформація.

Дотримання цих рекомендацій допоможе уникнути блокування та забезпечити стабільну роботу з новою системою (без використання механізму mirror).Швидкість синхронізації об'єктів має бути обмеженою на стороні майданчика.