Performance Tuning Checklist

  1. Turn off performance profiles and Additional delays in your Virtual assets.
  2. Turn off event monitoring and Hit statistics at the server level.
  3. Verify MaxThreads is set appropriately in server.xml. (See above).
  4. Turn off all logging on the server especially SSL debugging.
  5. Is this on a specific asset? Are other assets performing like before?
  6. If you have any responders or data source rows that are unused can they be disabled or removed completely.
  7. Enable caching on data sources. If not, then we are subject to file system read limitations.
  8. Check for any scripts that might be in the asset. If they are disabled does the issue go away?
  9. Are there any Network share drives hosting artifacts?
  10. 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"
  11. 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.
  12. Does this reproduce with the same conditions on another server?

Configurations for Best Performance

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

Example:

<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.

Tomcat Configurations

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.

Find This Connector

<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" />

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

Windows

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).

Linux

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.

Always Separate Virtualize and Data Repository if Possible

If possible, separate your 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, in the Data Repository, happens to bring down the machine hosting the Data Repository.

If Virtualize and Data Repository are separated, this Data Repository failure won’t take the Virtualize server down with it.

  • No labels