Да, но нет
Сам по себе Openresty на самом деле не предлагает такого рода функциональность напрямую, но дает вам необходимые строительные блоки:
- nginx работники могут быть завершается отправкой им сигнала
- openresty позволяет считывать PID текущего потока работы
- FFI LuaJIT позволяет использовать
kill()
системный вызов или - с использованием
os.execute
вы можете просто позвонить kill
напрямую.
Комбинируя их, вы должно быть в состоянии достичь того, что вы хотите: D
Примечание: прочитав вопрос еще раз, я заметил, что я действительно ответил только на вторую часть.
nginx
использует набор число рабочих процессов, так что вы можете выключить только работающих рабочих, которые затем будет перезапущен главным процессом, но число останется неизменным.
Если вы просто захотите изменить количество рабочих процессов, у вас будет полностью перезапустить экземпляр nginx я пытался nginx -s reload -g 'worker_processes 4;'
, и на самом деле это не привело к появлению дополнительных работников).
Однако я не вижу веской причины, почему вы когда-либо делали это. Если вам нужны дополнительные потоки, для этого есть отдельный API, кроме этого вам, вероятно, придется просто пережить жесткий перезапуск.