Я использую сервер заданий Gearman с несколькими работниками, которым звонят несколько раз в день (10 000+ в час) без каких-либо проблем.
Недавно я добавил 3 новых воркера, которым звонят не так часто (3-6 раз в день). Кажется, что новые работники отключаются от сервера gearman, что кажется случайным (иногда раз в день, иногда после того, как они закончат работу), но оставляют процесс PHP запущенным, что означает отсутствие ФАТАЛЬНЫХ ошибок, они становятся недоступными только когда редукторные рабочие.
Журнал ошибок в основном правильный, однако я увидел следующее предупреждение в одном из журналов: Предупреждение: GearmanWorker::work(): flush(Время ожидания подключения истекло) send -> libgearman/connection.cc:847
Не нашел ничего по этому поводу и хотел задать пару вопросов:
1) К чему относится эта ошибка? тайм-аут работника, т. е. работа заняла слишком много времени? или тайм-аут сервера означает, что он бездействовал так долго, что отключился от сервера Gearman? Можно ли что-то исправить, установив GearmanWorker::setTimeout в -1?
1.1) Если я не устанавливаю тайм-аут явно, есть ли тайм-аут по умолчанию для Gearman?
2) Должны ли рабочие шестерни периодически перезапускаться?
3) Может ли это быть связано с возвращаемым значением работника? Я всегда возвращаю логическое значение, будет ли «ложь» отключать сервер?
Примечание. В отличие от других моих воркеров, эти воркеры вызываются клиентами как «фоновые».
Спасибо за любую помощь!