The Hub assigns each visitor a unique session number, and that session number is visible in the URL and/or in a cookie. Uniqueness is enforced relative to a time period which is set by the administrator, defaulting to 24 hours and often shortened to 30 minutes. Within that time period, each new visitor is given a unique number. The administrator also sets the number of digits in the session number (between 4 and 10, inclusive), and this factors into the size of the pool of session numbers. A higher number of digits gives more unique numbers.
The session data is stored in memory in an object named "Session" plus the session number, such as "Session12345". This data is streamed to disk using Delphi's component-write streaming, which is highly optimized. The programmer decides how many session objects to retain in memory at any one point in time. The default is 300.
When there are multiple instances of a WebHub application running, and visitors are not being routed to the same instance each time (i.e. the cgiUseHandle property is false), the session data can be shared across those instances because each loads the data from disk as needed. This type of sharing is enabled by setting two properties, ShareByFile and ShareSessions, both to true.
There is some disk i/o and other overhead in creating a new session, relative to reusing an existing one. Therefore when stress testing WebHub systems, it is important to consciously test (a) all new, (b) all active, or (c) a mixture of active and new session numbers.