diff --git a/README.md b/README.md index c48f313..a1f6e02 100644 --- a/README.md +++ b/README.md @@ -420,6 +420,14 @@ Default: empty Configure logrotate rules for redis server. Default: true +##### `redis_maxopenfiles` + +Systemd LimitNOFILE change to allow redis change maxclients. Default: 12288 + +##### `redis_somaxconn` + +Sysctl change to allow redis change TCP backlog. Default: 1024 + ##### High Availability Options ##### `slaveof` diff --git a/manifests/server.pp b/manifests/server.pp index b82c3a9..b3aee41 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -171,6 +171,8 @@ $cluster_require_full_coverage = true, $protected_mode = undef, $include = [], + $redis_maxopenfiles = 12288, + $redis_somaxconn = 1024, ) { include redis::install @@ -288,13 +290,20 @@ } } + exec { 'sysctl_redis': + command => "sysctl -w net.core.somaxconn=${redis_somaxconn}", + path => '/usr/bin:/usr/sbin:/bin', + provider => shell, + onlyif => "test `sysctl -n net.core.somaxconn` -lt ${redis_somaxconn}", + } + # manage redis service service { "redis-server_${redis_name}": ensure => $running, enable => $enabled, hasstatus => true, hasrestart => true, - require => File[$service_file], - subscribe => File[$conf_file], + require => [File[$service_file],Exec['sysctl_redis']], + subscribe => [File[$conf_file],Exec['sysctl_redis']], } } diff --git a/templates/systemd/redis.service.erb b/templates/systemd/redis.service.erb index 006a06c..c09d0c3 100644 --- a/templates/systemd/redis.service.erb +++ b/templates/systemd/redis.service.erb @@ -16,6 +16,7 @@ ExecStart=/usr/bin/redis-server <%= @redis_run_dir %>/<%= @conf_file_name %> --d ExecStop=/usr/bin/redis-cli -p <%= @redis_port %> shutdown User=<%= @redis_user or 'root' %> Group=<%= @redis_group or 'root' %> +LimitNOFILE=<%= @redis_maxopenfiles %> [Install] WantedBy=multi-user.target