1

我将其更多地作为“探索”问题发布,并计划扩大讨论,以防出现一些兴趣。这背后的原因是,根据我的经验,azure-ml(和相关的)SO 社区仍在发展中并且没有太多反馈 - 但我很乐意帮助它变得更强大。

我的情况如下:我在 Azure ML 中有一个实验,它在一个R模块内完成所有工作。我将其作为 Web 服务发布,并将“最大并发调用”滑块设置为 10 - 我相信这可以保证我的 Web 服务在任何时候都会有最多 10 个实例启动并运行,以服务请求(请纠正我如果我错了)。

现在,我正在尝试通过对我的 web 服务发起 10 个并行调用来进行一些性能测试,但得到了意想不到的结果......

我正在尝试运行负载测试并记录它们每个实际到达的位置(哪个实例)。我的想法是了解负载均衡器在一定的最大并发调用数 = X 下,这些调用实际上是如何分配给实例的。我通过从内部调用“bot.whatismyipaddress.com”来做到这一点R脚本。这是代码的重要片段:

library(rjson)
machine.ip <- readLines("http://bot.whatismyipaddress.com/", warn=F)
result$MachineIP <- machine.ip

此外,我正在使用R来自 Web 服务 RRS 帮助页面的示例代码来触发对我的 Web 服务的多达 70 个(顺序)调用。此示例代码将一些信息返回到控制台:我的 Web 服务的结果以及有关调用通过哪个主机名的一些信息。这是一个示例:

* Hostname was NOT found in DNS cache
*   Trying 40.114.242.9...
* Connected to europewest.services.azureml.net (40.114.242.9) port 443 (#0)

我面临的困难是我无法唯一标识我的 Web 服务的不同实例。R从调用(第二个片段)输出到控制台的信息通常显示与来自内部代码日志( )的 IP 地址不同result$MachineIP...

有人能指出我做错了什么吗,我如何才能唯一地识别为呼叫提供服务的不同实例?任何帮助将非常感激。谢谢!

PS我也试过这个,但是从脚本内部调用它时第一个方法不起作用R,我正在使用第二个方法的修改版本(建议的那个不起作用)。也是我的问题,以防有人感兴趣。

如果有人可以帮助或向我指出一些信息来源,我将不胜感激!

4

1 回答 1

0

由于 Azure ML 论坛上的一些人,这个问题得到了解决,所以我将为任何登陆这里以寻找一些答案的人发布答案......

简短的回答是否定的,这是不可能的。更详细的版本是:
“从 R 脚本中,您无法识别内部 AzureML IP 地址或唯一的 Web 服务实例。当您从 R 脚本向外部 URL 进行外部网络调用时,该 URL 将看到其中一个AzureML 公共虚拟 IP 作为源 IP。这些是负载均衡器的 IP,而不是物理运行 Web 服务的机器的 IP。AzureML 在后端动态分配 R 引擎的实例,处理故障,并使用多个节点运行 Web 服务以实现高可用性。给定 Web 服务的确切布局无法以编程方式发现。”
这里也是原始讨论的链接。

于 2016-01-08T09:07:08.967 回答