Mercurial > hg > ngx_http_upstream_keepalive
annotate README @ 11:15530a464dba
Keepalive: don't cache invalid connections.
1. Remember failed status, since peer.free() may be called more than once.
It's called twice if peer fails - once from ngx_http_upstream_next() with
NGX_PEER_FAILED set, and then from ngx_http_upstream_finalize_request()
without.
2. We shouldn't cache connection unless we aren't expecting anything from
upstream. For memcached this means either 404 response or 200 response with
all body read (body may not be read e.g. when serving HEAD request).
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 13 Nov 2008 19:36:23 +0300 |
parents | c1a2ef20a2a7 |
children | f3e74fbd0f0b |
rev | line source |
---|---|
7
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 Keepalive balancer module for nginx. |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 This module implements cache for backend connections. As of now, it may |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 be used with memcached upstreams. |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 Note: don't even try it with http backends. It won't work. |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 Note: it's for nginx 0.7.* and won't work with nginx 0.6.*. |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 Configuration directives: |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 keepalive <num> [single] |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 Scope: upstream |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 Switches on keepalive module for the upstream in question. |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 Parameters: |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 - <num> |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 Maximum number of connections to cache. If there isn't enough |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 room to cache new connections - last recently used connections |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 will be kicked off the cache. |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 - single |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 Treat everything as single host. With this flag connections |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 to different backends are treated as equal. |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 Sample configuration: |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 upstream memd { |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 server 127.0.0.1:11211; |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 server 10.0.0.2:11211; |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 keepalive 10; |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 } |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 This module was tested to work with standard round-robin balancing, but |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 it's believed to be compatible with more sophisticated balancers. The only |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 requirement is to activate them *before* this module, e.g.: |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 upstream memd { |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 server 127.0.0.1:11211; |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 server 10.0.0.2:11211; |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 ip_hash; |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 keepalive 10; |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 } |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 To compile nginx with keepalive module, use "--add-module <path>" option to |
c1a2ef20a2a7
Keepalive: add license and some documentation.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 nginx configure. |