mirror of
https://github.com/taigrr/nats.docs
synced 2025-01-18 04:03:23 -08:00
GitBook: [master] 60 pages and 12 assets modified
This commit is contained in:
committed by
gitbook-bot
parent
3429cc74ff
commit
0f1d9e01a8
@@ -274,7 +274,7 @@ As noted above, the `routez` endpoint does support the `subs` argument from the
|
||||
|
||||
#### Example
|
||||
|
||||
* Get JetStream information: http://host:port/jsz?accounts=1&streams=1&consumers=1&config=1
|
||||
* Get JetStream information: [http://host:port/jsz?accounts=1&streams=1&consumers=1&config=1](http://host:port/jsz?accounts=1&streams=1&consumers=1&config=1)
|
||||
|
||||
#### Response
|
||||
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
# Lame Duck Mode
|
||||
|
||||
In production we recommend that a server is shut down with lame duck mode
|
||||
as a graceful way to slowly evict clients. With large deployments this
|
||||
mitigates the "thundering herd" situation that will place CPU pressure on
|
||||
servers as TLS enabled clients reconnect.
|
||||
In production we recommend that a server is shut down with lame duck mode as a graceful way to slowly evict clients. With large deployments this mitigates the "thundering herd" situation that will place CPU pressure on servers as TLS enabled clients reconnect.
|
||||
|
||||
## Server
|
||||
|
||||
@@ -13,16 +10,9 @@ Lame duck mode is initiated by signaling the server:
|
||||
nats-server --signal ldm
|
||||
```
|
||||
|
||||
After entering lame duck mode, the server will stop accepting new connections,
|
||||
wait for a 10 second grace period, then begin to evict clients over a period of time
|
||||
configurable by the [lame_duck_duration](https://docs.nats.io/nats-server/configuration#runtime-configuration)
|
||||
configuration option. This period defaults to 2 minutes.
|
||||
After entering lame duck mode, the server will stop accepting new connections, wait for a 10 second grace period, then begin to evict clients over a period of time configurable by the [lame\_duck\_duration](https://docs.nats.io/nats-server/configuration#runtime-configuration) configuration option. This period defaults to 2 minutes.
|
||||
|
||||
## Clients
|
||||
|
||||
When entering lame duck mode, the server will send a message to clients. Some
|
||||
maintainer supported clients will invoke an optional callback indicating that
|
||||
a server is entering lame duck mode. This is used for cases where an application
|
||||
can benefit from preparing for the short outage between the time it is evicted and
|
||||
automatically reconnected to another server.
|
||||
When entering lame duck mode, the server will send a message to clients. Some maintainer supported clients will invoke an optional callback indicating that a server is entering lame duck mode. This is used for cases where an application can benefit from preparing for the short outage between the time it is evicted and automatically reconnected to another server.
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ nats-sub -s nats://localhost:4222 ">"
|
||||
|
||||
`nats-sub` is a subscriber sample included with all NATS clients. `nats-sub` subscribes to a subject and prints out any messages received. You can find the source code to the go version of `nats-sub` in [GitHub](https://github.com/nats-io/nats.go/tree/master/examples). After starting the subscriber you should see a message on 'A' that a new client connected.
|
||||
|
||||
We have two servers and a client. Time to simulate our rolling upgrade. But wait, before we upgrade 'A', let's introduce a new server 'C'. Server 'C' will join the existing cluster while we perform the upgrade. Its sole purpose is to provide an additional place where clients can go other than 'A' and ensure we don't end up with a single server serving all the clients after the upgrade procedure. Clients will randomly select a server when connecting unless a special option is provided that disables that functionality \(usually called 'DontRandomize' or 'noRandomize'\). You can read more about ["Avoiding the Thundering Herd"](). Suffice it to say that clients redistribute themselves about evenly between all servers in the cluster. In our case 1/2 of the clients on 'A' will jump over to 'B' and the remaining half to 'C'.
|
||||
We have two servers and a client. Time to simulate our rolling upgrade. But wait, before we upgrade 'A', let's introduce a new server 'C'. Server 'C' will join the existing cluster while we perform the upgrade. Its sole purpose is to provide an additional place where clients can go other than 'A' and ensure we don't end up with a single server serving all the clients after the upgrade procedure. Clients will randomly select a server when connecting unless a special option is provided that disables that functionality \(usually called 'DontRandomize' or 'noRandomize'\). You can read more about ["Avoiding the Thundering Herd"](upgrading_cluster.md). Suffice it to say that clients redistribute themselves about evenly between all servers in the cluster. In our case 1/2 of the clients on 'A' will jump over to 'B' and the remaining half to 'C'.
|
||||
|
||||
Let's start our temporary server:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user