我偶尔会遇到数据库重新启动或类似问题。在这种情况下,我需要进入并手动重新启动 uwsgi。
是否可以设置 uwsgi 在出现 500 个错误时重新启动?理想情况下,我可以让工作程序在出现一定数量的 500 个错误时重新启动,而不是在出现每个错误时重新启动。
答案1
您可以使用度量子系统,添加一个计数 500 个错误的度量标准。
指标可以有一个触发警报的阈值(在您的情况下是重新加载)
[uwsgi]
http-socket = :9092
; reload the instance when touching
touch-reload = /tmp/restart
; create a new alarm restarting the instance
alarm = database_reloaded cmd:touch /tmp/restart
; create a metric for couting 500s
metric = 500counter
; create a metric threshold, resetting the metric to 0 when hitting 5
; the metric alarm triggers the restart of the instance too
metric-alarm = key=500counter,value=5,alarm=database_reloaded,rate=60,reset=0
; increment metric whenever a 500 is generated
final-route-status = 500 metricinc:500counter