Есть ли хороший метод для профилирования процесса для больших сокращений?

Я обнаружил, что процесс сокращения в нашей среде продуктов велик, и сообщения не уменьшились.

К вашему сведению, сокращение составляет 10831243888178, а затем 10838818431635 через 5 минут. Message_queue_len составляет 1012, а затем 1014 в соответствии с сокращением.

Я предположил, что messages вернулся из process_info(Pid) следует употреблять в течение 5 минут, но это не так. Могу ли я сказать, что процесс был заблокирован некоторыми сообщениями?

Я прочитал из Интернета, что одно сокращение можно рассматривать как один вызов функции, но я не до конца понимаю. Буду признателен, если кто-нибудь расскажет мне больше о "сокращении".

1 ответ

Решение

Сокращения - это способ измерения работы, выполняемой процессом.

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

Кажется, что числа, которые вы дали, являются накопленными сокращениями, потраченными процессом. Большое число само по себе ничего не значит на самом деле. Однако значительное увеличение означает, что процесс выполняет тяжелую работу. Если эта рабочая лошадка не использует очередь сообщений, велика вероятность, что она застрянет внутри одного очень длинного или даже бесконечного вычисления.

Вы можете попытаться проверить это дальше с process_info(Pid, current_function) или же process_info(Pid, current_stacktrace),

Другие вопросы по тегам