Mercurial > prosody-modules
view mod_limits/README.markdown @ 4362:116c88c28532
mod_http_admin_api: restructure group-related info in API
- Return the members of the group right in the get_group_by_id
call. This is an O(1) of extra work.
- Remove the groups attribute from get_user_by_name as that is
O(n) of work and rarely immediately needed.
The replacement for the group membership information in the user
is for now to use the group API and iterate; future work may fix
that.
| author | Jonas Schäfer <jonas@wielicki.name> |
|---|---|
| date | Wed, 20 Jan 2021 15:30:29 +0100 |
| parents | 8de50be756e5 |
| children | b935276ab1b4 |
line wrap: on
line source
--- labels: - 'Stage-Beta' summary: 'Connection-level rate limiting' ... Introduction ============ On some servers, especially public ones, it is desired to make sure that everyone gets their fair share of system resources (and no more). mod\_limits allows you to specify traffic bandwidth limits, preventing any single connection hogging the server's CPU, RAM and bandwidth. Details ======= mod\_limits detects when a connection has exceeded its traffic allowance and temporarily ignores a connection. Due to the way TCP and the OS's network API works no data is lost, only slowed. Configuration ============= Currently mod\_limits is configured per connection type. The possible connection types are: - c2s - s2sin - s2sout - component The limits are specified like so in the **global** section of your config (they cannot be per-host): ``` {.lua} limits = { c2s = { rate = "3kb/s"; burst = "2s"; }; s2sin = { rate = "10kb/s"; burst = "5s"; }; } ``` All units are in terms of *bytes*, not *bits*, so that "kb/s" is interpreted as "kilobytes per second", where a kilobyte is 1000 bytes. Compatibility ============= ----- ------------------- 0.9 Works 0.8 Doesn't work(\*) ----- ------------------- (\*) This module can be made to work in 0.8 if you do two things: 1. Install [util.throttle](http://hg.prosody.im/0.9/raw-file/d46948d3018a/util/throttle.lua) into your Prosody source's util/ directory. 2. If you use libevent apply [this patch](http://prosody.im/patches/prosody08-mod-limits-fix.patch) to net/server\_event.lua.
