我使用 RestSharp 作为底层 HTTP 客户端库,在黑盒服务上制作压力/吞吐量测试客户端。线程池和服务点连接限制已提高到 5000,但这应该不用担心,因为我们每秒测试大约 500-1000 个请求。高分辨率(微秒)计时器组件用于以我们想要测试的速率抛出请求。
RestSharp 代码大致如下
restClient.ExecuteAsync(postRequest, res =>
{
stopwatch.Stop();
lock (this.countLocker)
{
this.roundTrips.Add(stopwatch.ElapsedMilliseconds);
if (res.ResponseStatus == ResponseStatus.Completed &&
(res.StatusCode == HttpStatusCode.OK ||
res.StatusCode == HttpStatusCode.NoContent))
{
this.responseCount++;
}
else
{
// Treat all other status codes as errors.
this.reportError(res);
}
}
});
Run Code Online (Sandbox Code Playgroud)
在发送过多请求时,我们会观察到服务会在一段时间后溢出一些错误 503 响应,但 RestSharp 将这些响应视为完整响应,因为这是来自服务器的有效响应;没有抛出实际的异常。
不清楚的是,当 RestSharp 由于底层连接错误而遇到异常时
The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.
at RestSharp.Http.GetRawResponseAsync(IAsyncResult result, Action`1 callback) …Run Code Online (Sandbox Code Playgroud) 我们有一个解决方案,其中包含一个Web应用程序项目,该项目旨在作为Windows Azure云服务中的Web角色.它还有一个仅针对云服务的云服务项目(生产槽)
SlnRoot\WebApp1\WebApp1.csproj SlnRoot\CloudDeployment\CloudServiceName\CloudServiceName.ccproj
从Visual Studio发布(部署)非常容易; 只需从云项目的上下文菜单中选择"发布..."选项,然后点击"发布",其中包含所有预配置的云服务设置.
现在我们正在进一步尝试自动化这个过程,所以我在没有Visual Studio的帮助下从命令行和原始MSBuild尝试它.
.nuget\nuget.exe restore
msbuild .\CloudDeployment\CloudServiceName\CloudServiceName.ccproj /t:Publish /p:PublishDir=..\..\pubout\ /fl1 /v:d
Run Code Online (Sandbox Code Playgroud)
但看来,Publish目标实际上是Visual Studio中的Package选项,只生成必须手动上传到Windows Azure门户的cspkg文件.当然,这不行.是否有一个单独的目标来指定执行Visual Studio如此轻松执行的附加步骤(部署不是它;没有这样的目标)?
虽然估算直行和表格大小是相当简单的数学,但我们发现猜测每个索引将占用多少空间(对于给定的表格大小)具有挑战性.我们可以学习哪些方面来计算指数的更好估计和增长率?
在.NET v1期间,我尝试使用NUnit和NAnt的其他工具来说服同事开发测试驱动和自动构建的工作习惯,但没有取得太大成功.当.NET Framework 2.0和Visual Studio 2005 Team Suite出现时,我能够"强迫"我的团队编写测试并在Visual Studio中为自己提供可视化测试.我还能够通过额外的MSBuild任务来调整项目文件,以实现更多的构建自动化.
当然,这并不意味着微软已经提供了完美的系统,但我相信他们已经采取了正确的步骤.所有这些功能都融入到框架和产品中并成为"原生",它使得动作开发人员更容易进入更好的开发实践.
很久以前就忘记了开源选项(我确实错过了),我想知道当前NUnit和NAnt的化身是什么价值主张?在这个阶段,人们可以争论说服团队不使用MSBuild或MSTest?
澄清:我的公司是一个纯粹的微软SI.Visual Studio Team Suite版本,Database Professional版本,TFS等可供我们使用.我们不使用Visual Studio Professional版本或更小版本.
msbuild ×2
azure ×1
indexing ×1
keep-alive ×1
mstest ×1
nant ×1
nunit ×1
restsharp ×1
sql-server ×1
throughput ×1