Dimensioning¶
Server Scaling and Dimensioning is one of the hardest parts of ViciDial. The biggest consideration is that the telephony portion of ViciDial does not scale vertically much past a modern quad-core CPU. Due to locking issues in the core of Asterisk there is a very high likelihood that Asterisk will deadlock or hang up once the channel load goes above 300 channels. In asterisk, a channel is any connection between the core and any other module or endpoint. An agent logging in creates one channel in Asterisk for their phone connection. The conference room for that same agent also uses a channel in asterisk. Every call placed in Asterisk also creates its own channel. At any one time a single agent can be using up to 6 channels. This is why the recommendation is to have 25 agents and 125 trunks per Telephony server.
The web server using the recommended hardware spec can support up to 150-agents in most scenarios. The limitation on the web server will usually be a port-exhaustion issue within the TCP stack itself. Until that point is reached though you can generally scale the web server vertically by adding more memory or bigger CPUs depending upon your load.
The limitation on the database server usually happens somewhere between 300-500 agents. The problem is a single-threaded locking issue related to memory tables in MySQL. There is no real way to address this issue other then to try faster CPUs and Memory. Even then it’s all generally going to be single-digit percentile gains at that point. The suggestion is to look at splitting your cluster into multiple smaller clusters once this limit is reached.