Hi HAProxy Team, We are using haproxy 1.5.2 as a load balancer for our solution.
[root@ABCD000 ~]# haproxy -version HA-Proxy version 1.5.2 2014/07/12 Copyright 2000-2014 Willy Tarreau [email protected]<mailto:[email protected]> We are using the rate limiting configuration to handle 40 request per second from one source. For that we had stored the gpc0_rate in the corresponding stick-table for 1second. In one of our environment, which was idle/inactive for 4 weeks, we found that the gpc0_rate in the stick table has the value of 1539412. See below query on the stick table. [root@ABCD000 ~]# echo "show table vnfm_nfvo_and_ops_rate" | socat unix:/var/run/haproxy.stat - # table: vnfm_nfvo_and_ops_rate, type: integer, size:10, used:1 0x1bdd25c: key=1 use=0 exp=0 gpc0_rate(1000)=1539412 And this gpc0_rate was reduced by 1 count every second. Our configuration is like below: (only relevant part from haproxy.conf) backend rate_limit_abcd mode http # dummy backend with a stick-table backend abcd_rate stick-table type integer size 10 store gpc0_rate(1s) frontend abcd_xyz id 202 mode http bind <ip_address>:<port> # rate limiting acl request_limit_reached sc0_gpc0_rate(abcd_rate) gt 40 acl request_rate_update sc0_inc_gpc0(abcd_rate) gt 0 tcp-request content track-sc0 always_true table abcd_rate use_backend backend_abcd_rest if !request_limit_reached request_rate_update default_backend rate_limit_abcd backend backend_vnfm_rest mode http Our question is: 1. Since the environment was idle and inactive, how can the gpc0_rate reached to this figure of 1622490? 2. In our investigating scenarios, when we modified the configuration to store gps0_rate for 50sec and updated acl condition to allow 4 request per 50 sec, gpc0_rate reached till 5. Irrespective how many request we send the gpc0_rate counter never reached to value more than 5. Can there be any race condition or attribute overflow which can cause this problem? (see below updated configuration for investigation) backend rate_limit_abcd mode http # dummy backend with a stick-table backend abcd_rate stick-table type integer size 10 store gpc0_rate(50s) frontend abcd_xyz id 202 mode http bind <ip_address>:<port> # rate limiting acl request_limit_reached sc0_gpc0_rate(abcd_rate) gt 4 acl request_rate_update sc0_inc_gpc0(abcd_rate) gt 0 tcp-request content track-sc0 always_true table abcd_rate use_backend backend_abcd_rest if !request_limit_reached request_rate_update default_backend rate_limit_abcd backend backend_vnfm_rest mode http 3. What are all possible ways to update this counter? What is logic to update it via haproxy configuration? How haproxy determine the value of this counter for configured time period which in our case is 1 sec? 4. Does haproxy logs the change in this counter in any log file? Is there a way to log the change in this counter? Regards, Saurabh ________________________________ The information transmitted herein is intended only for the person or entity to which it is addressed and may contain confidential, proprietary and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer.

