Systemd вызывает несколько процессов супервизора

У меня проблема с определением того, где проблема в конфигурации моего супервизора, вызывающая дублирование программы.

Я запускаю веб-сервер Python Tornado через обратный прокси-сервер Nginx. Я думаю, что проблема больше связана с руководителем.

/etc/supervisor/supervisord.conf

[unix_http_server]
file=/var/run/supervisor.sock
chmod=0700

[supervisord]
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid
childlogdir=/var/log/supervisor           
logfile_maxbytes=50MB                           
logfile_backups=5                               
loglevel=error                                  

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock

[include]
files = /etc/supervisor/conf.d/*.conf

/etc/supervisor/conf.d/tornado.conf

[program:tornado]
numprocs = 4
numprocs_start = 8000
process_name = %(program_name)s_%(process_num)02d
directory=/home/username/webapp
environment=PATH="/home/username/.virtualenvs/tornado_env/bin"
command = python server.py --port=%(process_num)s
user=www-data
redirect_stderr=true
stdout_logfile=/var/log/webapp/%(program_name)s_%(process_num)02d.log
loglevel=info

Как видите, numprocs = 4 , но мое замешательство возникает из-за этого после просто перезагружаю сервер.

ps -aux | egrep "supervisor | python"

root       399  0.1  2.6  14496  9584 ?        Ss   15:48   0:03 /usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
www-data   410  0.1  3.9  16872 14200 ?        S    15:48   0:02 python server.py --port=8002
www-data   411  0.1  3.9  16872 14180 ?        S    15:48   0:02 python server.py --port=8003
www-data   412  0.1  3.9  16872 14124 ?        S    15:48   0:02 python server.py --port=8000
www-data   413  0.1  3.9  16872 14180 ?        S    15:48   0:02 python server.py --port=8001
www-data   489  0.0  3.0  16872 11024 ?        S    15:49   0:00 python server.py --port=8003
www-data   490  0.0  3.1  16872 11228 ?        S    15:49   0:00 python server.py --port=8000
www-data   491  0.0  3.1  16872 11244 ?        S    15:49   0:00 python server.py --port=8002
www-data   492  0.0  3.0  16872 11192 ?        S    15:49   0:00 python server.py --port=8001

Существует 8 процессов Python, но supervisor знает только о 4. Что еще мне нужно искать?

sudo supervisorctl status

tornado:tornado_8000             RUNNING    pid 412, uptime 0:36:03
tornado:tornado_8001             RUNNING    pid 413, uptime 0:36:03
tornado:tornado_8002             RUNNING    pid 410, uptime 0:36:05
tornado:tornado_8003             RUNNING    pid 411, uptime 0:36:04

ОБНОВЛЕНИЕ : каким-то образом запущенный супервизор и systemd порождают повторяющуюся конфигурацию. Итак, теперь мой вопрос: отключить службу супервизора , и если да, Я хочу, чтобы он был доступен для сценария, который запускается локально в поле «localhost», но недоступен извне. ...

На этот вопрос уже есть ответ:

Я установил одно приложение 'phanthomjs', которое работает с определенным портом 6423 Я хочу, чтобы он был доступен для сценария, который запускается локально на поле 'localhost', но недоступен извне.

phantomjs - webdriver = 6324

мой текущий сценарий использует TCP и запускается на том же компьютере и мы используем имя сервера как localhost для подключения к приложению.

Есть ли способ заблокировать в Redhat Linux доступ к этому порту извне?

2
задан 24 December 2015 в 23:18
2 ответа

Если ваше приложение прослушивает только локальный хост, то с ним нельзя связаться извне. Если вы можете настроить адрес "привязки", то поставьте 127.0.0.1. Чтобы проверить, что он работает, введите lsof -i -n -P :6423 (или 6324 . . . .). В выводе вы должны увидеть строку, заканчивающуюся на

TCP 127.0.0.1:6423 (LISTEN)

Если вы видите

TCP *:6423 (LISTEN)

то ваше приложение прослушивает на любом порту, и таким образом с ним можно связаться из Интернета.

Если вы не можете заставить ваше приложение прослушивать только на 127.0.0.1, вам нужно использовать iptables.

.
2
ответ дан 3 December 2019 в 11:34

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

Чтобы проверить, что цены привязаны только к localhost, а не к внешнему сетевому интерфейсу, запустите эту команду:

netstat -ntl | grep 6423

Если на выходе вы видите что-то вроде 127. 0.0.1:6423 тогда вы можете быть уверены, что служба недоступна с других хостов, только локальными процессами.

Если, с другой стороны, вы видите что-то вроде *:6423 или IP-адрес, доступный в сети, то служба доступна, и вам нужно настроить конфигурацию так, чтобы вместо этого вы привязали ее к localhost.

.
0
ответ дан 3 December 2019 в 11:34

Теги

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