Re: RGW Bucket unable to list buckets 100TB bucket

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Matt,

Thanks for your help,

We have done the changes plus a reboot of MONs and RGW they look like strange stucked , now we're able to list  250 directories.

time s3cmd ls s3://datos101 --no-ssl --limit 150
real    2m50.854s
user    0m0.147s
sys     0m0.042s


Is there any recommendation of max_shard ?

Our main goal is cold storage, normally our usage are backups or customers tons of files. This cause that customers in single bucket store millions objetcs.

Its strange because this issue started on Friday without any warning error at OSD / RGW logs.

When you should warning customer that will not be able to list their directory if they reach X Millions objetcs?

Our current ceph.conf

#Normal-Memory 1/5
debug rgw = 2
#Disable
debug osd = 0
debug journal = 0
debug ms = 0

fsid = e1ee8086-7cce-43fd-a252-3d677af22428
mon_initial_members = CEPH001, CEPH002, CEPH003
mon_host = 172.16.2.10,172.16.2.11,172.16.2.12
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd pool default pg num = 128
osd pool default pgp num = 128

public network = 172.16.2.0/24
cluster network = 172.16.1.0/24

osd pool default size = 2
osd pool default min size = 1

rgw_dynamic_resharding = true
#Increment to 128
rgw_override_bucket_index_max_shards = 128

#Default: 1000
rgw list buckets max chunk = 5000



[osd]
osd mkfs type = xfs
osd op threads = 12
osd disk threads = 12

osd recovery threads = 4
osd recovery op priority = 1
osd recovery max active = 2
osd recovery max single start = 1

osd max backfills = 4
osd backfill scan max = 16
osd backfill scan min = 4
osd client op priority = 63


osd_memory_target = 2147483648

osd_scrub_begin_hour = 23
osd_scrub_end_hour = 6
osd_scrub_load_threshold = 0.25 #low load scrubbing
osd_scrub_during_recovery = false #scrub during recovery

[mon]
    mon allow pool delete = true
    mon osd min down reporters = 3

[mon.a]
    host = CEPH001
    public bind addr = 172.16.2.10
    mon addr = 172.16.2.10:6789
    mon allow pool delete = true

[mon.b]
    host = CEPH002
    public bind addr = 172.16.2.11
    mon addr = 172.16.2.11:6789
    mon allow pool delete = true

[mon.c]
    host = CEPH003
    public bind addr = 172.16.2.12
    mon addr = 172.16.2.12:6789
    mon allow pool delete = true

[client.rgw]
 rgw enable usage log = true


[client.rgw.ceph-rgw01]
 host = ceph-rgw01
 rgw enable usage log = true
 rgw dns name = 
 rgw frontends = "beast port=7480"
 rgw resolve cname = false
 rgw thread pool size = 512
 rgw num rados handles = 1
 rgw op thread timeout = 600


[client.rgw.ceph-rgw03]
 host = ceph-rgw03
 rgw enable usage log = true
 rgw dns name = 
 rgw frontends = "beast port=7480"
 rgw resolve cname = false
 rgw thread pool size = 512
 rgw num rados handles = 1
 rgw op thread timeout = 600


On Thursday customer tell us that listing were instant, and now their programs delay until timeout.

Best Regards

Manuel

-----Mensaje original-----
De: Matt Benjamin <mbenjami@xxxxxxxxxx> 
Enviado el: viernes, 3 de mayo de 2019 14:00
Para: EDH - Manuel Rios Fernandez <mriosfer@xxxxxxxxxxxxxxxx>
CC: ceph-users <ceph-users@xxxxxxxxxxxxxx>
Asunto: Re:  RGW Bucket unable to list buckets 100TB bucket

Hi Folks,

Thanks for sharing your ceph.conf along with the behavior.

There are some odd things there.

1. rgw_num_rados_handles is deprecated--it should be 1 (the default), but changing it may require you to check and retune the values for objecter_inflight_ops and objecter_inflight_op_bytes to be larger 2. you have very different rgw_thread_pool_size values on these to gateways;  a value between 512 and 1024 is usually best (future rgws will not rely on large thread pools) 3. the actual behavior with 128 shards might be assisted by listing in unordered mode--HOWEVER, there was a bug in this feature which caused a perf regression and masked the benefit--make sure you have applied the fix for https://tracker.ceph.com/issues/39393 before evaluating

regards,

Matt

On Fri, May 3, 2019 at 4:57 AM EDH - Manuel Rios Fernandez <mriosfer@xxxxxxxxxxxxxxxx> wrote:
>
> Hi,
>
>
>
> We got a ceph deployment 13.2.5 version, but several bucket with millions of files.
>
>
>
>   services:
>
>     mon: 3 daemons, quorum CEPH001,CEPH002,CEPH003
>
>     mgr: CEPH001(active)
>
>     osd: 106 osds: 106 up, 106 in
>
>     rgw: 2 daemons active
>
>
>
>   data:
>
>     pools:   17 pools, 7120 pgs
>
>     objects: 106.8 M objects, 271 TiB
>
>     usage:   516 TiB used, 102 TiB / 619 TiB avail
>
>     pgs:     7120 active+clean
>
>
>
> We done a test in a spare RGW server for this case.
>
>
>
>
>
> Customer report us that is unable to list their buckets, we tested in a monitor with the command:
>
>
>
> s3cmd ls s3://[bucket] --no-ssl --limit 20
>
>
>
> Takes 1m and 2 secs.
>
>
>
> RGW log in debug mode = 2
>
>
>
> 2019-05-03 10:40:25.449 7f65f63e1700  1 ====== starting new request 
> req=0x55eba26e8970 =====
>
> 2019-05-03 10:40:25.449 7f65f63e1700  2 req 113:0s::GET 
> /[bucketname]/::initializing for trans_id = 
> tx000000000000000000071-005ccbfe79-e6283e-default
>
> 2019-05-03 10:40:25.449 7f65f63e1700  2 req 113:0s:s3:GET 
> /[bucketname]/::getting op 0
>
> 2019-05-03 10:40:25.449 7f65f63e1700  2 req 113:0s:s3:GET 
> /[bucketname]/:list_bucket:verifying requester
>
> 2019-05-03 10:40:25.449 7f65f63e1700  2 req 113:0s:s3:GET 
> /[bucketname]/:list_bucket:normalizing buckets and tenants
>
> 2019-05-03 10:40:25.449 7f65f63e1700  2 req 113:0s:s3:GET 
> /[bucketname]/:list_bucket:init permissions
>
> 2019-05-03 10:40:25.449 7f65f63e1700  2 req 113:0s:s3:GET 
> /[bucketname]/:list_bucket:recalculating target
>
> 2019-05-03 10:40:25.449 7f65f63e1700  2 req 113:0s:s3:GET 
> /[bucketname]/:list_bucket:reading permissions
>
> 2019-05-03 10:40:25.449 7f65f63e1700  2 req 113:0s:s3:GET 
> /[bucketname]/:list_bucket:init op
>
> 2019-05-03 10:40:25.449 7f65f63e1700  2 req 113:0s:s3:GET 
> /[bucketname]/:list_bucket:verifying op mask
>
> 2019-05-03 10:40:25.449 7f65f63e1700  2 req 113:0s:s3:GET 
> /[bucketname]/:list_bucket:verifying op permissions
>
> 2019-05-03 10:40:25.449 7f65f63e1700  2 req 113:0s:s3:GET 
> /[bucketname]/:list_bucket:verifying op params
>
> 2019-05-03 10:40:25.449 7f65f63e1700  2 req 113:0s:s3:GET 
> /[bucketname]/:list_bucket:pre-executing
>
> 2019-05-03 10:40:25.449 7f65f63e1700  2 req 113:0s:s3:GET 
> /[bucketname]/:list_bucket:executing
>
> 2019-05-03 10:40:41.026 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:41:03.026 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:41:25.026 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:41:47.026 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:41:49.395 7f65f63e1700  2 req 113:83.9461s:s3:GET 
> /[bucketname]/:list_bucket:completing
>
> 2019-05-03 10:41:49.395 7f65f63e1700  2 req 113:83.9461s:s3:GET 
> /[bucketname]/:list_bucket:op status=0
>
> 2019-05-03 10:41:49.395 7f65f63e1700  2 req 113:83.9461s:s3:GET 
> /[bucketname]/:list_bucket:http status=200
>
> 2019-05-03 10:41:49.395 7f65f63e1700  1 ====== req done 
> req=0x55eba26e8970 op status=0 http_status=200 ======
>
>
>
>
>
> time s3cmd ls s3://[bucket] --no-ssl --limit 100
>
> real    4m26.318s
>
>
>
>
>
> 2019-05-03 10:42:36.439 7f65f33db700  1 ====== starting new request 
> req=0x55eba26e8970 =====
>
> 2019-05-03 10:42:36.439 7f65f33db700  2 req 115:0s::GET 
> /[bucketname]/::initializing for trans_id = 
> tx000000000000000000073-005ccbfefc-e6283e-default
>
> 2019-05-03 10:42:36.439 7f65f33db700  2 req 115:0s:s3:GET 
> /[bucketname]/::getting op 0
>
> 2019-05-03 10:42:36.439 7f65f33db700  2 req 115:0s:s3:GET 
> /[bucketname]/:list_bucket:verifying requester
>
> 2019-05-03 10:42:36.439 7f65f33db700  2 req 115:0s:s3:GET 
> /[bucketname]/:list_bucket:normalizing buckets and tenants
>
> 2019-05-03 10:42:36.439 7f65f33db700  2 req 115:0s:s3:GET 
> /[bucketname]/:list_bucket:init permissions
>
> 2019-05-03 10:42:36.439 7f65f33db700  2 req 115:0s:s3:GET 
> /[bucketname]/:list_bucket:recalculating target
>
> 2019-05-03 10:42:36.439 7f65f33db700  2 req 115:0s:s3:GET 
> /[bucketname]/:list_bucket:reading permissions
>
> 2019-05-03 10:42:36.439 7f65f33db700  2 req 115:0s:s3:GET 
> /[bucketname]/:list_bucket:init op
>
> 2019-05-03 10:42:36.439 7f65f33db700  2 req 115:0s:s3:GET 
> /[bucketname]/:list_bucket:verifying op mask
>
> 2019-05-03 10:42:36.439 7f65f33db700  2 req 115:0s:s3:GET 
> /[bucketname]/:list_bucket:verifying op permissions
>
> 2019-05-03 10:42:36.439 7f65f33db700  2 req 115:0s:s3:GET 
> /[bucketname]/:list_bucket:verifying op params
>
> 2019-05-03 10:42:36.439 7f65f33db700  2 req 115:0s:s3:GET 
> /[bucketname]/:list_bucket:pre-executing
>
> 2019-05-03 10:42:36.439 7f65f33db700  2 req 115:0s:s3:GET 
> /[bucketname]/:list_bucket:executing
>
> 2019-05-03 10:42:53.026 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:43:15.027 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:43:37.028 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:43:59.027 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:44:21.028 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:44:43.027 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:45:05.027 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:45:18.260 7f660cc0e700  2 object expiration: start
>
> 2019-05-03 10:45:18.779 7f660cc0e700  2 object expiration: stop
>
> 2019-05-03 10:45:27.027 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:45:49.027 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:46:11.027 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:46:33.027 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:46:55.028 7f660e411700  2 
> RGWDataChangesLog::ChangesRenewThread: start
>
> 2019-05-03 10:47:02.092 7f65f33db700  2 req 115:265.652s:s3:GET 
> /[bucketname]/:list_bucket:completing
>
> 2019-05-03 10:47:02.092 7f65f33db700  2 req 115:265.652s:s3:GET 
> /[bucketname]/:list_bucket:op status=0
>
> 2019-05-03 10:47:02.092 7f65f33db700  2 req 115:265.652s:s3:GET 
> /[bucketname]/:list_bucket:http status=200
>
> 2019-05-03 10:47:02.092 7f65f33db700  1 ====== req done 
> req=0x55eba26e8970 op status=0 http_status=200 ======
>
>
>
>
>
> radosgw-admin bucket limit check
>
>              }
>
>                 "bucket": "[BUCKETNAME]",
>
>                 "tenant": "",
>
>                 "num_objects": 7126133,
>
>                 "num_shards": 128,
>
>                 "objects_per_shard": 55672,
>
>                 "fill_status": "OK"
>
>             },
>
>
>
>
>
> We ‘realy don’t know who to solve that , looks like a timeout or slow performance for that bucket.
>
>
>
> Our RGW section in ceph.conf
>
>
>
> [client.rgw.ceph-rgw01]
>
> host = ceph-rgw01
>
> rgw enable usage log = true
>
> rgw dns name = XXXXXX
>
> rgw frontends = "beast port=7480"
>
> rgw resolve cname = false
>
> rgw thread pool size = 128
>
> rgw num rados handles = 1
>
> rgw op thread timeout = 120
>
>
>
>
>
> [client.rgw.ceph-rgw03]
>
> host = ceph-rgw03
>
> rgw enable usage log = true
>
> rgw dns name = XXXXXXXX
>
> rgw frontends = "beast port=7480"
>
> rgw resolve cname = false
>
> rgw thread pool size = 640
>
> rgw num rados handles = 16
>
> rgw op thread timeout = 120
>
>
>
>
>
> Best Regards,
>
>
>
> Manuel
>
>
>
> _______________________________________________
> ceph-users mailing list
> ceph-users@xxxxxxxxxxxxxx
> http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com



-- 

Matt Benjamin
Red Hat, Inc.
315 West Huron Street, Suite 140A
Ann Arbor, Michigan 48103

http://www.redhat.com/en/technologies/storage

tel.  734-821-5101
fax.  734-769-8938
cel.  734-216-5309

_______________________________________________
ceph-users mailing list
ceph-users@xxxxxxxxxxxxxx
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com




[Index of Archives]     [Information on CEPH]     [Linux Filesystem Development]     [Ceph Development]     [Ceph Large]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [xfs]


  Powered by Linux