Как я нахожу то, что использует память в процессе Python в производственной системе?

Как отмечено в комментариях выше, ваша последовательность ASCII, вероятно, неверна. Может быть, это шестнадцатеричный поток.

Принимая правильные числа ASCII, вы можете сделать следующее:

var str = '68697065857684';
str = str.match(/.{1,2}/g);


for (index = str.length - 1; index >= 0; --index) {
  var temp = str[index];  
  str[index]= String.fromCharCode(temp);
}

console.log(str);

39
задан Community 23 May 2017 в 12:10
поделиться

5 ответов

Вы могли записать трафик (через журнал) на Вашем месте производства, затем воспроизвести его на Вашем сервере разработки, оснащенном с отладчиком памяти Python? (Я рекомендую дозатор: http://pypi.python.org/pypi/Dozer)

5
ответ дан 27 November 2019 в 02:49
поделиться

Я не знаю, как вывести все состояние интерпретатора Python и восстановить его. Это было бы полезно, я буду бдительно следить за этим ответом в случае, если у кого-либо еще есть идеи.

Если у Вас есть идея, где память просачивается, можно добавить, проверяет refcounts объектов. Например:

x = SomeObject()
... later ...
oldRefCount = sys.getrefcount( x )
suspiciousFunction( x )
if (oldRefCount != sys.getrefcount(x)):
    print "Possible memory leak..."

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

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

Отладка подсчетов ссылок

2
ответ дан 27 November 2019 в 02:49
поделиться

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

Я никогда не должен был делать этого, таким образом, я не на 100% уверен, что это будет работать, но возможно указатели будут полезны.

3
ответ дан 27 November 2019 в 02:49
поделиться

gc модуль имеет некоторые функции, которые могли бы быть полезными, как список всех объектов сборщик "мусора", который, как находят, был недостижим, но не могут освободить, или список всех прослеживаемых объектов.

Если у Вас есть подозрение, которое могли бы пропустить объекты, weakref модуль мог быть удобным, чтобы узнать, собраны ли объекты.

1
ответ дан 27 November 2019 в 02:49
поделиться

Meliae выглядит многообещающе:

Этот проект похож на Heaty (в проекте «Гуппи»), в ее попытке понять, как память была выделена.

В настоящее время его главное отличие в том, что он разбивает задачу вычисления сводной статистики и т. Д. Расход памяти от фактического сканирования потребления памяти. Это делает это, потому что я часто хочу выяснить, что происходит в моем процессе, в то время как мой процесс потребляет огромное количество памяти (1 ГБ и т. Д.). Это также позволяет резко упростить сканер, так как я не выделяющ объекты Python при попытке анализировать расход памяти объекта Python.

2
ответ дан 27 November 2019 в 02:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: