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:
<VIRTUALIZE_HOME>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:
1. In the Virtualize Server view, double-click the Local Machine node.
2. Clear “Launch event reporting when server starts” checkbox and save.
3. Stop and re-start the server.
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 tweaks to tomcat’s server.xml.
Set some jvm properties to give increased memory (at least 4gb) and to use a different garbage collector. Typically you would set this in the TOMCAT_HOME/bin/setenv file.
$JAVA_OPTS=-Xms2048m -Xmx4096m -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseCompressedOops -XX:NewRatio=1 |
You also want to make some changes to the server.xml file in TOMCAT_HOME/conf.
<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.
Also towards the bottom of this same file, you will find the following:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false" /> |
<!--<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false" /> --> |
Basically, comment out the valve. 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:
1. Click Start > run > regedit.
2. Browse to HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > services > Tcpip > Parameters and set the MaxUserPort to 7FA6 (32678 decimal).
3. Reduce the TcpTimedWaitDelay to 1E (30 decimal).
4. Restart the machine for changes to take effect.
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. Important since java threads are processes, 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. Based on your network configuration there are several sysctl parameters that can be modified. Refer to Linux Tuning documentation for more information.
If possible, separate your Virtualize and Data Repository. This is important for future-proofing your deployment. This becomes especially important:
If Virtualize and Data Repository are separated, this Data Repository failure won’t take the Virtualize server down with it.