For best performance when using a Virtualize server, we recommend the following configurations:
You can do this utilizing the soavirt.war deployable in a web server like Tomcat or launching your Virtualize application with the virtualizecli executable.
Example:
virtualizecli.sh -startServer -data <WORKSPACE_LOCATION> |
Always stop monitoring Virtual Assets—both on the server and on all workstations—before starting a load test.
You can also completely disable monitoring as follows:
This can also be done from the Continuous Testing Platforms Servers Page for headless deployments.
For best performance with Virtualize, set the following system properties and make a few modifications to the Tomcat’s server.xml.
Set JVM properties on start-up to increase the heap memory (at least 4gb) and change the garbage collector.
For Virtualizecli:
virtualizecli.sh -startServer -data <WORKSPACE_LOCATION> -J-Xms2048m -J-Xmx4096m -J-server -J-XX:+UseConcMarkSweepGC -J-XX:+DisableExplicitGC -J-XX:+UseCompressedOops -J-XX:NewRatio=1 |
For WAR deployment (configured in the <TOMCAT_HOME>/bin/setenv file):
JAVA_OPTS=-Xms2048m -Xmx4096m -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseCompressedOops -XX:NewRatio=1 |
Configuring server.xml
<TOMCAT_HOME>/conf
folder. The default connector port is 9080 for virtualizecli and 8080 for a WAR deployed in Tomcat.acceptorThreadCount, enableLookups,and maxThreads
attributes as shown in the following:Example:
<Connector URIEncoding="UTF-8" acceptorThreadCount="2" connectionTimeout="20000" enableLookups="false" maxThreads="750" name="default" port="9080" protocol="HTTP/1.1" redirectPort="9443" server="Parasoft Server"/> |
This tells Tomcat to keep a processing thread pool of 750 threads. It also sets the acceptor thread count to 2 and disables DNS lookups.
Locate the Valve element toward the bottom of the file.
Comment out the Valve element as shown in the following:
Example:
<!--<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false" /> --> |
This will stop Tomcat from filling up the log location with logging information every time the server is hit.
If using Windows, there are some parameters you can tune in the Registry:
Navigate to the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters |
This will increase the number of allowed concurrent TCP connections in Windows (MaxUserPort), and reduce the amount of time that an unused TCP port is reserved before it can be reused (TcpTimedWaitDelay).
It may be necessary to tune your Linux server for high throughput. The following are some system settings that could be helpful. These should be applied to Virtualize and the load generation tool.
ulimit -u 4096 |
Sets the maximum number of processes available for a single user. This is important because java threads are processes and having this number too low could result in the inability to spawn new threads.
sysctl -w net.ipv4.tcp_tw_reuse=1 sysctl -w net.ipv4.tcp_tw_recycle=1 |
These allow the operating system to quickly reuse and recycle network sockets. This is important while under heavy load as sockets can be used and discarded frequently.
sysctl.conf |
You may need to tune tcp buffers. Several sysctl parameters can be modified based on your network configuration. Refer to Linux Tuning documentation for more information.
It is recommended to minimize the network latency between a Virtualize server and a Data Repository server as much as possible. Network latency between the processes can negatively impact the performance of the Virtualize server under load, and the most common way users accomplish this is by installing them on the same machine, or two machines that are co-located as much as possible (for example, same data center region). The Data Repository server can consume a large amount of memory, so when installing it on the same machine as a Virtualize server, it is advised that the machine have at least 32GB RAM (see Deployment Recommendations).