OPTIMIZATION
VSP-WEB PERFORMANCE TUNING
VSP-Web can be deployed on customer applications that may have different throughput and scale requirements. VSP-Web provides various configuration knobs that can be configured to cater to these requirements.
Configuration knobs provided by VSP are:
-
vIPC Queue Size
-
Number of vRule Worker Thread
vIPC QUEUE SIZE CONFIGURATION
vIPC queue is a shared memory queue that is used to exchange data plane messages. A queue is created as per application process requirements. In case the configured application creates many ephemeral processes, then it is optimal to reduce the vIPC data queue size.
-
Default data queue size is set to 26 MB in one direction. This means that 10 application processes would consume 520 MB RAM (including both directions)
-
However, if the application creates hundreds of ephemeral processes, then the memory allocated for vIPC queues will exceed 520 MB. In these scenarios, it is optimal to reduce the value of the parameter dataQueueSize to ensure a reasonable memory consumption. For example, if there are 100 application processes, this value must be modified to 5MB to keep the total memory consumed under 500MB.
-
In cases of Apache/Ngnix servers where processes are spun up in large numbers, the default data queue size of 26 MB can be reduced to a lower value (Example: 5 MB). This configuration can be applied to all processes. Configuration of this parameter is required for PHP processes
-
In cases where the maximum number of processes spun up by a web server is configured to be 100 or more, then the default data queue size of 26 MB can be reduced to a lower value like 5 MB
-
-
Configure the vIPC queue size using the parameter dataQueueSize using the below command:
-
vsp-cli config vIPC-server edit dataQueueSize <desired_size_in_bytes>
-
-
The command top provides the memory consumed by each process. If the resident memory of the vIPC-server goes beyond 512 MB during a load condition, then it is an indication that vIPC queue needs resizing. It is suggested to reduce it by 50% for each iteration. This procedure must be repeated as many times as necessary to limit the vIPC memory consumption to a reasonable amount
-
Typically, vIPC queue size adjustment is done along with vRule worker thread adjustment (Refer vRule Engine Worker Thread)