У меня есть установка ceph-rgw с большой корзиной (~60 млн объектов) и 16 osd, индекс корзины разбит на 997 осколков. В этой среде листинг одного каталога занимает более 30 секунд:
$ time rclone lsd t:bucket/non/existent/path/ --contimeout=1h --timeout=1h
реальное 0m34.816s
Это очень раздражает, и клиенты (например, сам rclone) могут выполнять операцию list-dir перед PUT, чтобы что-то проверить/подтвердить. (Запретить клиентам отправлять list_objects/list_bucket — не лучший вариант)
Журнал демон rgw
это нормально.Часть журнала:
08:57:45.267+0000 7f0492db2700 1 ====== запуск нового запроса req=0x7f05039a9620 =====
08:57:45.267+0000 7f0492db2700 20 req 412648 0.000000000s final domain/bucket subdomain= domain= in_hosted_domain=0 in_hosted_domain_s3website=0 s->info.domain= s->info.request_uri=/bucket
08:57:45.267+0000 7f0492db2700 10 req 412648 0.000000000s канонический запрос = GET
08:57:45.267+0000 7f0492db2700 2 req 412648 0.000000000s s3:list_bucket проверка операционных параметров
08:57:45.267+0000 7f0492db2700 2 req 412648 0.000000000s s3:list_bucket предварительно выполняется
08:57:45.267+0000 7f0492db2700 2 req 412648 0.000000000s s3:list_bucket выполняется
08:57:45.267+0000 7f0492db2700 20 req 412648 0.000000000s s3:list_bucket RGWRados::Bucket::List::list_objects_ordered попытка запуска 1
08:57:45.267+0000 7f0492db2700 10 req 412648 0.000000000s s3:list_bucket RGWRados::cls_bucket_list_ordered: :bucket[e6fb9c7c-74a2-4819-a0ed-e740d4eb590c.4751]after[non/start/a0ed-e740d4eb590c.0151]5", start="9_.0151] существующий/путь/" num_entries=1001, list_versions=0, extension_factor=1
08:57:45.271+0000 7f0492db2700 10 req 412648 0.004000000s s3:list_bucket RGWRados::cls_bucket_list_ordered запрос из каждого из 997 осколков для 8 записей, чтобы получить 1001 всего записей
08:58:07.495+0000 7f04efe6c700 10 librados: Возражающий вернулся с вызова r=0
08:58:08.779+0000 7f04cd627700 4 поток rgw rados: нет пиров, выход
08:58:18.803+0000 7f0492db2700 2 req 412648 33.535980225s s3:list_bucket завершение
08:58:18.803+0000 7f047bd84700 2 req 412648 33.535980225s s3:list_bucket op status=0
08:58:18.803+0000 7f047bd84700 2 req 412648 33.535980225s s3:list_bucket http status=200
08:58:18.803+0000 7f047bd84700 1 ====== требование выполнено требование = 0x7f05039a9620 состояние операции = 0 http_status = 200 задержка = 33,535980225 с ======
08:58:18.803+0000 7f047bd84700 1 зверь: 0x7f05039a9620: 192.168.1.1 - rgwuser [10/ноября/2021:08:57:45.267 +0000] "GET /bucket?delimiter=%!F(MISSING)&max-keys= 1000&prefix=non%!F(ОТСУТСТВУЕТ)существующий%!F(ОТСУТСТВУЕТ)путь%!F(ОТСУТСТВУЕТ) HTTP/1.1" 200 413 - "rclone/v1.57.0" - задержка = 33,535980225 с
Подробная информация об окружающей среде: Версия Ceph: 16.2.5 Установлена с помощью rook, каждое OSD составляет около ~ 4T с устройством метаданных SSD 256G.