AsyncIO CPython зависает при 100% загрузке ЦПPython

Программы на Python
Anonymous
AsyncIO CPython зависает при 100% загрузке ЦП

Сообщение Anonymous »

Наше приложение Python зависает на этих двух машинах после 10–20 минут использования. Htop показывает 100% загрузку процессора. Я использовал Pystack, чтобы получить трассировку стека запущенного процесса. Сторона Python трассировки стека не показывает ничего интересного, это был просто поиск по словарю (и каждый раз, когда он зависает, они находятся в другом коде). Но при последнем вызове Pystack показывает, что он застрял на этой конкретной строке исходного кода CPython (цикл while):
https://github.com/python/cpython/blob/ v3.12.3/Modules/_asynciomodule.c#L3594

Код: Выделить всё

    module_traverse(PyObject *mod, visitproc visit, void *arg)
{
asyncio_state *state = get_asyncio_state(mod);

Py_VISIT(state->FutureIterType);
Py_VISIT(state->TaskStepMethWrapper_Type);
Py_VISIT(state->FutureType);
Py_VISIT(state->TaskType);

Py_VISIT(state->asyncio_mod);
Py_VISIT(state->traceback_extract_stack);
Py_VISIT(state->asyncio_future_repr_func);
Py_VISIT(state->asyncio_get_event_loop_policy);
Py_VISIT(state->asyncio_iscoroutine_func);
Py_VISIT(state->asyncio_task_get_stack_func);
Py_VISIT(state->asyncio_task_print_stack_func);
Py_VISIT(state->asyncio_task_repr_func);
Py_VISIT(state->asyncio_InvalidStateError);
Py_VISIT(state->asyncio_CancelledError);

Py_VISIT(state->scheduled_tasks);
Py_VISIT(state->eager_tasks);
Py_VISIT(state->current_tasks);
Py_VISIT(state->iscoroutine_typecache);

Py_VISIT(state->context_kwname);

// Visit freelist.
PyObject *next = (PyObject*) state->fi_freelist;
while (next != NULL) {
// stuck inside this loop
PyObject *current = next;
Py_VISIT(current);
next = (PyObject*) ((futureiterobject*) current)->future;
}
return 0;
}
Я считаю, что эта часть кода как-то связана со сборкой мусора. Что я могу узнать из этого, чтобы устранить проблему? Куда мне смотреть дальше?


Подробнее здесь: https://stackoverflow.com/questions/787 ... -cpu-usage

Вернуться в «Python»