Commit a69c4efd by Calen Pennington

Add the ability to send SIGPROF to an edx-platform process to obtain a memory dump

parent 03594aa3
...@@ -6,8 +6,10 @@ defuse_xml_libs() ...@@ -6,8 +6,10 @@ defuse_xml_libs()
import contracts import contracts
contracts.disable_all() contracts.disable_all()
import os import openedx.core.operations
openedx.core.operations.install_memory_dumper()
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cms.envs.aws") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cms.envs.aws")
import cms.startup as startup import cms.startup as startup
......
...@@ -6,8 +6,10 @@ defuse_xml_libs() ...@@ -6,8 +6,10 @@ defuse_xml_libs()
import contracts import contracts
contracts.disable_all() contracts.disable_all()
import os import openedx.core.operations
openedx.core.operations.install_memory_dumper()
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.envs.aws") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.envs.aws")
import lms.startup as startup import lms.startup as startup
......
import os
import signal
import tempfile
from datetime import datetime
from meliae import scanner
def dump_memory(signum, frame):
"""Dump memory stats for the current process to a temp directory. Uses the meliae output format."""
scanner.dump_all_objects('{}/meliae.{}.{}.dump'.format(tempfile.gettempdir(), datetime.now().isoformat(), os.getpid()))
def install_memory_dumper(dump_signal=signal.SIGPROF):
"""
Install a signal handler on `signal` to dump memory stats for the current process.
"""
signal.signal(dump_signal, dump_memory)
...@@ -50,6 +50,9 @@ lazy==1.1 ...@@ -50,6 +50,9 @@ lazy==1.1
lxml==3.3.6 lxml==3.3.6
mako==0.9.1 mako==0.9.1
Markdown==2.2.1 Markdown==2.2.1
--allow-external meliae
--allow-unverified meliae
meliae==0.4.0
mongoengine==0.7.10 mongoengine==0.7.10
networkx==1.7 networkx==1.7
nltk==2.0.4 nltk==2.0.4
......
...@@ -10,3 +10,6 @@ numpy==1.6.2 ...@@ -10,3 +10,6 @@ numpy==1.6.2
# Needed to make sure that options in base.txt are allowed # Needed to make sure that options in base.txt are allowed
pip==6.0.7 pip==6.0.7
# Needed for meliae
Cython==0.21.2
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment