diff --git a/roles/etcd/defaults/main.yml b/roles/etcd/defaults/main.yml
index 61a7386b578a6cbf0bab95b13a270e812eae7e3e..e2b1b83c74b3b4dbf5774006dc3b0028686f731b 100644
--- a/roles/etcd/defaults/main.yml
+++ b/roles/etcd/defaults/main.yml
@@ -17,7 +17,8 @@ etcd_election_timeout: "5000"
 etcd_metrics: "basic"
 
 # Limits
-etcd_memory_limit: 512M
+# Limit memory only if <4GB memory on host. 0=unlimited
+etcd_memory_limit: "{% if ansible_memtotal_mb < 4096 %}512M{% else %}0{% endif %}"
 
 # Uncomment to set CPU share for etcd
 # etcd_cpu_limit: 300m
diff --git a/roles/etcd/templates/etcd.j2 b/roles/etcd/templates/etcd.j2
index 9ac08e0738a1cded413ae21d282357f66db9e2ba..d916a75709bc96f73ab474c4377a10f5af0eeea2 100644
--- a/roles/etcd/templates/etcd.j2
+++ b/roles/etcd/templates/etcd.j2
@@ -9,6 +9,7 @@
   {% if etcd_memory_limit is defined %}
   --memory={{ etcd_memory_limit|regex_replace('Mi', 'M') }} \
   {% endif %}
+  --oom-kill-disable \
   {% if etcd_cpu_limit is defined %}
   --cpu-shares={{ etcd_cpu_limit|regex_replace('m', '') }} \
   {% endif %}