我们正在运行从centos 6.9
上的存储库安装的gitlab-cl 10.0.1我们有一台65GB RAM的物理服务器。 我们在Web界面上的表现很慢,所以看看内存,我们看到服务器正在交换一点,所有的内存都被使用了。
没有使用它的活动进程,free -m确认它已被缓存:
total used free shared buffers cached
Mem: 64412 64179 232 140 1 176
-/+ buffers/cache: 64001 410
Swap: 15999 2679 13320
奇怪的是所有内存都是在DirectMap2M上分配的
cat /proc/meminfo
MemTotal: 65957916 kB
MemFree: 242364 kB
Buffers: 1132 kB
Cached: 193548 kB
SwapCached: 853032 kB
Active: 6302692 kB
Inactive: 1729836 kB
Active(anon): 6276560 kB
Inactive(anon): 1704824 kB
Active(file): 26132 kB
Inactive(file): 25012 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 16383996 kB
SwapFree: 13580524 kB
Dirty: 1576 kB
Writeback: 0 kB
AnonPages: 7595904 kB
Mapped: 162376 kB
Shmem: 144312 kB
Slab: 57184100 kB
SReclaimable: 35132 kB
SUnreclaim: 57148968 kB
KernelStack: 12912 kB
PageTables: 59144 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 49362952 kB
Committed_AS: 18168608 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 395428 kB
VmallocChunk: 34323721400 kB
HardwareCorrupted: 0 kB
AnonHugePages: 3260416 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 7652 kB
DirectMap2M: 67088384 kB
你知道为什么会这样吗? 用gitlab这是正常的吗?
我读到了几条从内存中删除缓存的命令:
# sync; echo 1 > /proc/sys/vm/drop_caches
# sync; echo 2 > /proc/sys/vm/drop_caches
# sync; echo 3 > /proc/sys/vm/drop_caches
在运行gitlab的生产机器上运行它们是否安全?
非常感谢
答案 0 :(得分:0)
不能确切地说出为什么所有内存都用完了,但实际情况是这样。起初我期望标准https://www.linuxatemyram.com/,但我可以看到,在你的情况下,你实际上使用64001 kb的内存。 列出的命令毫无意义,他们所做的只是删除缓存在内存中的磁盘块,导致下次需要相同的块时发生io命中。
要了解发生了什么,您需要查看耗尽所有内存的进程。获取该信息有几种方法
ps -e -o pid,vsz,comm= | sort -n -k 2
或获取参数
ps -e -o pid,vsz,command= | sort -n -k 2|cut -b1-$COLUMNS
你可以开始" top"击中大写" M"按内存用户排序。