Filippo Giunchedi has submitted this change and it was merged.

Change subject: graphite: limit uwsgi workers memory
......................................................................


graphite: limit uwsgi workers memory

querying graphite-web for many metrics/datapoints can make it consume large
amounts of memory, in turn trashing the machine's caches. Limit memory in a
cgroup for all uwsgi workers to limit the impact.

Change-Id: Id0823c35c06b778f743d8354b836a27dff3655d7
---
M modules/graphite/manifests/web.pp
1 file changed, 7 insertions(+), 1 deletion(-)

Approvals:
  Filippo Giunchedi: Verified; Looks good to me, approved
  Giuseppe Lavagetto: Looks good to me, but someone else must approve



diff --git a/modules/graphite/manifests/web.pp 
b/modules/graphite/manifests/web.pp
index 4c61335..f112f65 100644
--- a/modules/graphite/manifests/web.pp
+++ b/modules/graphite/manifests/web.pp
@@ -8,6 +8,9 @@
 # [*uwsgi_processes*]
 #   Number of uWSGI workers to run (default: 8).
 #
+# [*max_memory*]
+#   Maximum memory allowed for uWSGI workers *combined* (default: 8G).
+#
 # [*memcached_size*]
 #   Size of memcached store, in megabytes (default: 200).
 #
@@ -38,6 +41,7 @@
     $secret_key,
     $storage_dir,
     $uwsgi_processes   = 8,
+    $max_memory        = to_bytes("8G"),
     $memcached_size    = 200,
     $admin_user        = 'admin',
     $documentation_url = 'http://graphite.readthedocs.org/',
@@ -45,7 +49,7 @@
 ) {
     include ::graphite
 
-    package { ['memcached', 'python-memcache', 'graphite-web']: }
+    package { ['memcached', 'python-memcache', 'graphite-web', 'cgroup-bin']: }
 
     file { '/etc/graphite/cors.py':
         source  => 'puppet:///modules/graphite/cors.py',
@@ -104,6 +108,8 @@
                 'die-on-term' => true,
                 'master'      => true,
                 'processes'   => $uwsgi_processes,
+                'cgroup'      => '/sys/fs/cgroup/memory/graphite-web',
+                'cgroup-opt'  => "memory.limit_in_bytes=$max_memory",
             },
         },
         require  => File['/var/log/graphite-web'],

-- 
To view, visit https://gerrit.wikimedia.org/r/183256
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Id0823c35c06b778f743d8354b836a27dff3655d7
Gerrit-PatchSet: 2
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Filippo Giunchedi <fgiunch...@wikimedia.org>
Gerrit-Reviewer: Faidon Liambotis <fai...@wikimedia.org>
Gerrit-Reviewer: Filippo Giunchedi <fgiunch...@wikimedia.org>
Gerrit-Reviewer: Giuseppe Lavagetto <glavage...@wikimedia.org>
Gerrit-Reviewer: Ori.livneh <o...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to