Php Laravel worker在K8s吊舱内运行时失败,错误代码为139 SIGSEGV

Php Laravel worker在K8s吊舱内运行时失败,错误代码为139 SIGSEGV,php,laravel,amazon-web-services,kubernetes,devops,Php,Laravel,Amazon Web Services,Kubernetes,Devops,我们使用k8s部署作为laravel队列工作者。运行时是alpine 3.10和PHP7.3FPM以及Laravel5.6。我们的资源限制是请求:512MB,限制1Gi 我们正在运行8个副本来卸载来自SQS的传入消息,我们正在使用。通过kubernetes cron作业将消息发送到队列 php /var/www/artisan queue:work ${CHANNEL} -vvv --tries=3 --sleep=3 --timeout=3600 --memory=${MEMORY} 其中C

我们使用k8s部署作为laravel队列工作者。运行时是alpine 3.10和PHP7.3FPM以及Laravel5.6。我们的资源限制是请求:512MB,限制1Gi

我们正在运行8个副本来卸载来自SQS的传入消息,我们正在使用。通过kubernetes cron作业将消息发送到队列

php /var/www/artisan queue:work ${CHANNEL} -vvv --tries=3 --sleep=3 --timeout=3600 --memory=${MEMORY}
其中CHANNEL是队列名称(SQS),MEMORY是传递给laravel worker的内存限制。 平均而言,每个pod总是处理170多条消息,这些消息与各种第三方API和其他东西进行通信

问题:

我们的吊舱间歇性地重新启动,错误代码为139

SIGSEGV,分段故障


这会影响我们的生产系统,因为我们的POD在有消息处理时重新启动。

这是一个社区wiki答案,因为它只从docker容器端解决了这个问题。您可以随意扩展

您看到的错误代码指示容器接收到SIGSEGV:

SIGSEGV表示分段故障。当一个程序 尝试访问不允许访问的内存位置, 或者尝试以不允许的方式访问内存位置。 从Docker容器的角度来看,这表明存在问题 与应用程序代码有关,或者有时与基础映像有关 由容器使用


在这种情况下,您应该确保没有使用一些旧的Docker版本,然后尝试使用调试器在容器中测试代码。我对这个主题不太熟悉,无法进一步指导您,但可能会对您有所帮助。

这是一个社区wiki答案,因为它仅从docker容器方面解决了这个问题。您可以随意扩展

您看到的错误代码指示容器接收到SIGSEGV:

SIGSEGV表示分段故障。当一个程序 尝试访问不允许访问的内存位置, 或者尝试以不允许的方式访问内存位置。 从Docker容器的角度来看,这表明存在问题 与应用程序代码有关,或者有时与基础映像有关 由容器使用

在这种情况下,您应该确保没有使用一些旧的Docker版本,然后尝试使用调试器在容器中测试代码。我对这个主题不太熟悉,无法进一步指导您,但可能会对您有所帮助