Laravel scheduler terminating your processes (sending SIGKILL signal)

Aug 09 / 1 min read

It's likely that Supervisor is terminating processes that run longer than 10 seconds, which is the default value for stopwaitsecs.

Context

We have a scheduled command that runs every 5 minutes to:

  • Process data from two APIs
  • Combine the data (with additional processing)
  • Send it to a third API

This involves:

  • Approximately 20 HTTP requests per item
  • Around 1 second per request (for simplicity)
  • 4000 seconds to process all 200 items, but the scheduler kills any process running past 10 seconds due to the stopwaitsecs setting.

Solution

  • Increase stopwaitsecs: Set it to 200,000 to handle 1000 items in one command execution. The default is 10 seconds.
  • Increase numprocs: Set it to 2 instead of 1 for the scheduler, adjusting according to your server capacity.

For more information, refer to the Laravel documentation, which highlights this issue in detail. As always, the documentation is a great resource for troubleshooting.