我们正在尝试调整我们的应用程序服务器,它们是Amazon Linux计算机...
[myuser@mymachine ~]$ uname -a
Linux mymachine.myco.org 4.3.17-14.25.amzn1.x86_64 #1 SMP Wed May 10 01:58:40 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
我们的机器上只有一个JBoss进程在运行(就是我们已经启动的进程)。机器有30GB的内存,Jboss进程分配了25GB(使用“ -Xmx25600m” Java选项)。机器什么时候开始使用交换空间?当我运行“ free -m”时,我看不到使用任何交换空间,这是我期望的...
[myuser@mymachine ~]$ free -m
total used free shared buffers cached
Mem: 30103 7238 22864 0 172 4438
-/+ buffers/cache: 2627 27475
Swap: 0 0 0
我以为只有在我们开始用尽内存时才使用swap,但是被告知这不一定是正确的。机器什么时候开始使用交换空间?
Linux通常会尝试将内存保留在ram中,只有当可用ram(即应用程序,缓冲区和缓存的文件使用的ram总数)用尽时,它们才会开始交换。何时开始交换是可以配置的,但是可以根据您的设置而有所不同,并由该swappiness
值控制。查看当前swappiness
值设置为运行
cat /proc/sys/vm/swappiness
大多数系统的默认值约为60。该值越低,内核将越积极地将事物保留在ram内并将其设置为0,将完全禁用交换(交换将用于休眠,但在运行时不会主动使用)。
仅当系统的内存几乎完全由应用程序,缓冲区和缓存组合在一起时,才可使用Swappiness。当应用程序请求更多内存时,它会丢弃内核将缓存数据丢弃或将一些较少使用的内存写入磁盘,从而改变了内核偏爱的内核。swappiness值控制这两者之间的比率,其中1基本上总是丢弃高速缓存,而100会使大多数时间交换应用程序数据。
您可以使用以下命令动态配置系统的交换能力
sysctl vm.swappiness=10
并通过编辑将其永久设置/etc/sysctl.conf
为包括
vm.swappiness = 10
对于您的服务器具有使用大量ram和JVM的服务器的情况,如果您根本不愿意进行太多交换,那么将这个值降低到10甚至1可能是有益的。在大多数带有大量内存的现代系统上,将其降低到10通常是有益的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句