Forum Discussion

royster_128009's avatar
royster_128009
Icon for Nimbostratus rankNimbostratus
Jan 26, 2004

Monitoring TPS from Proxies

Hello again.

 

 

We currently have a TPS level of 500 on our BIGIPs v4.5.9

 

 

I'm writing an iControl script to get some statistical infomation from the Active Proxies.

 

 

We'd like to know when were getting near our 500 TPS limit but am unsure as to which value to measure.

 

 

Currently using

 

ITCMLocalLB/Proxy -> get_proxy_statistics

 

 

Should I just take the total values from the

 

[...]

 

my $cur_conn = $conn_stats->{"current_connections"};

 

???

 

 

Or is there another way?

 

 

thanks

 

 

-

 

ryan
  • Currently we do not expose the TPS directly through iControl as it is a value measured as a rate and the statistics reported through iControl are snapshots in time.

     

     

    For licensing purposes, TPS, is defined as full SSL handshakes per second. This does not equate to the sum of all SSL proxy total connections over time because not only does the total connections include full handshakes, but also connections employing resumed connections.

     

     

    With that being said, currently the best option for SSL TPS measurements would be to sample the total connection counts across all SSL proxies ( (t2-t1)/timespan ). This would be a pessimistic estimate, but the closest that is currently exposed.

     

     

    Let us know how this goes for you. A script that monitors TPS would be a great addition to

     

    -Joe
  • Hi,

     

     

    Thanks for your post.

     

     

    Can you clarify

     

     

    "sample the total connection counts across all SSL proxies ( (t2-t1)/timespan )".

     

     

     

    Also when the BIGIP hits a TPS ceiling is any kind of log of the event made or does it just queue the request?

     

     

    thanks

     

    -ryan
  • You need to sum total connections across all Proxies and generate a rate over time. Here are the steps.

     

     

    1. Call ITCMLocalLB::Proxyget_all_proxy_statistics();

     

    2. Sum all total connections (for each of the proxies returned

     

    (ProxyStatisticsEntry[i].stats.connection_stats.total_connections). Call this value t1.

     

    3. Mark current time as timestamp 1 (ts1).

     

    4. Wait a desired time interval.

     

    5. Repeat 1 and 2, calling the new total connections t2.

     

    6. Mark current time as timestamp 2 (ts2)

     

    7. Calculate the rate of Transactions per Second as (t2-t1)/(ts2-ts1).

     

     

    This should give you a pessimistic view on TPS. As for behavior when the licensed level of TPS is reached. A log message will be generated when the license limit is reached and at certain intervals thereafter. Further connections requiring 3-way handshakes will be buffered to a limit, after that point they will no longer be accepted. The limit is dependent on several factors depending on runtime specifics. So, as long as the current TPS barely spikes above the licensed limit, connections should not be refused, but they can be if depending on the rate of new requests coming in.

     

     

    -Joe