aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchertus <azuikov@ydb.tech>2023-07-21 18:57:59 +0300
committerchertus <azuikov@ydb.tech>2023-07-21 18:57:59 +0300
commit29ae8fa544303466960689369d7ca9672b2530ea (patch)
tree82aa8b93d7d326f7d9a75453d9fdcad4780e4001
parent7ec327a014cc13cd295f4691a17ae02bab78e70d (diff)
downloadydb-29ae8fa544303466960689369d7ca9672b2530ea.tar.gz
KIKIMR-18779 limit S3 reading threads
-rw-r--r--ydb/core/protos/counters_columnshard.proto1
-rw-r--r--ydb/core/tx/columnshard/columnshard_impl.cpp1
-rw-r--r--ydb/core/tx/tiering/s3_actor.cpp8
3 files changed, 10 insertions, 0 deletions
diff --git a/ydb/core/protos/counters_columnshard.proto b/ydb/core/protos/counters_columnshard.proto
index 2b10625f1d0..804ac167441 100644
--- a/ydb/core/protos/counters_columnshard.proto
+++ b/ydb/core/protos/counters_columnshard.proto
@@ -133,6 +133,7 @@ enum ECumulativeCounters {
COUNTER_FORGETTING_BYTES = 78 [(CounterOpts) = {Name: "ForgettingBytes"}];
COUNTER_READING_EXPORTED_BLOBS = 79 [(CounterOpts) = {Name: "ReadingExportedBlobs"}];
COUNTER_READING_EXPORTED_BYTES = 80 [(CounterOpts) = {Name: "ReadingExportedBytes"}];
+ COUNTER_READING_EXPORTED_RANGES = 81 [(CounterOpts) = {Name: "ReadingExportedRanges"}];
}
enum EPercentileCounters {
diff --git a/ydb/core/tx/columnshard/columnshard_impl.cpp b/ydb/core/tx/columnshard/columnshard_impl.cpp
index 923d07d453c..73781c3adc6 100644
--- a/ydb/core/tx/columnshard/columnshard_impl.cpp
+++ b/ydb/core/tx/columnshard/columnshard_impl.cpp
@@ -1046,6 +1046,7 @@ bool TColumnShard::GetExportedBlob(const TActorContext& ctx, TActorId dst, ui64
sumBytes += blobRange.Size;
}
IncCounter(COUNTER_READING_EXPORTED_BLOBS);
+ IncCounter(COUNTER_READING_EXPORTED_RANGES, get->BlobRanges.size());
IncCounter(COUNTER_READING_EXPORTED_BYTES, sumBytes);
ctx.Send(s3, get.release());
diff --git a/ydb/core/tx/tiering/s3_actor.cpp b/ydb/core/tx/tiering/s3_actor.cpp
index 0c5c930757d..d04e9866bb3 100644
--- a/ydb/core/tx/tiering/s3_actor.cpp
+++ b/ydb/core/tx/tiering/s3_actor.cpp
@@ -7,6 +7,9 @@
#include <ydb/core/protos/flat_scheme_op.pb.h>
#include <ydb/core/wrappers/s3_wrapper.h>
+#include <ydb/core/wrappers/s3_storage_config.h>
+
+#include <contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/include/aws/core/utils/threading/Executor.h>
namespace NKikimr::NColumnShard {
@@ -117,6 +120,11 @@ public:
}
ExternalStorageConfig = NWrappers::IExternalStorageConfig::Construct(msg.Settings);
+ if (auto* s3Config = dynamic_cast<NWrappers::NExternalStorage::TS3ExternalStorageConfig*>(ExternalStorageConfig.get())) {
+ static constexpr ui32 MAX_THREADS = 10;
+ Aws::Client::ClientConfiguration& awsConfig = s3Config->ConfigRef();
+ awsConfig.executor = Aws::MakeShared<Aws::Utils::Threading::PooledThreadExecutor>("cs-s3", MAX_THREADS);
+ }
if (ExternalStorageActorId) {
Send(ExternalStorageActorId, new TEvents::TEvPoisonPill);
ExternalStorageActorId = {};