板坯使用率极高?

板坯使用率极高?

我在一台拥有 32GB RAM 内存的 Centos 7 服务器上运行着几个程序,分别是 MySQL、Apache2 和 PHP。最近我想核实一下剩余的 RAM 数量,因为我打算安装更多程序,但令我惊讶的是,内存量竟然非常低!经过调查,我发现 Slab 使用了超过 20GB。2 天前我删除了缓存,因此 slab 使用率降至 0,然后又缓慢上升。在使用程序监控时,我注意到使用率呈线性上升。在过去 24 小时内,它增加了约 5200MB(60 小时内总共增加了 13GB)。磁盘上的总数据不到 40GB。'find /' 的输出只有几 MB。似乎有很多 dentry 被缓存了?

我发过帖子说 curl 自带的 NSS 是导致问题的原因。我检查了安装的 NSS 版本,发现这个版本应该已经应用了修复。

我还发现建议使用 vfs_cache_pressure 的帖子,但是增加它似乎并不能阻止使用率上升到极高的值。

我想知道对于小于 50GB 的小磁盘,标识的正常内存量是多少?我如何找到源头以及如何修复此问题?

相关图片:
slabtop 截图:这里
slab 可回收和缓存内存图表:这里

编辑:

# sysctl -n vm.vfs_cache_pressure
10000

(以前是 100,我将其增加了 100 倍,但内存仍然增加了相同的量)

# find / -type d -size +10M -ls
#

(无输出)

至于 cronjobs,除了每日日志轮换之外,还有一个脚本会建立几个 tcp 连接来获取数据并将其存储在数据库中(原始套接字,没有 curl 或任何东西)。除了那个 cronjob,还有 2 个备份 cronjobs,每周运行一次。唯一应该能够导致 I/O 的是安装了 SMF 的 apache2 webserver。我个人怀疑它可能是 mod_rewrite 检查文件是否存在之类的。

完整内核版本:

Linux #1 SMP Tue Mar 18 14:48:24 CET 2014 x86_64 x86_64 x86_64 GNU/Linux

已安装的软件:粘贴箱
ps aux 的输出:粘贴箱

# strace -fc -e trace=access curl 'https://www.google.com' > /dev/null
Process 7342 attached
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   259  100   259    0     0    903      0 --:--:-- --:--:-- --:--:--   905
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00    0.000048           0      7877      7872 access
------ ----------- ----------- --------- --------- ----------------
100.00    0.000048                  7877      7872 total

答案1

我总是top寻找最大的 VSIZE/VSS 或 RSS 进程,

然后我转到 /proc/<.PID>/ 子目录。

并检查smaps文件中是否存在最大的违规目标文件、套接字以及库。

相关内容