性能调整清单
- 关闭服务器级别的事件监控和命中统计。(请参阅禁用事件监控和命中统计。)
- 配置 Tomcat 连接器设置。(请参阅 Tomcat 配置。)
- 将日志级别设置为 INFO,并禁用 JVM 级别的调试日志,例如 SSL 调试。
- 启用数据源缓存。否则,数据源将受到文件系统读取限制的影响。
- 增加 JVM 堆内存并应用垃圾回收选项。(请参阅配置系统属性)
- 尽可能使用字面量视图而不是表单视图。字面量视图支持分层参数化。
最佳性能配置
使用 Virtualize 服务器时,为获得最佳性能,我们建议采用以下配置:
始终在“无头模式”下运行服务器
您可以通过在 Tomcat 等 web 服务器中部署 soavirt.war 或使用 virtualizecli 可执行文件启动 Virtualize 应用程序来实现这一目的。
示例:
virtualizecli.sh -startServer -data <WORKSPACE_LOCATION>
禁用事件监控和命中统计
应始终在负载测试开始前停止监控虚拟资产(包括服务器和所有工作站上的虚拟资产)。
您可以按照以下方式彻底禁用监控:
- 在 Virtualize 服务器视图中,双击相应的服务器节点。
- 在服务器配置选项卡中,取消勾选启用事件监控服务和启用统计数据收集服务复选框并保存。
- 停止并重启服务器。
也可在持续测试平台服务器页面执行相应操作来进行无头部署。
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
- 在位于
<TOMCAT_HOME>/conf
文件夹下的 server.xml 文件中找到 HTTP Connector 元素。virtualizecli 的默认连接器端口是 9080,部署在 Tomcat 中的 WAR 默认连接器端口是 8080。 - 添加/更新
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 查找。
在文件底部找到 Valve 元素。
注释掉 Valve 元素,如下所示:
示例:<!--<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false" /> -->
这能够防止 Tomcat 在服务器每次被访问时都在日志位置记录大量日志信息。
操作系统配置
Windows
如果使用的是 Windows 系统,您可以在注册表中调整一些参数:
- 点击开始 > 运行 > regedit。
找到以下注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
- 右键点击 Parameters,选择新建 > DWORD。
- 将该值命名为“MaxUserPort”,并将值数据更新为“7FA6”(十六进制)或“32678”(十进制)。
- 右键点击 Parameters,选择新建 > DWORD。
- 将该值命名为“TcpTimedWaitDelay”,并将值数据更新为“1E”(十六进制)或“30”(十进制)。
- 重启计算机,使更改生效。
这将增加 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(请参阅 部署建议)。
故障排查清单
- 关闭虚拟资产中的性能配置文件和附加延迟。
- 该问题是否与特定资产有关?其他资产的性能是否和之前一样?
- 如果有未使用的响应器或数据源行,是否可以禁用或彻底删除?
- 检查资产中可能存在的任何脚本。如果禁用这些脚本,问题是否得以解决?
- 是否存在任何网络共享驱动托管工件?
- 该问题在另一台服务器上是否以同样的条件重现?