nixos/redis: add option maxclients

This commit is contained in:
Izorkin 2021-04-12 12:36:28 +03:00
parent 061c913c36
commit e075aeb8c0
No known key found for this signature in database
GPG Key ID: 1436C1B3F3679F09

View File

@ -5,6 +5,8 @@ with lib;
let let
cfg = config.services.redis; cfg = config.services.redis;
ulimitNofile = cfg.maxclients + 32;
mkValueString = value: mkValueString = value:
if value == true then "yes" if value == true then "yes"
else if value == false then "no" else if value == false then "no"
@ -14,8 +16,8 @@ let
listsAsDuplicateKeys = true; listsAsDuplicateKeys = true;
mkKeyValue = generators.mkKeyValueDefault { inherit mkValueString; } " "; mkKeyValue = generators.mkKeyValueDefault { inherit mkValueString; } " ";
} cfg.settings); } cfg.settings);
in
{ in {
imports = [ imports = [
(mkRemovedOptionModule [ "services" "redis" "user" ] "The redis module now is hardcoded to the redis user.") (mkRemovedOptionModule [ "services" "redis" "user" ] "The redis module now is hardcoded to the redis user.")
(mkRemovedOptionModule [ "services" "redis" "dbpath" ] "The redis module now uses /var/lib/redis as data directory.") (mkRemovedOptionModule [ "services" "redis" "dbpath" ] "The redis module now uses /var/lib/redis as data directory.")
@ -121,6 +123,12 @@ in
description = "Set the number of databases."; description = "Set the number of databases.";
}; };
maxclients = mkOption {
type = types.int;
default = 10000;
description = "Set the max number of connected clients at the same time.";
};
save = mkOption { save = mkOption {
type = with types; listOf (listOf int); type = with types; listOf (listOf int);
default = [ [900 1] [300 10] [60 10000] ]; default = [ [900 1] [300 10] [60 10000] ];
@ -253,6 +261,7 @@ in
logfile = cfg.logfile; logfile = cfg.logfile;
syslog-enabled = cfg.syslog; syslog-enabled = cfg.syslog;
databases = cfg.databases; databases = cfg.databases;
maxclients = cfg.maxclients;
save = map (d: "${toString (builtins.elemAt d 0)} ${toString (builtins.elemAt d 1)}") cfg.save; save = map (d: "${toString (builtins.elemAt d 0)} ${toString (builtins.elemAt d 1)}") cfg.save;
dbfilename = "dump.rdb"; dbfilename = "dump.rdb";
dir = "/var/lib/redis"; dir = "/var/lib/redis";
@ -299,6 +308,8 @@ in
CapabilityBoundingSet = ""; CapabilityBoundingSet = "";
# Security # Security
NoNewPrivileges = true; NoNewPrivileges = true;
# Process Properties
LimitNOFILE = "${toString ulimitNofile}";
# Sandboxing # Sandboxing
ProtectSystem = "strict"; ProtectSystem = "strict";
ProtectHome = true; ProtectHome = true;