Forum Discussion
Performance of datagroup vs. session subtable lookup
Environment: 10.2.2 HF1 on 6900's
I have a VS that gets about a billion and a half hits per year. This is a highly structured environment where every application URL hosted follows a strict set of guidelines. The first subfield in the URI is going to dictate the pool selection for the request. Users may heavily use 1 to N applications on this environment, and bounce around between them at will.
So I have a datagroup that maps my list of available subfields to pools. The basic question I have is: given my number of requests, would it be more efficient to query the data group on each request to make a pool selection, or to essentially store the datagroup in a session subtable? I have to parse the URI on every request to see what I am dealing with; the question comes in when I have to look up the necessary pool. If I don't find that subfield in session, I can go to the datagroup to get it and then store it in session; would this be more performant than querying the data group every single time? Requests will obviously often not change that subfield as users are working with a particular application; but nothing is going to prevent them from hopping around to any of the 500+ applications I have out in this environment.
Been working with the timing command, but thought I would check here also :)
Thanks,
Jen
9 Replies
- spark_86682Historic F5 AccountThe datagroup will almost definitely be faster. Because they are read-only (at least from iRules' perspective), each tmm will have its own copy of the contents of the datagroup, so all the data is "right there". Entries in the session table are often stored on a different tmm than the tmm which queries for that entry, so it has to send the request to the owning tmm and wait for a response.
- dubdub
Nimbostratus
Hi Spark,
Thanks for the info, that makes complete sense - plus, it has the added benefit of making the iRule much easier to read (and thus maintain). I appreciate it!
Thanks,
Jen - nitass
Employee
hi spark,
Entries in the session table are often stored on a different tmm than the tmm which queries for that entry, so it has to send the request to the owning tmm and wait for a response.is "session table" table command? is table entry not copied to all tmm?
thanks! - spark_86682Historic F5 AccountYes, the table command is how iRules accesses the session table. Table entries are not copied to all tmms, no. Each entry usually resides on one tmm.
- nitass
Employee
Table entries are not copied to all tmms, no. Each entry usually resides on one tmm.thanks but all table entries do not have to reside on one tmm (it is not like subtable entries), do they? - spark_86682Historic F5 AccountTable entries are distributed across all TMMs, yes. Subtables are as well (meaning, subtable "foo" might be on a different TMM than subtable "bar"), but all entries in a subtable are on the same TMM, as you correctly state.
- nitass
Employee
thanks as usual, spark!
just a quick simple question, in case of viprion using within-chassis mirroring, is table entry synchronized to other blade? i mean when blade is down, is that table entry still available? - spark_86682Historic F5 AccountYes, when using intra-cluster mirroring, session table entries are mirrored to other blades.
- nitass
Employee
thanks spark!
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com