Анализ производительности экземпляра mod_python Trac - PullRequest
1 голос
/ 01 апреля 2011

Я хотел бы включить побочную регистрацию в нашей реальной установке Trac / mod_python, которая стала довольно медленной (много плагинов, не так много билетов / страниц).

Могу ли я прокси объект запроса или добавить трассировку питона (с временными метками для каждого вызова) каким-либо образом? Есть ли механизм для таких упаковщиков?

Основная точка входа в Trac / mod_python:

def handler(req):
    pkg_resources.require('Trac==%s' % VERSION)
    gateway = ModPythonGateway(req, req.get_options())
    from trac.web.main import dispatch_request
    gateway.run(dispatch_request)
    return apache.OK

и там, я думаю, мне следует установить оболочку, которая может отслеживать вызовы Python через все плагины для анализа времени. Возможно ли это?

Ответы [ 2 ]

3 голосов
/ 01 апреля 2011

Используя модуль cProfile, должно сработать что-то вроде этого:

def handler(req):
    pkg_resources.require('Trac==%s' % VERSION)
    gateway = ModPythonGateway(req, req.get_options())

    from trac.web.main import dispatch_request
    import cProfile
    from datetime import datetime

    def profile_request(*args, **kwargs):
        p = cProfile.Profile()
        p.runcall(dispatch_request, *args, **kwargs)
        # log to a file
        timestamp = datetime.now().strftime('%Y-%m-%d_%H%M%S.%f')
        p.dump_stats('/var/log/trac_profile/%s' % timestamp)

    gateway.run(profile_request)
    return apache.OK

Затем необходимо профилировать каждый запрос и сохранить данные профилирования (показывающие, что занимает время)указанное местоположение, один файл с меткой времени на запрос.Разумеется, запущенный процесс должен иметь права на запись в файл.

Вы можете изменить файл в источнике.

2 голосов
/ 02 апреля 2011

Возможно, вы захотите проверить эту страницу , описывающую методику одного человека для выявления и решения проблем производительности Trac.Я заимствую методы, описанные там, когда мой экземпляр Trac начинает становиться вялым.

На странице TracPerformance в вики Trac есть еще много хороших советов по улучшению производительности.также есть несколько полезных советов и ссылок, опубликованных на этот вопрос о сбое сервера .

...