Openwhisk:分布式设置上的扩展问题

时间:2018-06-13 20:17:13

标签: serverless openwhisk ibm-cloud-functions

我在几台虚拟机上设置了分布式openwhisk安装,如https://github.com/apache/incubator-openwhisk/blob/master/ansible/README_DISTRIBUTED.md所述(还必须手动安装一些VM依赖项,因为它们是预期的,但默认情况下没有安装)。

我的主机文件如下所示:

; the first parameter in a host is the inventory_hostname

; used for local actions only
ansible ansible_connection=local

[registry]
xxx.xx.xx.173              ansible_host=xxx.xx.xx.173

[edge]
xxx.xx.xx.176              ansible_host=xxx.xx.xx.176

[apigateway:children]
edge

[redis:children]
edge

[controllers]
xxx.xx.xx.174              ansible_host=xxx.xx.xx.174
xxx.xx.xx.175              ansible_host=xxx.xx.xx.175

[kafkas]
xxx.xx.xx.176              ansible_host=xxx.xx.xx.176

[zookeepers:children]
kafkas

[invokers]
xxx.xx.xx.174              ansible_host=xxx.xx.xx.174
xxx.xx.xx.175              ansible_host=xxx.xx.xx.175

[db]
xxx.xx.xx.176               ansible_host=xxx.xx.xx.176

一般来说,一切似乎都运行正常,我可以创建动作,调用它们等等。

在托管调用程序和控制器的两个VM上,我打开了htop以检查CPU使用情况,并尝试运行python脚本,并行多次调用相同的操作(素数计算需要时间以获得足够大的输入)。

结果似乎是第一个调用程序在计算发生时在100%CPU上工作,而第二个调用程序仍然在5-7%CPU上空闲。我还尝试了跨多个VM分发组件的不同方法,例如在另一台机器上分别在两台机器和一台控制器上设置调用器,但结果是一样的。

这可能是什么原因?什么可能是使Openwhisk让第二个调用者参与的正确用例?

1 个答案:

答案 0 :(得分:2)

在一个小型部署中,有一小部分调用者池严格分配给docker操作。这称为blackbox分数,默认为10%(最少1个调用者,这就是为什么你看到一个加载的调用者和一个空闲的)。

这个最近的拉取请求允许所有的调用者用于少量的调用者(最多为黑盒子部分的倒数):https://github.com/apache/incubator-openwhisk/pull/3751