У меня есть простая служба Hello World, использующая OWIN и Nancy в роли Azure Worker. При запуске локально я получаю время отклика ~ 1 мс. Как только я развожу его, он занимает около 250 ~ 400 мс. Он работает на одном экземпляре Standard_A1. Я не думаю, что это проблема Нэнси, поскольку я получаю подобные ответы при использовании WebApi вместо Nancy. Я знаю, что это не та сеть, к которой я обращаюсь, поскольку мониторы также показывают сходное время отклика.
Вот мой профиль публикации:
Класс My WorkerRole.cs приведен ниже:
public class WorkerRole : RoleEntryPoint
{
private readonly CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
private readonly ManualResetEvent runCompleteEvent = new ManualResetEvent(false);
private IDisposable _app = null;
public override void Run()
{
Trace.TraceInformation("StackOverflow.Example is running");
try
{
this.RunAsync(this.cancellationTokenSource.Token).Wait();
}
finally
{
this.runCompleteEvent.Set();
}
}
public override bool OnStart()
{
ServicePointManager.DefaultConnectionLimit = 64;
var endpoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["DefaultEndpoint"];
string baseUri = String.Format("{0}://{1}", endpoint.Protocol, endpoint.IPEndpoint);
Trace.TraceInformation(String.Format("Starting OWIN at {0}", baseUri), "Information");
_app = WebApp.Start<Startup>(new StartOptions(url: baseUri));
bool result = base.OnStart();
Trace.TraceInformation("StackOverflow.Example has been started");
return result;
}
public override void OnStop()
{
Trace.TraceInformation("StackOverflow.Example is stopping");
this.cancellationTokenSource.Cancel();
this.runCompleteEvent.WaitOne();
if (_app != null)
{
_app.Dispose();
}
base.OnStop();
Trace.TraceInformation("StackOverflow.Example has stopped");
}
private async Task RunAsync(CancellationToken cancellationToken)
{
// TODO: Replace the following with your own logic.
while (!cancellationToken.IsCancellationRequested)
{
Trace.TraceInformation("Working");
await Task.Delay(1000);
}
}
}
Мой app.config такой:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="owin:HandleAllRequests" value="true"/>
</appSettings>
</configuration>
Вот контроллер:
public class MonitorController : NancyModule
{
public MonitorController()
: base("/api")
{
Get["/monitor"] = x => "Hello world!";
}
}
Любые идеи о том, что может быть причиной этого или как я могу даже пытаться понять причину?
Доступ к конечной точке через VIP по сравнению с URL-адресом * cloudapp.net исправил это.
await Task.Delay(1000);