From d876678b5eb0db0df66a658faeb8fb71e236a634 Mon Sep 17 00:00:00 2001 From: antirez Date: Thu, 2 Feb 2012 10:17:16 +0100 Subject: [PATCH] Set a 3.5 GB maxmemory limit with noeviction policy if a 32 bit instance without user-provided memory limits is detected. --- src/redis.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/redis.c b/src/redis.c index 8dd35c4e..9f5aa4db 100644 --- a/src/redis.c +++ b/src/redis.c @@ -1095,6 +1095,16 @@ void initServer() { } } + /* 32 bit instances are limited to 4GB of address space, so if there is + * no explicit limit in the user provided configuration we set a limit + * at 3.5GB using maxmemory with 'noeviction' policy'. This saves + * useless crashes of the Redis instance. */ + if (server.arch_bits == 32 && server.maxmemory == 0) { + redisLog(REDIS_WARNING,"Warning: 32 bit instance detected but no memory limit set. Setting 3.5 GB maxmemory limit with 'noeviction' policy now."); + server.maxmemory = 3584LL*(1024*1024); /* 3584 MB = 3.5 GB */ + server.maxmemory_policy = REDIS_MAXMEMORY_NO_EVICTION; + } + if (server.cluster_enabled) clusterInit(); scriptingInit(); slowlogInit();