mirror of
https://github.com/nginx/nginx.git
synced 2025-08-06 14:56:15 +08:00
ngx_http_degraded()
This commit is contained in:
parent
61d5e5e67f
commit
81aa52829a
@ -86,25 +86,38 @@ ngx_module_t ngx_http_degradation_module = {
|
||||
};
|
||||
|
||||
|
||||
static ngx_uint_t ngx_degraded;
|
||||
|
||||
|
||||
static ngx_int_t
|
||||
ngx_http_degradation_handler(ngx_http_request_t *r)
|
||||
{
|
||||
time_t now;
|
||||
static size_t sbrk_size;
|
||||
static time_t sbrk_time;
|
||||
ngx_http_degradation_loc_conf_t *dlcf;
|
||||
ngx_http_degradation_main_conf_t *dmcf;
|
||||
|
||||
dlcf = ngx_http_get_module_loc_conf(r, ngx_http_degradation_module);
|
||||
|
||||
if (dlcf->degrade == 0) {
|
||||
if (dlcf->degrade && ngx_http_degraded(r)) {
|
||||
return dlcf->degrade;
|
||||
}
|
||||
|
||||
return NGX_DECLINED;
|
||||
}
|
||||
|
||||
|
||||
ngx_uint_t
|
||||
ngx_http_degraded(ngx_http_request_t *r)
|
||||
{
|
||||
time_t now;
|
||||
ngx_uint_t log;
|
||||
static size_t sbrk_size;
|
||||
static time_t sbrk_time;
|
||||
ngx_http_degradation_main_conf_t *dmcf;
|
||||
|
||||
dmcf = ngx_http_get_module_main_conf(r, ngx_http_degradation_module);
|
||||
|
||||
if (dmcf->sbrk_size) {
|
||||
|
||||
log = 0;
|
||||
now = ngx_time();
|
||||
|
||||
/* lock mutex */
|
||||
@ -120,19 +133,27 @@ ngx_http_degradation_handler(ngx_http_request_t *r)
|
||||
|
||||
sbrk_size = (size_t) sbrk(0) - ((uintptr_t) ngx_palloc & ~0x3FFFFF);
|
||||
sbrk_time = now;
|
||||
log = 1;
|
||||
}
|
||||
|
||||
/* unlock mutex */
|
||||
|
||||
if (sbrk_size >= dmcf->sbrk_size) {
|
||||
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
|
||||
"degradation sbrk: %uz", sbrk_size);
|
||||
ngx_degraded = 1;
|
||||
|
||||
return dlcf->degrade;
|
||||
if (log) {
|
||||
ngx_log_error(NGX_LOG_NOTICE, r->connection->log, 0,
|
||||
"degradation sbrk:%uzM",
|
||||
sbrk_size / (1024 * 1024));
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return NGX_DECLINED;
|
||||
ngx_degraded = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -142,6 +142,10 @@ char *ngx_http_merge_types(ngx_conf_t *cf, ngx_array_t **keys,
|
||||
ngx_int_t ngx_http_set_default_types(ngx_conf_t *cf, ngx_array_t **types,
|
||||
ngx_str_t *default_type);
|
||||
|
||||
#if (NGX_HTTP_DEGRADATION)
|
||||
ngx_uint_t ngx_http_degraded(ngx_http_request_t *);
|
||||
#endif
|
||||
|
||||
|
||||
extern ngx_module_t ngx_http_module;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user