diff --git a/.gitignore b/.gitignore index a356406..cfae693 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ Gemfile.lock FileList .scannerwork +.vscode \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 403056c..c808a20 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,8 @@ { "cSpell.words": [ "changeme", + "GOMAXPROCS", + "procs", "reqpackage", "rpms", "sslcacert", diff --git a/doc/puppet_classes/prometheus_cd_3A_3Aparams.html b/doc/puppet_classes/prometheus_cd_3A_3Aparams.html index 28973b8..9ca1221 100644 --- a/doc/puppet_classes/prometheus_cd_3A_3Aparams.html +++ b/doc/puppet_classes/prometheus_cd_3A_3Aparams.html @@ -376,6 +376,96 @@ —
WAL segment size
+hard memory ceiling
+soft limit to make kernel reclaim earlier
+allow swap, but limit it
+OOM killer choosing prometheus
+reduce parallel WAL replay workers
-21 -22 -23 -24 -25 26 27 28 @@ -440,10 +525,22 @@ 67 68 69 -70+70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82
# File 'manifests/params.pp', line 21
+ # File 'manifests/params.pp', line 26
class prometheus_cd::params (
@@ -472,6 +569,13 @@ class prometheus_cd::params (
String $ps_retention_size = '20GB',
String $ps_wal_seg_size = '50MB',
+ # service
+ String $ps_max_mem = '6G',
+ String $ps_high_mem = '5G',
+ String $ps_swap_mem = '4G',
+ String $ps_oom_score = '500',
+ String $ps_max_procs = '1',
+
) {
# defaults
$fqdn = $facts['networking']['fqdn']
diff --git a/manifests/params.pp b/manifests/params.pp
index bfcd81e..7d12ac8 100644
--- a/manifests/params.pp
+++ b/manifests/params.pp
@@ -17,6 +17,11 @@
# @param [String] ps_retention_time tsdb retention time
# @param [String] ps_retention_size tsdb retention size
# @param [String] ps_wal_seg_size WAL segment size
+# @param [String] ps_max_mem hard memory ceiling
+# @param [String] ps_high_mem soft limit to make kernel reclaim earlier
+# @param [String] ps_swap_mem allow swap, but limit it
+# @param [String] ps_oom_score OOM killer choosing prometheus
+# @param [String] ps_max_procs reduce parallel WAL replay workers
##############################################################################
class prometheus_cd::params (
@@ -45,6 +50,13 @@ class prometheus_cd::params (
String $ps_retention_size = '20GB',
String $ps_wal_seg_size = '50MB',
+ # service
+ String $ps_max_mem = '6G',
+ String $ps_high_mem = '5G',
+ String $ps_swap_mem = '4G',
+ String $ps_oom_score = '500',
+ String $ps_max_procs = '1',
+
) {
# defaults
$fqdn = $facts['networking']['fqdn']
diff --git a/templates/override.conf.erb b/templates/override.conf.erb
index 3d13498..99c2faf 100644
--- a/templates/override.conf.erb
+++ b/templates/override.conf.erb
@@ -2,6 +2,12 @@
##### File created by Puppet - manual changes will be overwritten #####
###############################################################################
[Service]
+MemoryMax=<%= @ps_max_mem %>
+MemoryHigh=<%= @ps_high_mem %>
+MemorySwapMax=<%= @ps_swap_mem %>
+OOMScoreAdjust=<%= @ps_oom_score %>
+Environment="GOMAXPROCS=<%= @ps_max_procs %>"
+
ExecStart=
ExecStart=/usr/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \