我把这更多地作为一个“调查”问题,并计划扩大讨论,以防有兴趣出现。这背后的原因是,根据我的经验,azure-ml上的SO社区(和相关的)还在开发中,并且没有多少反馈--但我很乐意帮助它变得更强大。
我的情况如下:我在Azure中做了一个实验,它在R模块中完成所有的工作。我将其作为web服务发布,并将“最大并发调用”滑块设置为10 --我相信这可以保证我的web服务在任何时候最多有10个实例启动并运行,以满足请求(如果我错了,请纠正我的错误)。
现在,我试图通过对我的webservice进行10个并行调用来进行一些性能测试,但是得到了意想不到的结果……
我正在尝试运行负载测试,并记录每个测试的实际位置(哪个实例)。我的想法是了解这些调用实际上是如何由负载均衡器在一定的最大并发调用数= X下分发给实例的。我是通过从bot.whatismyipaddress.com脚本中调用“R”来实现这一点的。下面是代码的重要片段:
library(rjson)
machine.ip <- readLines("http://bot.whatismyipaddress.com/", warn=F)
result$MachineIP <- machine.ip此外,我正在使用web服务RRS帮助页面中的示例R代码来触发对我的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服务的不同实例。从调用(第二个片段)到控制台的信息通常显示一个与内部的IP地址不同的IP地址--R-code logs (result$MachineIP).
有人能指出我做错了什么吗?我如何才能唯一地识别为呼叫服务的不同实例?任何帮助都会很感激的。谢谢!
P.S.我也尝试过这,但是当从R脚本内部调用它时,第一个P.S不起作用,而且我使用的是第二个apporach的修改版本(建议不起作用的那个)。这里也是我在Azure论坛上的问题,如果有人感兴趣的话。
如果有人能帮助或指点我的一些信息来源,我将非常感激!
发布于 2016-01-08 09:07:08
这个问题已经解决了,多亏了Azure ML论坛上的一些人,所以我要为任何来到这里寻找答案的人发个答案.
简单的回答是不,这是不可能的。更详细的版本是:
“在R脚本中,您无法识别内部的AzureML IP地址或唯一的web服务实例。当您从R脚本向外部URL发出外部网络调用时,该URL将看到一个AzureML公共虚拟IP作为源IP。这些是负载平衡器的IP,而不是物理运行web服务的机器的IP。AzureML在后端动态分配R引擎的实例,处理故障,并使用多个节点来运行web服务以获得高可用性。对于给定的web服务,它们的确切布局是不可编程的。”
这里也是对最初讨论的链接。
https://stackoverflow.com/questions/34335483
复制相似问题