summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/sync_tail.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl/sync_tail.cpp')
-rw-r--r--src/mongo/db/repl/sync_tail.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/mongo/db/repl/sync_tail.cpp b/src/mongo/db/repl/sync_tail.cpp
index 9f921bfb714..c4e9d0ff722 100644
--- a/src/mongo/db/repl/sync_tail.cpp
+++ b/src/mongo/db/repl/sync_tail.cpp
@@ -83,6 +83,7 @@
#include "mongo/util/log.h"
#include "mongo/util/mongoutils/str.h"
#include "mongo/util/net/socket_exception.h"
+#include "mongo/util/processinfo.h"
#include "mongo/util/scopeguard.h"
namespace mongo {
@@ -380,7 +381,13 @@ std::unique_ptr<ThreadPool> SyncTail::makeWriterPool() {
severe() << "replWriterMinThreadCount must be less than or equal to replWriterThreadCount.";
fassertFailedNoTrace(5605400);
}
- return makeWriterPool(replWriterThreadCount);
+
+ // Reduce content pinned in cache by single oplog batch on small machines by reducing the number
+ // of threads of ReplWriter to reduce the number of concurrent open WT transactions.
+ auto numberOfThreads =
+ std::min(replWriterThreadCount, 2 * static_cast<int>(ProcessInfo::getNumAvailableCores()));
+
+ return makeWriterPool(numberOfThreads);
}
std::unique_ptr<ThreadPool> SyncTail::makeWriterPool(int threadCount) {