Перейти к содержанию

Ошибки и повторные запросы

Страница перечисляет ответы, которые приложение получает, когда хранилище не может выполнить запрос или ограничивает его, и говорит, какие из них имеет смысл повторять. Она нужна разработчику, который настраивает повторы и сроки ожидания в клиенте S3.

Какие ответы повторять

Ответ Когда приходит Что делать
503 ServiceUnavailable хранилище временно не может обслужить запрос (см. Ответы при отказе хранилища) повторить запрос
503 SlowDown истекло предельное время запроса либо инстанс перегружен обращениями к метаданным (см. Предельное время запроса) повторить запрос с задержкой
503 SlowDown с заголовком Retry-After превышено ограничение частоты запросов пользователя или бакета повторить после времени из заголовка
403 QuotaExceeded превышена квота на хранимый объём или число объектов не повторять: освободить место или увеличить квоту
404 NoSuchKey для объекта, который был записан данные объекта утрачены (см. Ответы при отказе хранилища) повтор не поможет
500 InternalError внутренняя ошибка сообщить администратору идентификатор запроса из ответа

Квоты и ограничение частоты запросов задаёт администратор (см. Квоты и ограничение скорости).

Предельное время запроса

Сервер ограничивает время выполнения каждого запроса. Срок отсчитывается от поступления запроса.

Запросы Срок по умолчанию Что не входит в срок
чтение объекта и его атрибутов, списки 30 секунд передача тела ответа клиенту
запись, копирование, составная загрузка, удаление объектов 30 секунд время, пока сервер ждёт от клиента тело объекта
создание и удаление бакета, изменение его настроек 360 секунд —

Запрос, срок которого истёк, получает ответ 503 SlowDown, а если срок истёк во время согласования изменения в кластере — 503 ServiceUnavailable. Сроки настраивает администратор параметрами read_timeout_s, write_timeout_s и catalog_timeout_s (см. Предельное время запроса).

Срок ожидания в клиенте и в обратном прокси перед хранилищем стоит задавать не меньше серверного: прокси, оборвавший ожидание раньше, вернёт клиенту ответ 504, а запрос продолжит выполняться и может завершиться успешно (см. Шаг 9 установки).

Ответы при отказе хранилища

Запрос, который хранилище не может обслужить, получает один из трёх ответов:

Ситуация Ответ Повтор
хранилище временно не может обслужить запрос: недоступно или не принимает запись слишком много участников группы, для чтения доступно меньше k фрагментов, у инстанса нет подходящей группы или места, кластер ещё не сформирован 503 ServiceUnavailable клиент повторяет запрос
полоса объекта признана утраченной и внесена в реестр повреждённых полос s3r_t<N>_damage 404 NoSuchKey: объект читается как отсутствующий повтор не поможет
внутренняя ошибка 500 InternalError

В сообщении указана ситуация, но не место отказа: адреса инстансов, номера фрагментов, блоков и групп в ответ не попадают. Сообщение устроено так:

  • в конце в квадратных скобках стоят имя и номер кода ошибки S3R;
  • за ними следует идентификатор запроса;
  • подробности записываются в журнал инстанса вместе с этим идентификатором.

Например, запись при двух недоступных участниках группы 2+2 получает ответ 503 с сообщением:

no placement group has enough reachable members to take the write [NoQuorum/20029] request 3F2A9C0D5B7E1186

У ошибки Picodata или Tarantool нет кода S3R: сообщение содержит её номер и тип и заканчивается идентификатором запроса, а её текст в ответ не попадает.