Performance Tuning your Virtualize Server
For best performance when using a Virtualize server we recommend the following configurations
Always run your server in "Headless mode"
You can do this utilizing the soavirt.war deployable in a web server like tomcat or launching your Virtualize application with the virtualizecli executable
<VIRTUALIZE_HOME>virtualizecli.sh -startServer -data <WORKSPACE_LOCATION>
Disable Event Monitoring
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
We also want to make some changes to the server.xml file in TOMCAT_HOME/conf
Find this connector
<Connector URIEncoding="UTF-8" acceptCount="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 count to 2
Also towards the bottom of this same file you will fine the following
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false" />
Change this into:
<!--<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
Operating System Configurations:
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 used and discarded frequently.
You may need to tune tcp buffers. Based on your network configuration there are several sysctl parameters that can be modified. Refer to http://fasterdata.es.net/host-tuning/linux/ for more information.
Here is a checklist, taking the above topics in mind that you can refer to when debugging performance issues with Virtualize
- Turn off performance profiles and Additional delays in your Virtual assets
- Stop monitoring on all assets
- Turn off event monitoring and Hit statistics at the server level
- Verify MaxThreads is set appriopriatly in server.xml (See above).
- Turn off all logging on the server especially SSL debugging
- Is this on a specific asset? Are other assets performing like before?
- If you have any responders, or datasource rows that are unused can they be disabled or removed completely
- Enable caching on datasources. If not, then we are subject to file system read limitations
- Check for any scripts that the might be in the asset. If they are disabled does the issue go away?
- Are here any Network share drives hosting artifacts?
- Set the proper memory args and garbage collection options
o "-J-Xms4048m -J-Xmx4096m -J-server -J-XX:+UseConcMarkSweepGC -J-XX:+DisableExplicitGC -J-XX:+UseCompressedOops -J-XX:NewRatio=1"
- 9.9.5 has both xml and json support for hierarchical parameterization of literal messages "Parameterized Literal" we recommend switching to this view over Form when possible
- Does this reproduce with the same conditions on another server?
Always Separate Virtualize and Data Repository if Possible
If possible, separate Virtualize and Data Repository. This is important for "future proofing" your
deployment. This becomes especially important:
• When Virtualize and Data Repository eventually compete for resources.
• If bad data repository happens to bring down the machine hosting Data Repository. If Virtualize
and Data Repository are separated, this Data Repository failure won’t take the Virtualize
server down with it.