Jump to content

Mod qos

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 77.56.210.67 (talk) at 22:08, 8 September 2007. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

mod_qos is a Quality of Service (QoS) module for the Apache HTTP server implementing control mechanisms that can provide different priority to different requests.

A web server can only serve a limited number of concurrent requests. QoS is used to ensure that important resources stay available under high server load. mod_qos is used to reject requests to unimportant resources while granting access to more important applications. It is also possible to disable access restrictions, e.g. for requests to very important resources or for very important users.

Control mechanisms are available on two levels:

  • Request level control: mod_qos controls the number of concurrent requests to a name space (URL). It is used to define different priorities to different pages or applications within a web server.
  • Connection level control: mod_qos controls the number of TCP connections to the web server. This helps to limit the connections coming from a single client, to reduce the maximum of concurrent connections to a virtual server or to implement dynamic HTTP keep-alive settings.
  • Bandwidth level control: throttles requests/responses to certain URL on the web server.

The module can be useful when used in a reverse proxy in order to divide up resources to different webserver but also to prevent denial-of-service attack.

Use Cases

Slow Application

The first use case shows how mod_qos can avoid service outage of a web server due slow responses of a single application. In case an application (here /ccc) is very slow, requests wait until a timeout occurs. Due many waiting requests, the number of free TCP connections goes out and the web sever is not able to process other requests to application /aaa or /bbb. mod_qos limits the concurrent requests to an application in order to assure the availability of other resources.

HTTP Keep-Alive

The keep-alive extension to HTTP 1.1 allows persistent TCP connections for multiple request/responses. This accelerate access to the web server due less and optimised network traffic. The disadvantage of these persistent connections is, that server resources are blocked even no data is exchanged between client an server. mod_qos allows a server to support keep-alive as long as sufficient connections are free but stopping the keep-alive support when reaching a defined connection threshold.

Client Opens Many Concurrent Connections

A single client may open many TCP connections simultaneously in order to download different content from the web server. So the client gets many connections while other users may not be able accessing the server due no free connections remain for them. mod_qos can limit the number of concurrent connections for a singe IP source address.

Many Requests to a Single URL

If you have to limit the number of requests to an URL, mod_qos can help with that too. mod_qos limits the maximum number of requests per second to this URL by adding an additional delay to requests to this URL.