На Laravel 4.2 & Laravel Forge
Я допустил ошибку и случайно передал некоторый код на производственный сервер, но была ошибка, и она выдвинула задание в очередь, не удаляя его после завершения.
Теперь я не могу больше ничего вставлять в очередь, получаю:
Pheanstalk_Exception JOB_TOO_BIG: данные задания превышают установленное сервером ограничение
Что я могу сделать?
Это потому, что вы пытаетесь хранить слишком много данных в самой очереди. Попробуйте сократить данные, которые вы отправляете в очередь.
Например, если ваше задание очереди включает использование моделей, просто передайте идентификатор модели в очередь и как часть задания извлеките их из базы данных, а не передавайте в очередь весь экземпляр модели.
Если вы используете красноречивые модели, они автоматически обрабатываются таким образом.
Вы можете увеличить максимальный размер задания с помощью опции -z для Beanstalkd: http://linux.die.net/man/1/beanstalkd
Чтобы сделать это в Forge, вам нужно подключиться к серверу SSH и отредактировать /etc/default/beanstalkd
файл.
Добавьте следующую строку (или раскомментируйте существующую строку BEANSTALKD_EXTRA и отредактируйте ее):
BEANSTALKD_EXTRA="-z 524280"
Перезапустите beanstalkd после внесения изменений:
sudo service beanstalkd restart
Размер должен быть указан в байтах.
Я не уверен, может ли это иметь серьезные последствия для производительности — пока что это хорошо для меня. Буду признателен за любые комментарии по производительности.