我们有 Hadoop 集群,包含 265 台 Linux RHEL 机器。
在总共 265 台机器中,我们有 230 台带有 HDFS 文件系统的数据节点机器。
每个数据节点上的总内存为 128G,我们在这些机器上运行许多 Spark 应用程序。
上个月我们添加了另一个 Spark 应用程序,因此进程从数据节点机器中占用了更多内存。
我们注意到了那个缓存。内存是非常重要的部分,当机器上运行更多进程时,正确的结论是添加更多 RAM 内存。
由于我们在接下来的5-6个月内无法将内存升级到256G,那么我们正在考虑如何尽可能提高RHEL机器的性能和内存现金。
根据我们的经验,内存 Csch 对于应用程序的稳定性非常重要。
一种选择是清除 RAM 内存缓存和缓冲区,如下所示。
1. Clear PageCache only.
# sync; echo 1 > /proc/sys/vm/drop_caches
2. Clear dentries and inodes.
# sync; echo 2 > /proc/sys/vm/drop_caches
3. Clear PageCache, dentries and inodes.
# sync; echo 3 > /proc/sys/vm/drop_caches
并从 cron 运行它们,如下所示。 ( 从https://www.wissenschaft.com.ng/blog/how-to-clear-ram-memory-cache-buffer-and-swap-space-on-linux/)
#!/bin/bash
# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"
echo "echo 3 > /proc/sys/vm/drop_caches"
Set execute permission on the clearcache.sh file.
# chmod 755 clearcache.sh
Now you may call the script whenever you required to clear ram cache.
Now set a cron to clear RAM cache everyday at 2am. Open crontab for editing.
# crontab -e
Append the below line, save and exit to run it at 2am daily.
0 2 * * * /path/to/clearcache.sh
但由于我们谈论的是生产数据节点机器,所以我不太确定上述设置是否安全,并且他们提供了(?)一些解决方案,直到我们可以将内存从 128G 增加到 256G
我们可以听听你对我写的内容的看法吗?
如果“清除 RAM 内存缓存”是正确的临时解决方案,直到内存升级