Openresty Dynami c нерест рабочего процесса - PullRequest
0 голосов
/ 26 марта 2020

Можно ли порождать новый рабочий процесс и корректно динамически завершать существующий, используя сценарии Lua в openresty?

1 Ответ

0 голосов
/ 26 марта 2020

Да, но нет

Сам по себе Openresty на самом деле не предлагает такого рода функциональность напрямую, но дает вам необходимые строительные блоки:

  • nginx работники могут быть завершается отправкой им сигнала
  • openresty позволяет считывать PID текущего потока работы
  • FFI LuaJIT позволяет использовать kill() системный вызов или
  • с использованием os.execute вы можете просто позвонить kill напрямую.

Комбинируя их, вы должно быть в состоянии достичь того, что вы хотите: D


Примечание: прочитав вопрос еще раз, я заметил, что я действительно ответил только на вторую часть.

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

Если вы просто захотите изменить количество рабочих процессов, у вас будет полностью перезапустить экземпляр nginx я пытался nginx -s reload -g 'worker_processes 4;', и на самом деле это не привело к появлению дополнительных работников).

Однако я не вижу веской причины, почему вы когда-либо делали это. Если вам нужны дополнительные потоки, для этого есть отдельный API, кроме этого вам, вероятно, придется просто пережить жесткий перезапуск.

...