性能调整清单

  1. 关闭服务器级别的事件监控和命中统计。(请参阅禁用事件监控和命中统计。)
  2. 配置 Tomcat 连接器设置。(请参阅 Tomcat 配置。)
  3. 将日志级别设置为 INFO,并禁用 JVM 级别的调试日志,例如 SSL 调试。
  4. 启用数据源缓存。否则,数据源将受到文件系统读取限制的影响。
  5. 增加 JVM 堆内存并应用垃圾回收选项。(请参阅配置系统属性
  6. 尽可能使用字面量视图而不是表单视图。字面量视图支持分层参数化。

最佳性能配置

使用 Virtualize 服务器时,为获得最佳性能,我们建议采用以下配置:

始终在“无头模式”下运行服务器

您可以通过在 Tomcat 等 web 服务器中部署 soavirt.war 或使用 virtualizecli 可执行文件启动 Virtualize 应用程序来实现这一目的。

示例:

virtualizecli.sh -startServer -data <WORKSPACE_LOCATION>

禁用事件监控和命中统计

应始终在负载测试开始前停止监控虚拟资产(包括服务器和所有工作站上的虚拟资产)。
您可以按照以下方式彻底禁用监控:

  1. 在 Virtualize 服务器视图中,双击相应的服务器节点。
  2. 在服务器配置选项卡中,取消勾选启用事件监控服务启用统计数据收集服务复选框并保存。
  3. 停止并重启服务器。

也可在持续测试平台服务器页面执行相应操作来进行无头部署。

Tomcat 配置

为使 Virtualize 达到最佳性能,需设置以下系统属性并对 Tomcat 的 server.xml 完成少许修改。

配置系统属性

在启动时设置 JVM 属性,以增加堆内存(至少 4GB)并更改垃圾回收器。

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

WAR 部署(配置在 <TOMCAT_HOME>/bin/setenv 文件中):

JAVA_OPTS=-Xms2048m -Xmx4096m -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseCompressedOops -XX:NewRatio=1

配置 server.xml

  1. 在位于 <TOMCAT_HOME>/conf 文件夹下的 server.xml 文件中找到 HTTP Connector 元素。virtualizecli 的默认连接器端口是 9080,部署在 Tomcat 中的 WAR 默认连接器端口是 8080。
  2. 添加/更新 acceptorThreadCount、enableLookups 和 maxThreads 属性,如下所示:

    示例:

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

    这会告诉 Tomcat 保持一个 750 个线程的处理线程池。它还会将接收器线程数设置为 2,并禁用 DNS 查找。

  3. 在文件底部找到 Valve 元素。

  4. 注释掉 Valve 元素,如下所示:
    示例:

    <!--<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false" /> -->

这能够防止 Tomcat 在服务器每次被访问时都在日志位置记录大量日志信息。

操作系统配置

Windows

如果使用的是 Windows 系统,您可以在注册表中调整一些参数:

  1. 点击开始 > 运行 > regedit
  2. 找到以下注册表项: 

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. 右键点击 Parameters,选择新建 > DWORD
  4. 将该值命名为“MaxUserPort”,并将值数据更新为“7FA6”(十六进制)或“32678”(十进制)。
  5. 右键点击 Parameters,选择新建 > DWORD
  6. 将该值命名为“TcpTimedWaitDelay”,并将值数据更新为“1E”(十六进制)或“30”(十进制)。
  7. 重启计算机,使更改生效。

这将增加 Windows 中允许的 TCP 并发连接数(MaxUserPort),并减少未使用的 TCP 端口在重新使用前的保留时间(TcpTimedWaitDelay)。

Linux

可能有必要调整 Linux 服务器以获得高吞吐量。以下是一些可能有用的系统设置。这些设置适用于 Virtualize 和负载生成工具。

ulimit -u 4096

设置单个用户可使用的最大进程数。这一设置十分重要,因为 java 线程是进程,进程数过低可能导致无法生成新线程。

sysctl -w net.ipv4.tcp_tw_reuse=1  
sysctl -w net.ipv4.tcp_tw_recycle=1

以上设置使操作系统能够快速重复使用和回收网络套接字。这一设置在高负载情况下十分重要,因为套接字可能会被频繁使用和丢弃。

sysctl.conf

您可能需要调整 tcp 缓冲区。可以根据网络配置修改多个 sysctl 参数。更多信息,请参阅 Linux Tuning 文档。

Virtualize 和数据资源库部署

建议尽可能减少 Virtualize 服务器和数据资源库服务器之间的网络延迟。进程之间的网络延迟会对负载情况下 Virtualize 服务器的性能产生负面影响,用户最常用的方法是将它们安装在同一台机器上,或尽可能安装在同一地点的两台机器上(例如,同一数据中心区域)。数据资源库服务器可能会消耗大量内存,因此将其安装在与 Virtualize 服务器相同的机器上时,建议该机器至少有 32GB RAM(请参阅 部署建议)。

故障排查清单 

  1. 关闭虚拟资产中的性能配置文件和附加延迟。
  2. 该问题是否与特定资产有关?其他资产的性能是否和之前一样?
  3. 如果有未使用的响应器或数据源行,是否可以禁用或彻底删除?
  4. 检查资产中可能存在的任何脚本。如果禁用这些脚本,问题是否得以解决?
  5. 是否存在任何网络共享驱动托管工件?
  6. 该问题在另一台服务器上是否以同样的条件重现?
  • No labels