GlusterFS 读取负载使用率高 CPU
GlusterFS high CPU usage on read load
我有一个 GlusterFS 设置,其中两个节点(node1 和 node2)设置到一个复制卷。
该卷包含许多小文件,大小为 8kb - 200kb。当我使 node1 承受重读取负载时,一起处理的 glusterfsd 和 glusterfs 在两个节点上使用 ~ 100% CPU。
任何节点上都没有写入负载。但为什么 CPU 负载在两个节点上都如此之高?
据我所知,所有数据都被复制到两个节点,因此它"should" 像本地文件系统一样执行。
这通常与小文件有关,例如如果您有来自 gluster 卷的 PHP 个应用程序 运行。
这一次在后面咬了我一口,在许多 php 框架中它主要必须这样做,你会得到很多统计信息来查看该位置是否存在文件,如果不存在,它将声明一个更高的级别(目录),或者名称略有不同。重复 1000 次。每个文件。
现在要注意的是:如果文件存在,则查找不仅仅发生在该节点/本地块上。 (如果你使用复制),但在所有涉及的节点/砖块上。所涉及的成本可能会迅速增加。 (特别是在某些 IOPS 有上限的云平台上)
这篇文章对我帮助很大。最后还是被小罚了,但是利大于弊
https://www.vanderzee.org/linux/article-170626-141044/article-171031-113239/article-171212-095104
我有一个 GlusterFS 设置,其中两个节点(node1 和 node2)设置到一个复制卷。
该卷包含许多小文件,大小为 8kb - 200kb。当我使 node1 承受重读取负载时,一起处理的 glusterfsd 和 glusterfs 在两个节点上使用 ~ 100% CPU。
任何节点上都没有写入负载。但为什么 CPU 负载在两个节点上都如此之高?
据我所知,所有数据都被复制到两个节点,因此它"should" 像本地文件系统一样执行。
这通常与小文件有关,例如如果您有来自 gluster 卷的 PHP 个应用程序 运行。
这一次在后面咬了我一口,在许多 php 框架中它主要必须这样做,你会得到很多统计信息来查看该位置是否存在文件,如果不存在,它将声明一个更高的级别(目录),或者名称略有不同。重复 1000 次。每个文件。
现在要注意的是:如果文件存在,则查找不仅仅发生在该节点/本地块上。 (如果你使用复制),但在所有涉及的节点/砖块上。所涉及的成本可能会迅速增加。 (特别是在某些 IOPS 有上限的云平台上)
这篇文章对我帮助很大。最后还是被小罚了,但是利大于弊
https://www.vanderzee.org/linux/article-170626-141044/article-171031-113239/article-171212-095104