first of all thank you for mod_qos, looks really interesting and might just be the module I am searching for. However, I have some question before adding this module to our server. Our server handles quite a lot of load and reaches its limit with about 12000 connections per minute. From this point on, all Apache threads are busy and the response time for the site gets slower. Also, I cannot reach the HTTPS pages on our server.
First question - can I configure mod_qos that it prefers HTTPS traffic over HTTP traffic so that all HTTPS requests are served?
My second questions deals with memory consumption. It seems that you have a list of IP adresses in memory to check how many pages a client has already requested. Also, with a lot of options that your module offers I think this should also need a lot of memory. Do you have any numbers on that, e.g. how much memory is needed for mod_qos per Apache thread? What are the configuration options that use the most memory and how can I optionally disable them?
Thank you for your answer!
Best regards,
Jonas
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Since you may use two separate virtual hosts (one on port 80 and one on port 443), you should defined the mod_qos rules on a global server level in order to share the same counters within the two servers. You may define a general request limitation using the QS_LocRequestLimitDefault directive (define the max. number of HTTP requests) and than define requests on the HTTPS server as "privileged" ones, e.g. specify the directive "SetEnvIf Request_URI / QS_VipRequest=yes" within the virtual host serving HTTPS requests.
The module requires memory on a per process basis only. The more rules you define per host, the more bytes the module needs. It does not need more memory with an increasing number of requests. The memory consumption on a per client basis is controlled by the QS_ClientEntries directive. Each client requires about 48 bytes of shared memory on a 32bit system or 96 bytes on a 64bit system respectively. But you have to one of the QS_Client* directive to activate the per client ip store.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
first of all thank you for mod_qos, looks really interesting and might just be the module I am searching for. However, I have some question before adding this module to our server. Our server handles quite a lot of load and reaches its limit with about 12000 connections per minute. From this point on, all Apache threads are busy and the response time for the site gets slower. Also, I cannot reach the HTTPS pages on our server.
First question - can I configure mod_qos that it prefers HTTPS traffic over HTTP traffic so that all HTTPS requests are served?
My second questions deals with memory consumption. It seems that you have a list of IP adresses in memory to check how many pages a client has already requested. Also, with a lot of options that your module offers I think this should also need a lot of memory. Do you have any numbers on that, e.g. how much memory is needed for mod_qos per Apache thread? What are the configuration options that use the most memory and how can I optionally disable them?
Thank you for your answer!
Best regards,
Jonas
Since you may use two separate virtual hosts (one on port 80 and one on port 443), you should defined the mod_qos rules on a global server level in order to share the same counters within the two servers. You may define a general request limitation using the QS_LocRequestLimitDefault directive (define the max. number of HTTP requests) and than define requests on the HTTPS server as "privileged" ones, e.g. specify the directive "SetEnvIf Request_URI / QS_VipRequest=yes" within the virtual host serving HTTPS requests.
The module requires memory on a per process basis only. The more rules you define per host, the more bytes the module needs. It does not need more memory with an increasing number of requests. The memory consumption on a per client basis is controlled by the QS_ClientEntries directive. Each client requires about 48 bytes of shared memory on a 32bit system or 96 bytes on a 64bit system respectively. But you have to one of the QS_Client* directive to activate the per client ip store.