FairCom Server uses a two-dimensional array to track the wait-for relationships of locks, so that deadlocks can be detected and avoided. This array uses four bytes times the maximum number of connections squared. This means that a 32000 connection server uses 4 * 32000 * 32000 bytes for this array, which is over 4GB.
A redesign of the logic has substantially reduced memory usage. Here are some example memory use figures:
Connections Original Optimized
Memory Use Memory Use
1024 577 MB 573 MB
8192 839 MB 640 MB
32000 4595 MB 1585 MB