cpulimit не обнаруживает Узел. Процесс JS

Ваш путь, вероятно, установлен неправильно, Вы используете несправедливость ranlib. та, которую Вы используете, был скомпилирован для окон не для cygwin и не распознает путь cygwin.

2
27.08.2014, 20:51
2 ответа

cpulimit, как известно, в некоторых случаях не работает хорошо. Иногда он работает достаточно хорошо (на простых однопоточных приложениях), а иногда (в основном mutli-threaded или muti-process) он не работает.

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

Вторая причина - это то, что SIGSTOP - это не сигнал, который можно "обработать". Но сигналы асинхронные. Поэтому поток a может порождать поток b. поток a может быть SIGSTOP'ed при запуске потока b, а поток b запускается без сигнала.

Также SIGSTOP приостанавливает процесс "когда он может". В некоторых случаях, особенно при использовании диска io, нить не может быть приостановлена. Самое распространенное, что я могу придумать, это дисковое IO.

Другими словами, в то время как SIGSTOP (то, что использует cpulimit) должен останавливать поток и все остальные дочерние потоки, он не всегда делает это так, как вы ожидаете в сложных многопоточных приложениях, которые могут запускать другие процессы. Лучше всего в этих случаях использовать традиционное дросселирование расписания (хорошо).

1
27.01.2020, 22:13

С комментарием @Mark Plotnick я наконец выяснил причину, по которой

ls -l "/ proc / $ (pidof node) / exe" возвращает

lrwxrwxrwx 1 antony antony 0 27 августа 13:04 / proc / 4414 / exe -> / usr / bin / nodejs

Итак, вместо node я должен был использовать nodejs

следующий команда работает

cpulimit -l 50 -e nodejs

Обновление: на самом деле это не пуленепробиваемое решение. Да, cpulimit может обнаружить процесс nodejs , но если вы используете постоянный сценарий nodejs , cpulimit может преждевременно вызвать Сценарий nodejs завершается без предупреждения

Update2: на консоли / терминале могло бы появиться сообщение о том, что процесс nodejs остановлен, но на самом деле nodejs все еще работает в фоновом режиме.

1
27.01.2020, 22:13

Теги

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