Forum Discussion

Hamish's avatar
Hamish
Icon for Cirrocumulus rankCirrocumulus
May 06, 2010

HSL Buffering? How to flush?

I have a small challenge with HSL today (On 10.1.0)... We have an iRule that's performing some measurements and we're sending the results to a server via a TCP connection using HSL. All well and good, it mostly works. Except we're missing some entries that were sent.

 

 

If I send the same content to both HSL and 'log local0.' then when I am testing and a run of test data finishes, then it seems that the last 2 lines in the logging are not sent to the log processor... (The log processor is a simple perl script reading the sockets directly via IO::Select and IO::Socket).

 

 

Trying to track down what's going wrong now, but does HSL buffer content? if so how do you force a flush?

 

 

(And how do you force the HSL to close and re-open a tcp connection? Sometimes I have to do a bigstart restart tmm to force a tcp connection to be re-opened as the pool sits there telling me it has 4x open connections even though the log server process has been restarted, and theres' NO packets being sent from the BigIP).

 

 

H

2 Replies

  • Hi Hamish, i'm having a similar issue. I would like to know how you fix it if you did. Thank you. Aurel
  • Hamish's avatar
    Hamish
    Icon for Cirrocumulus rankCirrocumulus

    That brings back a few memories... There were a few bugs in the early versions of 10.x with regards to HSL... Upgrading to a later version (I think we went to 10.2.1 IIRC) resolved most of the issues.

     

    There were a few other issues. Mainly around the way in which HSL is implemented.

     

    1. I believe that there is no buffering. If buffering would be required, then HSL opens another connection.
    2. There is no attempt to deliver HSL messages in order. Nor can you guarantee that two consecutive messages from the same thread will be delivered to the same HSL connection.

    As I was after generating traffic stats more than being interested in individual messages, I ended up using tables to keep some of the stats for each connection and delivering them on a timer... That ramped up my performance considerably...

     

    H