我有一个GlusterFS设置,其中两个节点(node1和node2)设置为复制卷。
该卷包含许多小文件,大小为8kb - 200kb。当我对node1进行大量读取加载时,同时处理的glusterfsd和glusterfs在两个节点上都使用~100%的CPU。
任何节点都没有写入负载。但是为什么两个节点上的CPU负载如此之高?
据我所知,所有数据都被复制到两个节点,所以它应该"#34;像本地文件系统一样执行。
答案 0 :(得分:0)
这通常与小文件有关,例如如果您有从gluster卷运行的PHP应用程序。
这一次在后面让我有点难受,它在许多php框架中都必须这样做,您会得到很多统计数据来查看该位置是否存在文件,如果不存在,它将声明一个级别(目录)更高,或名称略有不同。重复1000次。每个文件。
现在要注意的是:如果文件存在,查找不仅会在该节点/本地模块上进行。 (如果您使用复制),但是在所有涉及的节点/模块上。涉及的成本可能会迅速爆炸。 (特别是在某些具有IOPS上限的云平台上)
本文极大地帮助了我。最终,仍然有一点点罚款,但好处超过了这一点。
https://www.vanderzee.org/linux/article-170626-141044/article-171031-113239/article-171212-095104