首页 > 解决方案 > TFS 构建服务器无法与控制器通信以进行负载测试

问题描述

我可以采取哪些步骤来测试控制器的连接性?如何确保我的 tfs 构建服务器能够与控制器通信以执行负载测试?

我的公司正在尝试自动化负载测试,为此我们正在使用 tfs 构建。我有一个命令行任务来实际启动负载测试。为了形象化,它看起来像这样:

Command Line Task
Tool: MSTest.exe
Arguments: /testcontainer:"some load test.loadtest" /testsettings:"some test settings.testsettings"

当我运行构建时,它会在大约 3-4.5 分钟后超时并给我这个错误:

Failed to queue test run 'some load test': A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

我已经尝试了一些方法来测试控制器的连接性,但我不确定我是否已经找到了我正在寻找的答案。我尝试的第一件事是重新启动控制器,但这并没有改变任何东西。然后我进入vs2017并打开负载测试编辑器。从那里我进入Manage test controllers。控制器对话框设置为正确的控制器,它所控制的代理位于Ready. 然后我查看了测试设置,并验证了<RemoteController/>也设置正确。我这样做只是为了确认错误不在于文件本身。因此,超时应该是由于服务器或控制器之间的某些连接问题而发生的。

我知道控制器对传入流量使用特定端口,即端口 6901,因此我在 PS 中使用 .NET TcpClient 检查了端口连接:

$server = 'mycontroller'
$port = 6901
$client = New-Object Net.Sockets.TcpClient
try{
    $client.Connect($server, $port)
    $msg = "Connected to $server on Port $port"
} catch {
    $msg = "Could not connect to $server on Port $port"
} finally {
    $client.Dispose()
}
write-host $msg

如果控制器已打开,$client则始终返回它能够连接到$server. Connected除了对象之外,是否还有任何属性TcpClient可以为我提供有关其连接的更多信息?因为尽管$client看起来能够连接,但构建服务器仍然超时。我是否需要为构建服务器提供要连接的特定端口?它不应该自动执行吗?

我尝试tracert通过另一个命令行任务来查看是否可以查明服务器超时的位置:

2019-07-10T20:28:32.9051572Z C:\Windows\system32\cmd.exe /c "TRACERT.exe atsvstctstvm400"
2019-07-10T20:28:32.9271264Z Tracing route to mycontroller.local [10.208.3.56]
2019-07-10T20:28:32.9281250Z over a maximum of 30 hops:
2019-07-10T20:28:37.7253994Z   1     1 ms    <1 ms    <1 ms  10.200.0.5 
2019-07-10T20:28:38.7269952Z   2    <1 ms    <1 ms    <1 ms  10.50.0.2 
2019-07-10T20:28:39.8534160Z   3    38 ms    39 ms    38 ms  172.20.0.2 
2019-07-10T20:28:52.3918376Z   4     *        *        *     Request timed out.
2019-07-10T20:28:52.5396304Z   5    48 ms    48 ms    48 ms  10.208.3.56 
2019-07-10T20:28:52.5396304Z Trace complete.

第四跳可能是构建服务器挂断的地方吗?似乎尽管第 4 跳超时,代理仍然能够 ping 通到控制器。如果它是我需要关注的第四跳,我该如何修复它?它没有给我任何关于第四跳想去哪里的信息。

因此,总而言之,我正在尝试使用 MSTest.exe 通过 tfs 中的命令行任务运行负载测试。当我运行构建时,我收到一个超时错误,我认为这意味着构建服务器无法与控制器通信。我已经尝试了一些解决问题的想法,但我无法解决问题或阐明如何继续。如何查明通信错误的位置?还有哪些其他故障排除解决方案可以解决此问题?对于未来的负载测试运行,我如何测试以确保构建服务器能够与控制器通信?

标签: mstestbuild-agent

解决方案


推荐阅读