diff --git a/doc/settings/redis.md b/doc/settings/redis.md
index d2b12ae4281477a5efa0cbcdfd16f2806c897fd1_ZG9jL3NldHRpbmdzL3JlZGlzLm1k..292a0dd8ca9d6f2cfeb7ef83744103b499b36293_ZG9jL3NldHRpbmdzL3JlZGlzLm1k 100644
--- a/doc/settings/redis.md
+++ b/doc/settings/redis.md
@@ -26,3 +26,16 @@
 redis['port'] = 6379
 redis['bind'] = '127.0.0.1'
 ```
+
+## Tuning the TCP stack for Redis
+
+The following settings are to enable a more performant Redis server instance. 'tcp_timeout' is
+a value set in seconds that the Redis server waits before terminating an IDLE TCP connection.
+The 'tcp_keepalive' is a tunable setting in seconds to TCP ACKs to clients in absence of 
+communication.
+
+```ruby
+redis['tcp_timeout'] = "60"
+redis['tcp_keepalive'] = "0"
+```
+
diff --git a/files/gitlab-config-template/gitlab.rb.template b/files/gitlab-config-template/gitlab.rb.template
index d2b12ae4281477a5efa0cbcdfd16f2806c897fd1_ZmlsZXMvZ2l0bGFiLWNvbmZpZy10ZW1wbGF0ZS9naXRsYWIucmIudGVtcGxhdGU=..292a0dd8ca9d6f2cfeb7ef83744103b499b36293_ZmlsZXMvZ2l0bGFiLWNvbmZpZy10ZW1wbGF0ZS9naXRsYWIucmIudGVtcGxhdGU= 100644
--- a/files/gitlab-config-template/gitlab.rb.template
+++ b/files/gitlab-config-template/gitlab.rb.template
@@ -489,6 +489,8 @@
 
 # redis['enable'] = true
 # redis['username'] = "gitlab-redis"
+# redis['tcp_timeout'] = "60"
+# redis['tcp_keepalive'] = "0"
 # redis['uid'] = nil
 # redis['gid'] = nil
 
diff --git a/files/gitlab-cookbooks/gitlab/attributes/default.rb b/files/gitlab-cookbooks/gitlab/attributes/default.rb
index d2b12ae4281477a5efa0cbcdfd16f2806c897fd1_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIvYXR0cmlidXRlcy9kZWZhdWx0LnJi..292a0dd8ca9d6f2cfeb7ef83744103b499b36293_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIvYXR0cmlidXRlcy9kZWZhdWx0LnJi 100644
--- a/files/gitlab-cookbooks/gitlab/attributes/default.rb
+++ b/files/gitlab-cookbooks/gitlab/attributes/default.rb
@@ -383,6 +383,8 @@
 default['gitlab']['redis']['home'] = "/var/opt/gitlab/redis"
 default['gitlab']['redis']['bind'] = '127.0.0.1'
 default['gitlab']['redis']['port'] = 0
+default['gitlab']['redis']['tcp_timeout'] = 60
+default['gitlab']['redis']['tcp_keepalive'] = 0
 default['gitlab']['redis']['password'] = nil
 default['gitlab']['redis']['unixsocket'] = "/var/opt/gitlab/redis/redis.socket"
 default['gitlab']['redis']['unixsocketperm'] = "777"
diff --git a/files/gitlab-cookbooks/gitlab/templates/default/redis.conf.erb b/files/gitlab-cookbooks/gitlab/templates/default/redis.conf.erb
index d2b12ae4281477a5efa0cbcdfd16f2806c897fd1_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIvdGVtcGxhdGVzL2RlZmF1bHQvcmVkaXMuY29uZi5lcmI=..292a0dd8ca9d6f2cfeb7ef83744103b499b36293_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIvdGVtcGxhdGVzL2RlZmF1bHQvcmVkaXMuY29uZi5lcmI= 100644
--- a/files/gitlab-cookbooks/gitlab/templates/default/redis.conf.erb
+++ b/files/gitlab-cookbooks/gitlab/templates/default/redis.conf.erb
@@ -106,7 +106,7 @@
 unixsocketperm <%= @unixsocketperm %>
 
 # Close the connection after a client is idle for N seconds (0 to disable)
-timeout 0
+timeout <%= @tcp_timeout %>
 
 # TCP keepalive.
 #
@@ -122,7 +122,7 @@
 # On other kernels the period depends on the kernel configuration.
 #
 # A reasonable value for this option is 60 seconds.
-tcp-keepalive 0
+tcp-keepalive <%= @tcp_keepalive %>
 
 ################################# GENERAL #####################################