mirror of
https://github.com/nginx/nginx.git
synced 2026-08-28 04:39:05 +00:00
Upstream: the "zone" directive.
Upstreams with the "zone" directive are kept in shared memory, with a consistent view of all worker processes.
This commit is contained in:
parent
b0b7b5a356
commit
cf31347ee8
10 changed files with 407 additions and 7 deletions
|
|
@ -441,7 +441,8 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
|
|||
}
|
||||
|
||||
if (shm_zone[i].tag == oshm_zone[n].tag
|
||||
&& shm_zone[i].shm.size == oshm_zone[n].shm.size)
|
||||
&& shm_zone[i].shm.size == oshm_zone[n].shm.size
|
||||
&& !shm_zone[i].noreuse)
|
||||
{
|
||||
shm_zone[i].shm.addr = oshm_zone[n].shm.addr;
|
||||
|
||||
|
|
@ -1234,6 +1235,7 @@ ngx_shared_memory_add(ngx_conf_t *cf, ngx_str_t *name, size_t size, void *tag)
|
|||
shm_zone->shm.exists = 0;
|
||||
shm_zone->init = NULL;
|
||||
shm_zone->tag = tag;
|
||||
shm_zone->noreuse = 0;
|
||||
|
||||
return shm_zone;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ struct ngx_shm_zone_s {
|
|||
ngx_shm_t shm;
|
||||
ngx_shm_zone_init_pt init;
|
||||
void *tag;
|
||||
ngx_uint_t noreuse; /* unsigned noreuse:1; */
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -109,4 +109,12 @@ ngx_rwlock_unlock(ngx_atomic_t *lock)
|
|||
}
|
||||
|
||||
|
||||
#else
|
||||
|
||||
#if (NGX_HTTP_UPSTREAM_ZONE)
|
||||
|
||||
#error ngx_atomic_cmp_set() is not defined!
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue