如何找出导致大量dentry_cache使用的原因?

作者:无名 - 互联网 -

问题:

注意,与dentry_cache相比,inode_cache amp; ext3_inode_cache板非常小。 发生的事情就是慢慢稳定地在一周内dentry_cache从1m增长到~5-6g然后我需要运行 echo 2gt;/proc/sys/vm/drop_caches amp;amp; echo 0gt;/proc/sys/vm/drop_caches 这种情况有一天会发生在托管一些web代码的所有服务器上 - 开发人员说他们在问题开始的时候没有改变任何与文件系统访问模式相关的内容。

该系统是centos5,内核为2.6.18,所以我没有任何新的内核可用的设备功能。 我知道如何调试这个问题? 也许使用 systemtap这是一个ec2实例- 所以甚至不确定systemtap是否在那里工作。


回答 1:

迟到了,但也许对其他人来说很有用。

如果您在该ec2实例上使用aws开发工具包,则curl很可能导致dentry膨胀。 虽然我没有看到这个触发器oom,但由于操作系统需要额外的工作来回收slab,因此它会影响服务器的性能。

如果您确认开发人员正在使用curl来访问https(许多aws sdk都这样做),那么解决方案是将nss-softokn库升级到至少v3.16.0并设置环境变量nss_sdb_use_cache(对于使用libcurl的进程,yes和no是有效值,您可能必须进行基准测试以查看哪些更有效地执行curl请求。

我最近自己遇到了这个并写了一个博客条目 ( 旧博客条目链接和上游 bug 报告 ) 和一些诊断amp;更详细的信息,如果有帮助的话 。


回答 2:

你有几个选择。 如果我处于这种情况,我将开始跟踪统计信息:

# cat/proc/sys/fs/dentry-state

87338 82056 45 0 0 0

随着时间的推移,看看它的增长速度有多快。 如果速率有些规则,我认为你可以用两种方法来确定可能的罪魁祸首。 首先查看lsof的输出可能表明某些进程正在删除已删除的文件句柄。 其次,您可以使用应用程序对主要资源进行分层,并查找过多的与fs相关的调用(如open(),stat()等)。

我还没有看到dentry缓存导致oom杀死东西的问题,但是如果它们仍然被引用并且活动的话可能会发生这种情况? 如果是这样的话,我相信lsof会暴露这个问题。


回答 3:

在我们的例子中,我们通过 minflt/s粗糙查看 来识别的进程

pidstat -l -r

pidstat -l -r | sort -k4nr # sort on 4th column. numerically, reverse (descending). rhel6.

pidstat -l -r | sort -k5nr # on newer pidstat, minflt/s is the 5th column. rhel 7.




文章标签:find

以上就是由(IT人知识库http://www.itpeo.net/389620/4628470.html)本站为大家整理





Puppet: 如何向现有文件中添加行

问题:: 下面的示例正确且工作正常。 但是由于某些原因我第一次不工作,然后我做了 vagrant provision,然 ...

mysqld: 无法创建/写入文件( Errcode: 2 )

问题:我以前使用过 xampp,我想尝试 mamp 。 我无法启动mysql服务器。 我已经尝试过:这个插件,和这个版本 ...

ssh scp命令将文件从远程复制到远程,而不是复制到本地计算机

问题:我需要这个帮助。 我无法与任何ftp客户端连接到由客户端提供的远程服务器。 那是sftp协议但是我永远不能连接。带 ...

如何使远程服务器的~2M 文件的rsync对定期备份具有性能

问题:我们在远程服务器上有大量的文件,我想为本地系统设置常规备份,以备额外的冗余。 一些细节:远程系统不在我的控制中。 ...

Windows 计算机发送电子邮件

问题:新 windows 机器( 说 win10 ) 要发送电子邮件所需的软件/软件包。 我的理解是它需要安装smtp客 ...

关闭"删除对使用所有 Windows 更新功能的访问权限"组策略

问题:windows 10引入了一个新的计算机组策略"删除对使用所有 windows 更新功能的访问权限",它阻止了对 ...

向需要登录的服务器发送电子邮件

问题:我正在尝试了解smtp服务器在生产环境中的工作方式。 我想知道如果服务器b 需要登录,电子邮件如何从服务器a 发送 ...

使用凭证插件运行Jenkins管道步骤

问题:我有一个将目录复制到远程目录的基本管道。 如果我在纯文本中有用户名和密码,但是当我尝试使用withcredenti ...

启用时出错

问题:我不能在azure的一些vm上启用azure备份。 我已经从经典到arm迁移了虚拟机,但是一些磁盘的磁盘仍然存储在 ...

Linux tmpfs 文件系统 需要同步选项?

问题:我正在查找有关挂载tmpfs分区和同步选项的信息。 同步使数据被转储到磁盘而不保存到缓存中。 这与ext4和其他文 ...

在多个数据服务( Mysql,hadoop,Aurora,mssql ) 中,如何通过反向代理转发TCP请求 等)

问题:我正在尝试解决一个架构设计谜题,它是关于设计一个保持数据和服务器尽可以能安全的。*i 希望隐藏我的外部设计( 有几 ...

如何将逻辑卷的大小调整为它内部的文件系统大小

问题:目标系统是centos 6.x,但是,调整大小的操作将在centos 7.6 kickstart的%pre部分完成 ...

如何备份正在运行的远程服务器?

问题:我们想要不关机备份服务器上的所有内容,这是在世界另一端远程运行的,(这是一个debian系统。)我看到的很多备份建 ...

Mysql修复root密码

问题:我想我搞乱了 user 表,试图运行类似这样的去更新密码update mysql.user set authent ...

如何:在远程服务器上检查函数的变量是文件夹或文件的路径?

问题:我需要使用rsync或scp从远程服务器复制文件或文件文件夹到计算机。要复制(同步)文件文件夹,我使用以下函数:f ...

在CentOS7上,使用Yum删除软件包

问题:问题:从系统删除python boto和yum ,它似乎已不再安装,但是,仍会出现在yum 中。尝试:yum cl ...

Tomcat:基本认证垃圾邮件导致服务器过载

问题:我们有一个基于debian的服务器,在负载平衡的服务器后面运行tomcat ,因为它是用于开发的,我们在tomca ...

Mysql在备份转储过程中内存不足(Docker 容器)

问题:我们有一个正在运行mariadb的容器,主机上还运行一些小容器。 mysql容器分配了21g内存(总数超出 32g ...

特定云应用的网络连接存储有多坏?

问题:我听说推荐远离aws主机的某些"大数据"应用程序( 比如。 由于ec2实例通常使用网络附加存储( 虽然最近有一些高 ...

在ubuntu服务器中,如何重置 root 密码

问题:我们似乎把 root 密码放错了我们有( 使用 ovh )的专用服务器。 我询问他们如何重置 root 密码,这是 ...