JOB_TOO_BIG Pheanstalk — что можно сделать?

На Laravel 4.2 & Laravel Forge

Я допустил ошибку и случайно передал некоторый код на производственный сервер, но была ошибка, и она выдвинула задание в очередь, не удаляя его после завершения.
Теперь я не могу больше ничего вставлять в очередь, получаю:

Pheanstalk_Exception JOB_TOO_BIG: данные задания превышают установленное сервером ограничение

Что я могу сделать?

7

Решение

Это потому, что вы пытаетесь хранить слишком много данных в самой очереди. Попробуйте сократить данные, которые вы отправляете в очередь.

Например, если ваше задание очереди включает использование моделей, просто передайте идентификатор модели в очередь и как часть задания извлеките их из базы данных, а не передавайте в очередь весь экземпляр модели.

Если вы используете красноречивые модели, они автоматически обрабатываются таким образом.

8

Другие решения

Вы можете увеличить максимальный размер задания с помощью опции -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

Размер должен быть указан в байтах.

Я не уверен, может ли это иметь серьезные последствия для производительности — пока что это хорошо для меня. Буду признателен за любые комментарии по производительности.

23

По вопросам рекламы [email protected]