omiagent 使用100% CPU
可能的原因
nss-pem 包 v1.0.3-5.el7 中的回归导致了严重的性能问题,我们已在 Redhat/CentOS 7.x 发行版中看到发生了很多这样的问题。 若要详细了解此问题,请查看以下文档:Bug libcurl 中的 1667121 性能回归。
与性能相关的 bug 并不总是发生,而且它们很难再现。 如果你在 omiagent 中遇到这样的问题,应该使用脚本 omiHighCPUDiagnostics.sh,它将在超过某个阈值时收集 omiagent 的堆栈跟踪。
下载脚本
wget https://raw.githubusercontent.com/microsoft/OMS-Agent-for-Linux/master/tools/LogCollector/source/omiHighCPUDiagnostics.sh
使用 30% CPU 阈值运行诊断 24 小时
bash omiHighCPUDiagnostics.sh --runtime-in-min 1440 --cpu-threshold 30
Callstack 将转储到 omiagent_trace 文件中。如果你看到许多 Curl 和 NSS 函数调用,请按照下面的解决步骤操作。
解决方法(分步)
将 nss-pem 包升级到 v1.0.3-5.el7_6.1。
如果 nss-pem 不可用于升级(主要发生在 Centos 上),则将 curl 降级到 7.29.0-46。 如果错误地运行了“yum update”,则 curl 将升级到 7.29.0-51,问题将再次发生。
sudo yum downgrade curl libcurl
重启 OMI:
sudo scxadmin -restart