Software / code / prosody-modules
Comparison
mod_limits/README.markdown @ 1803:4d73a1a6ba68
Convert all wiki pages to Markdown
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 28 Aug 2015 18:03:58 +0200 |
| parent | 1782:mod_limits/README.wiki@29f3d6b7ad16 |
| child | 1820:8de50be756e5 |
comparison
equal
deleted
inserted
replaced
| 1802:0ab737feada6 | 1803:4d73a1a6ba68 |
|---|---|
| 1 --- | |
| 2 labels: | |
| 3 - 'Stage-Beta' | |
| 4 summary: 'Connection-level rate limiting' | |
| 5 ... | |
| 6 | |
| 7 Introduction | |
| 8 ============ | |
| 9 | |
| 10 On some servers, especially public ones, it is desired to make sure that | |
| 11 everyone gets their fair share of system resources (and no more). | |
| 12 | |
| 13 mod\_limits allows you to specify traffic bandwidth limits, preventing | |
| 14 any single connection hogging the server's CPU, RAM and bandwidth. | |
| 15 | |
| 16 Details | |
| 17 ======= | |
| 18 | |
| 19 mod\_limits detects when a connection has exceeded its traffic allowance | |
| 20 and temporarily ignores a connection. Due to the way TCP and the OS's | |
| 21 network API works no data is lost, only slowed. | |
| 22 | |
| 23 Configuration | |
| 24 ============= | |
| 25 | |
| 26 Currently mod\_limits is configured per connection type. The possible | |
| 27 connection types are: | |
| 28 | |
| 29 - c2s | |
| 30 - s2sin | |
| 31 - s2sout | |
| 32 - component | |
| 33 | |
| 34 The limits are specified like so in the **global** section of your | |
| 35 config (they cannot be per-host): | |
| 36 | |
| 37 limits = { | |
| 38 c2s = { | |
| 39 rate = "3kb/s"; | |
| 40 burst = "2s"; | |
| 41 }; | |
| 42 s2sin = { | |
| 43 rate = "10kb/s"; | |
| 44 burst = "5s"; | |
| 45 }; | |
| 46 } | |
| 47 | |
| 48 All units are in terms of *bytes*, not *bits*, so that "kb/s" is | |
| 49 interpreted as "kilobytes per second", where a kilobyte is 1000 bytes. | |
| 50 | |
| 51 Compatibility | |
| 52 ============= | |
| 53 | |
| 54 ----- ------------------- | |
| 55 0.9 Works | |
| 56 0.8 Doesn't work(`*`) | |
| 57 ----- ------------------- | |
| 58 | |
| 59 (`*`) This module can be made to work in 0.8 if you do two things: | |
| 60 | |
| 61 1. Install | |
| 62 [util.throttle](http://hg.prosody.im/0.9/raw-file/d46948d3018a/util/throttle.lua) | |
| 63 into your Prosody source's util/ directory. | |
| 64 2. If you use libevent apply [this | |
| 65 patch](http://prosody.im/patches/prosody08-mod-limits-fix.patch) to | |
| 66 net/server\_event.lua. |