浏览代码

HUE-296 [core] Add memory usage debug view

Add variable in settings to make it globally available.
Abraham Elmahrek 11 年之前
父节点
当前提交
f541560
共有 3 个文件被更改,包括 20 次插入0 次删除
  1. 5 0
      desktop/core/src/desktop/settings.py
  2. 1 0
      desktop/core/src/desktop/urls.py
  3. 14 0
      desktop/core/src/desktop/views.py

+ 5 - 0
desktop/core/src/desktop/settings.py

@@ -24,6 +24,7 @@ import logging
 import os
 import sys
 import pkg_resources
+from guppy import hpy
 
 import desktop.conf
 import desktop.log
@@ -357,3 +358,7 @@ SKIP_SOUTH_TESTS = True
 # Set up environment variable so Kerberos libraries look at our private
 # ticket cache
 os.environ['KRB5CCNAME'] = desktop.conf.KERBEROS.CCACHE_PATH.get()
+
+# Memory
+MEMORY_PROFILER = hpy()
+MEMORY_PROFILER.setrelheap()

+ 1 - 0
desktop/core/src/desktop/urls.py

@@ -62,6 +62,7 @@ dynamic_patterns += patterns('desktop.views',
   (r'^desktop/prefs/(?P<key>\w+)?$', 'prefs'),
   (r'^desktop/status_bar/?$', 'status_bar'),
   (r'^desktop/debug/threads$', 'threads'),
+  (r'^desktop/debug/memory$', 'memory'),
   (r'^desktop/debug/who_am_i$', 'who_am_i'),
   (r'^desktop/debug/check_config$', 'check_config'),
   (r'^desktop/debug/check_config_ajax$', 'check_config_ajax'),

+ 14 - 0
desktop/core/src/desktop/views.py

@@ -235,6 +235,20 @@ def threads(request):
     out.append("")
   return HttpResponse("\n".join(out), content_type="text/plain")
 
+@access_log_level(logging.WARN)
+def memory(request):
+  """Dumps out server threads.  Useful for debugging."""
+  if not request.user.is_superuser:
+    return HttpResponse(_("You must be a superuser."))
+
+  heap = settings.MEMORY_PROFILER.heap()
+  heap = heap[int(request.GET.get('from', 0)):int(request.GET.get('to', len(heap)))]
+  if 'index' in request.GET:
+    heap = heap[int(request.GET['index'])]
+  if 'type' in request.GET:
+    heap = getattr(heap, request.GET['type'])
+  return HttpResponse(str(heap), content_type="text/plain")
+
 def jasmine(request):
   return render('jasmine.mako', request, None)