pub struct ServerBuilder { /* private fields */ }
Expand description
Server builder.
Implementations§
source§impl ServerBuilder
impl ServerBuilder
sourcepub fn new() -> ServerBuilder
pub fn new() -> ServerBuilder
Create new Server builder instance
sourcepub fn workers(self, num: usize) -> Self
pub fn workers(self, num: usize) -> Self
Sets number of workers to start.
See bind()
for more details on how worker count affects the number of
server factory instantiations.
The default worker count is the determined by std::thread::available_parallelism()
. See
its documentation to determine what behavior you should expect when server is run.
num
must be greater than 0.
§Panics
Panics if num
is 0.
sourcepub fn worker_max_blocking_threads(self, num: usize) -> Self
pub fn worker_max_blocking_threads(self, num: usize) -> Self
Set max number of threads for each worker’s blocking task thread pool.
One thread pool is set up per worker; not shared across workers.
§Examples:
let builder = ServerBuilder::new()
.workers(4) // server has 4 worker thread.
.worker_max_blocking_threads(4); // every worker has 4 max blocking threads.
See tokio::runtime::Builder::max_blocking_threads for behavior reference.
sourcepub fn backlog(self, num: u32) -> Self
pub fn backlog(self, num: u32) -> Self
Set the maximum number of pending connections.
This refers to the number of clients that can be waiting to be served. Exceeding this number results in the client getting an error when attempting to connect. It should only affect servers under significant load.
Generally set in the 64-2048 range. Default value is 2048.
This method should be called before bind()
method call.
sourcepub fn mptcp(self, mptcp_enabled: MpTcp) -> Self
pub fn mptcp(self, mptcp_enabled: MpTcp) -> Self
Sets MultiPath TCP (MPTCP) preference on bound sockets.
Multipath TCP (MPTCP) builds on top of TCP to improve connection redundancy and performance by sharing a network data stream across multiple underlying TCP sessions. See mptcp.dev for more info about MPTCP itself.
MPTCP is available on Linux kernel version 5.6 and higher. In addition, you’ll also need to
ensure the kernel option is enabled using sysctl net.mptcp.enabled=1
.
This method will have no effect if called after a bind()
.
sourcepub fn max_concurrent_connections(self, num: usize) -> Self
pub fn max_concurrent_connections(self, num: usize) -> Self
Sets the maximum per-worker number of concurrent connections.
All socket listeners will stop accepting connections when this limit is reached for each worker.
By default max connections is set to a 25k per worker.
sourcepub fn system_exit(self) -> Self
pub fn system_exit(self) -> Self
Sets flag to stop Actix System
after server shutdown.
This has no effect when server is running in a Tokio-only runtime.
sourcepub fn disable_signals(self) -> Self
pub fn disable_signals(self) -> Self
Disables OS signal handling.
sourcepub fn shutdown_timeout(self, sec: u64) -> Self
pub fn shutdown_timeout(self, sec: u64) -> Self
Timeout for graceful workers shutdown in seconds.
After receiving a stop signal, workers have this much time to finish serving requests. Workers still alive after the timeout are force dropped.
By default shutdown timeout sets to 30 seconds.
sourcepub fn bind<F, U, N>(self, name: N, addrs: U, factory: F) -> Result<Self>
pub fn bind<F, U, N>(self, name: N, addrs: U, factory: F) -> Result<Self>
Adds new service to the server.
Note that, if a DNS lookup is required, resolving hostnames is a blocking operation.
§Worker Count
The factory
will be instantiated multiple times in most scenarios. The number of
instantiations is number of workers
× number of sockets resolved by
addrs
.
For example, if you’ve manually set workers
to 2, and use 127.0.0.1
as the bind addrs
, then factory
will be instantiated twice. However, using localhost
as the bind addrs
can often resolve to both 127.0.0.1
(IPv4) and ::1
(IPv6), causing
the factory
to be instantiated 4 times (2 workers × 2 bind addresses).
Using a bind address of 0.0.0.0
, which signals to use all interfaces, may also multiple
the number of instantiations in a similar way.
§Errors
Returns an io::Error
if:
addrs
cannot be resolved into one or more socket addresses;- all the resolved socket addresses are already bound.
source§impl ServerBuilder
impl ServerBuilder
sourcepub fn listen_uds<F, N: AsRef<str>>(
self,
name: N,
lst: UnixListener,
factory: F,
) -> Result<Self>where
F: ServerServiceFactory<UnixStream>,
pub fn listen_uds<F, N: AsRef<str>>(
self,
name: N,
lst: UnixListener,
factory: F,
) -> Result<Self>where
F: ServerServiceFactory<UnixStream>,
Adds new service to the server using a UDS (unix domain socket) listener already bound.
Useful when running as a systemd service and a socket FD is acquired externally.
§Worker Count
The factory
will be instantiated multiple times in most scenarios. The number of
instantiations is: number of workers
.