У меня есть сервер, который я написал, который должен работать на нескольких портах.
Итак, я написал два сценария Upstart, как это предлагают документы для выскочки. http://upstart.ubuntu.com/cookbook/#instance
Задача для создания экземпляров:
# gatling-broadcast.conf
description "Start multiple gatling-broadcast servers"
console output
start on runlevel [2345]
task
script
for i in `seq 21001 21004`; do
start gatling-broadcast-worker PORT=$i
done
end script
Скрипт экземпляра:
# gatling-broadcast-worker.conf
description "Gatling-broadcast server."
instance $PORT
env ROOT="/home/ctargett/Projects/msgqueue"
exec $ROOT/env/bin/pypy $ROOT/main.py --mode=broadcast --port=$PORT --log_file_prefix=/tmp/gatling-broadcast-$PORT.log
Я могу запустить несколько версий gatling-broadcast-worker
работа в порядке:
$ initctl --session start gatling-broadcast-worker PORT=21001
gatling-broadcast-worker (21001) start/running, process 20956
$ initctl --session start gatling-broadcast-worker PORT=21002
gatling-broadcast-worker (21002) start/running, process 20963
$ initctl --session list
gatling-broadcast stop/waiting
gatling-monitor stop/waiting
gatling-broadcast-worker (21002) start/running, process 20963
gatling-broadcast-worker (21001) start/running, process 20956
Но когда я пытаюсь запустить gatling-broadcast
job Я получаю сообщение об ошибке:
$ initctl --session start gatling-broadcast
initctl: Job failed to start
И ничего полезного в выводе init
Кроме как init: gatling-broadcast main process (21007) terminated with status 1
:
Loading configuration from /home/ctargett/Projects/msgqueue/upstart
job_class_unregister: Unregistered job /com/ubuntu/Upstart/jobs/gatling_2dbroadcast
conf_file_destroy: Destroyed unused job gatling-broadcast
conf_reload_path: Loading gatling-broadcast from /home/ctargett/Projects/msgqueue/upstart/gatling-broadcast.conf
parse_job: Creating new JobClass gatling-broadcast
job_class_register: Registered job /com/ubuntu/Upstart/jobs/gatling_2dbroadcast
job_class_unregister: Unregistered job /com/ubuntu/Upstart/jobs/gatling_2dbroadcast_2dworker
conf_file_destroy: Destroyed unused job gatling-broadcast-worker
conf_reload_path: Loading gatling-broadcast-worker from /home/ctargett/Projects/msgqueue/upstart/gatling-broadcast-worker.conf
parse_job: Creating new JobClass gatling-broadcast-worker
job_class_register: Registered job /com/ubuntu/Upstart/jobs/gatling_2dbroadcast_2dworker
job_class_unregister: Unregistered job /com/ubuntu/Upstart/jobs/gatling_2dmonitor
conf_file_destroy: Destroyed unused job gatling-monitor
conf_reload_path: Loading gatling-monitor from /home/ctargett/Projects/msgqueue/upstart/gatling-monitor.conf
parse_job: Creating new JobClass gatling-monitor
job_class_register: Registered job /com/ubuntu/Upstart/jobs/gatling_2dmonitor
job_register: Registered instance /com/ubuntu/Upstart/jobs/gatling_2dbroadcast/_
gatling-broadcast goal changed from stop to start
gatling-broadcast state changed from waiting to starting
event_new: Pending starting event
Handling starting event
event_finished: Finished starting event
gatling-broadcast state changed from starting to pre-start
gatling-broadcast state changed from pre-start to spawned
gatling-broadcast main process (21007)
gatling-broadcast state changed from spawned to post-start
gatling-broadcast state changed from post-start to running
event_new: Pending started event
Handling started event
event_finished: Finished started event
init: gatling-broadcast main process (21007) terminated with status 1
gatling-broadcast goal changed from start to stop
gatling-broadcast state changed from running to stopping
event_new: Pending stopping event
Handling stopping event
event_finished: Finished stopping event
gatling-broadcast state changed from stopping to killed
gatling-broadcast state changed from killed to post-stop
gatling-broadcast state changed from post-stop to waiting
event_new: Pending stopped event
job_change_state: Destroyed inactive instance gatling-broadcast
Handling stopped event
event_finished: Finished stopped event
Думаю, проблема в том, что gatling-broadcast
не запускает один или несколько экземпляров, вероятно, потому что они уже Бег. Помните, что Upstyart выполняет вашу работу с помощью 'sh -e', поэтому, если любой простая команда не выполняется, сценарий немедленно завершается. Видеть:
http://upstart.ubuntu.com/cookbook/#debugging-a-script-which-appears-to-be-behaving-oddly
Если вы используете Ubuntu Precise, взгляните на /var/log/upstart/gatling-broadcast.log
. Вы можете добавить "set -x
"в верхнюю часть строфы скрипта, чтобы увидеть, где именно происходит сбой.
Исправить просто:
script
for i in `seq 21001 21004`; do
start gatling-broadcast-worker PORT=$i || true
done
end script
Однако лучшим решением было бы проверить статус конкретного экземпляра gatling-broadcast-worker
задание, и если оно не выполняется, попробуйте запустить его. И если это не удается, примите соответствующие меры.