Я запускал сотни миллионов рабочих мест через рабочих PHP, с SES и Beanstalkd в качестве систем очередей. Я не беспокоился о том, чтобы все время работало. Если вы обнаружите, что после работы использование памяти становится высоким, перезапустите работника. Аналогичным образом, если вы только что завершили свою 100-ю или 1000-ю работу с этим работником, перезапустите с нуля, просто чтобы очистить.
Легче запускать больше рабочих, и быстро начать новый. Используй это. Если при разработке достаточно подключить достаточно отладки, поэтому, если вы обнаружите утечку памяти, там будет достаточно информации, чтобы выяснить, где, а затем справиться с ней.
Это сценарий оболочки, который я должен оставить для работы PHP-работника. Когда I exit(98);
из сценария, он распознает это и сразу же перезапускает. Обычно я добавляю других для запланированных пауз и выхожу из сценария. Начните это с любой системы стиля init, которую вы можете иметь (выскочка, супервизор и т. Д.), И скрипт будет продолжать работать и перезапускаться по своему усмотрению, пока вы не решите иначе.
#!/bin/bash
# runBeanstalkd-worker.sh
# a shell script that keeps looping until an exit code is given
# if it does an unplanned exit, restart after a second - or if it's
# some other declared error.
# if we've restarted in a planned fashion, we don't bother with any pause
# and for one particular code, exit the script entirely.
# The numbers 97, 98, 99 must match what is returned from the PHP script
nice php -q -f ./cli-beanstalk-worker.php -- [email protected]
ERR=$?
if [ $ERR -eq 98 ]
then
# a planned restart - instantly
exec $0 [email protected];
fi
# unplanned exit, pause, and restart
sleep 10
exec $0 [email protected]
Требование для как можно большего взаимодействия после того, как это возможно. Таким образом, для этого должны быть настроены задания cron или тому подобное. Это относится к обработке информации о клиентах, поэтому требуется 100% времени безотказной работы. Это рабочий, который обрабатывает 300 000 рабочих мест в день. Убийство рабочего и запуск нового требует немного большего взаимодействия системы, чем хотелось бы. – sharf