| <?xml version="1.0"?> | |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> | |
| <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?> | |
| <!-- $LastChangedRevision$ --> | |
| <!-- | |
| Licensed to the Apache Software Foundation (ASF) under one or more | |
| contributor license agreements. See the NOTICE file distributed with | |
| this work for additional information regarding copyright ownership. | |
| The ASF licenses this file to You under the Apache License, Version 2.0 | |
| (the "License"); you may not use this file except in compliance with | |
| the License. You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| --> | |
| <!--<modulesynopsis> is the root tag and must surround all other tags. | |
| The sequence of tags is important and must be followed in order for | |
| the document to validate. --> | |
| <modulesynopsis metafile="mod_ratelimit.xml.meta"> | |
| <name>mod_ratelimit</name> | |
| <description>Bandwidth Rate Limiting for Clients</description> | |
| <status>Extension</status> | |
| <sourcefile>mod_ratelimit.c</sourcefile> | |
| <identifier>ratelimit_module</identifier> | |
| <compatibility> | |
| <code>rate-initial-burst</code> available in httpd 2.4.24 and later. | |
| Rate limiting proxied content does not work correctly up to httpd 2.4.33. | |
| </compatibility> | |
| <summary> | |
| <p>Provides a filter named <code>RATE_LIMIT</code> to limit client bandwidth. | |
| The throttling is applied to each HTTP response while it is transferred to the client, | |
| and not aggregated at IP/client level. | |
| The connection speed to be simulated is specified, in KiB/s, using the environment | |
| variable <code>rate-limit</code>.</p> | |
| <p>Optionally, an initial amount of burst data, in KiB, may be | |
| configured to be passed at full speed before throttling to the | |
| specified rate limit. This value is optional, and is set using | |
| the environment variable <code>rate-initial-burst</code>.</p> | |
| <note type="warning"><title>Resource consumption</title> | |
| <p>Rate limiting is implemented by sleeping between writes to the client, | |
| so each rate-limited response occupies a server thread (or process) for | |
| the entire, deliberately prolonged, duration of the transfer. This applies | |
| to all MPMs, including <module>event</module>. A modest number of slow, | |
| rate-limited downloads can exhaust the server's available workers and | |
| prevent other requests from being served. Use this module with caution, | |
| limit it to the resources that need it, and size | |
| <directive module="mpm_common">MaxRequestWorkers</directive> accordingly.</p> | |
| </note> | |
| <example><title>Example Configuration</title> | |
| <highlight language="config"> | |
| <Location "/downloads"> | |
| SetOutputFilter RATE_LIMIT | |
| SetEnv rate-limit 400 | |
| SetEnv rate-initial-burst 512 | |
| </Location> | |
| </highlight> | |
| <note type="warning"> | |
| If the value specified for <code>rate-limit</code> causes integer overflow, the rate-limited will be disabled. | |
| If the value specified for <code>rate-limit-burst</code> causes integer overflow, the burst will be disabled. | |
| </note> | |
| </example> | |
| </summary> | |
| </modulesynopsis> |