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

Openwhisk: scaling issues on the distributed setup

我按照此处所述https://github.com/apache/incubator-openwhisk/blob/master/ansible/README_DISTRIBUTED.md 在几台虚拟机上设置了分布式 openwhisk 安装(还必须手动在 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

总的来说一切似乎 运行 都很好,我可以创建操作、调用它们等。

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

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

这可能是什么原因?使 Openwhisk 获得第二个调用程序的正确用例是什么?

在小型部署中,有一小部分调用程序池严格分配给 docker 操作。这称为黑盒分数,默认情况下为 10%(至少有 1 个调用程序,这就是为什么您会看到一个加载的调用程序和一个空闲的调用程序)。

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