[ARVADOS] created: 1.3.0-2191-g28d450006
Git user
git at public.arvados.org
Thu Apr 9 21:54:59 UTC 2020
at 28d450006ec8610000739de7bc362e2a6bf5f001 (commit)
commit 28d450006ec8610000739de7bc362e2a6bf5f001
Author: Ward Vandewege <ward at jhvc.com>
Date: Thu Apr 9 17:53:31 2020 -0400
documentation: update descriptions for MaxKeepBlobBuffers and MaxConcurrentRequests
keepstore: MaxConcurrentRequests set to zero should mean no limit
keepstore: warn if MaxConcurrentRequests is set to a nonzero value less
than MaxConcurrentRequests.
refs #16326
Arvados-DCO-1.1-Signed-off-by: Ward Vandewege <ward at jhvc.com>
diff --git a/lib/config/config.default.yml b/lib/config/config.default.yml
index 3750adcab..a0def71f7 100644
--- a/lib/config/config.default.yml
+++ b/lib/config/config.default.yml
@@ -184,12 +184,21 @@ Clusters:
MaxItemsPerResponse: 1000
# Maximum number of concurrent requests to accept in a single
- # service process, or 0 for no limit. Currently supported only
- # by keepstore.
+ # service process, or 0 for no limit.
MaxConcurrentRequests: 0
- # Maximum number of 64MiB memory buffers per keepstore server
- # process, or 0 for no limit.
+ # Maximum number of 64MiB memory buffers per Keepstore server process, or
+ # 0 for no limit. When this limit is reached, up to
+ # (MaxConcurrentRequests - MaxKeepBlobBuffers) HTTP requests requiring
+ # buffers (like GET and PUT) will wait for buffer space to be released.
+ # Any HTTP requests beyond MaxConcurrentRequests will receive an
+ # immediate 503 response.
+ #
+ # MaxKeepBlobBuffers should be set such that (MaxKeepBlobBuffers * 64MiB
+ # * 1.1) fits comfortably in memory. On a host dedicated to running
+ # Keepstore, divide total memory by 88MiB to suggest a suitable value.
+ # For example, if grep MemTotal /proc/meminfo reports MemTotal: 7125440
+ # kB, compute 7125440 / (88 * 1024)=79 and configure MaxBuffers: 79
MaxKeepBlobBuffers: 128
# API methods to disable. Disabled methods are not listed in the
diff --git a/services/keepstore/command.go b/services/keepstore/command.go
index e0509393c..f71bbf08f 100644
--- a/services/keepstore/command.go
+++ b/services/keepstore/command.go
@@ -153,9 +153,8 @@ func (h *handler) setup(ctx context.Context, cluster *arvados.Cluster, token str
}
bufs = newBufferPool(h.Logger, h.Cluster.API.MaxKeepBlobBuffers, BlockSize)
- if h.Cluster.API.MaxConcurrentRequests < 1 {
- h.Cluster.API.MaxConcurrentRequests = h.Cluster.API.MaxKeepBlobBuffers * 2
- h.Logger.Warnf("API.MaxConcurrentRequests <1 or not specified; defaulting to MaxKeepBlobBuffers * 2 == %d", h.Cluster.API.MaxConcurrentRequests)
+ if h.Cluster.API.MaxConcurrentRequests > 0 && h.Cluster.API.MaxConcurrentRequests < h.Cluster.API.MaxKeepBlobBuffers {
+ h.Logger.Warnf("API.MaxConcurrentRequests is non-zero and smaller than API.MaxKeepBlobBuffer; this configuration is not optimal")
}
if h.Cluster.Collections.BlobSigningKey != "" {
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list