我在Oracle Enterprise Linux 7u2上执行频繁,沉重的Maven构建,这些构建会生成大量的jar/wars/ears。我最近(在一些崩溃/幽灵补丁之后)注意到,此过程占用了大量CPU:

/usr/libexec/sssd/sssd_nss --uid 0 --gid 0-调试文件

我的服务器何时空闲?没问题。但是,在我的Maven构建的重载磁盘IO部分中,Maven Java进程和sssd_nss争夺CPU,它们各自占据了总数的50%。 (供引用,我有一个4核Xeon服务器)

我真的不知道这个过程是什么(除了它可能处理LDAP?),或者为什么它会关心Java文件的复制和压缩。 (全部在本地/非NFS磁盘上)

最佳答案

sssd_nss是从守护程序(例如LDAP)提取用户/组信息请求的守护程序。它实际上并不执行查找,而是向执行该操作的服务发出请求,首先检查本地磁盘缓存。

这使我认为繁重的I/O部分正在围绕用户和组执行大量操作(例如,查找UID的用户名,查找UID的组)。

您还应该检查sssd_nss高CPU是否为IOWAIT。这表明您确实在进行大量的用户/组查询,并且某种程度上由磁盘I/O阻止。您可以使用top查看整个系统IOWAIT(查找wa),并使用iotop获取每个进程的指标。

如果主要是IOWAIT,则可能需要分开添加I/O容量或将构建卷与系统卷分开。我怀疑这是您问题的根本原因。

您提到这是在融化/光谱补丁之后发生的。这可能表明构建过程正在sssd_nss中启动许多系统调用,而这些补丁现在更慢了。您可能需要调查您的构建过程,看看是否有不必要的用户/组相关命令。您可以查看使用strace -p $pid_of_sssd_nssuse sysdig for even fancier analysis进行的系统调用。如果该服务正在执行许多系统调用,请查看其正在执行的调用,并确定您的构建过程在哪里发起这些调用。然后尝试将其最小化。

关于linux - 大量磁盘IO期间sssd_nss的CPU使用率很高,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49618032/

10-11 21:13