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
我按照此处所述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