java count map_java – 无法更改elasticsearch的vm.max_map_count

你几乎就在那里,无论是虚拟机还是物理机,这些设置总是可以改变的.

我将展示3种方法.

一些预先信息:

1)如果可能的话,最好以root身份执行.

2)/ unix上的proc不是一个真正的文件系统,它是一个内存内核文件系统,但它看起来像一个普通的磁盘文件系统.您可以将其称为“假文件系统”或“特殊文件系统”,您无法使用vi或任何其他编辑器编辑这些假文件,因为它们不是文件,它们看起来就像文件.几年前我遇到了同样的问题.

但是改变它们的价值很简单,只需要另外一种“机制”来编辑它们.

我会解释一下:

首先,需要是root 🙁 sudo确实在某些发行版中工作,但是在你尝试的其他发行版上没有,这第一种方法是通用的,适用于任何Linux,macOS或任何基于Unix的.希望你有权访问root密码.

继续进行:

$su root

输入root密码.

现在你是root用户,让我们检查一下当前的值:/ proc / sys / vm / max_map_count

$cat /proc/sys/vm/max_map_count

65536

让我们改变它:

echo 262144 > /proc/sys/vm/max_map_count

我们来验证:

cat /proc/sys/vm/max_map_count

262144

完成!

它已经应用并且功能齐全.通过更改/ proc下的任何伪文件的值,设置立即变为活动状态.但重启后它们不会持续存在.您可以在elasticsearh或任何其他应用程序或系统指标上使用值并测量性能更改.去调整您的系统,在一些纸上写下值,保持最佳值.如果出现任何错误,请重新启动并重新启动它们,然后重新启动,直到所有希望的值都达到最佳值. / proc下有很多磁盘和内存可调参数.如果你能很好地调整它们(并且有时间),它们会带来巨大的差异和性能提升.你是正确的方式.

满意后,让它们永久化:

第一种方法:

使用/etc/rc.local

vi /etc/rc.local

将所有参数放在rc.local文件中,例如:

echo 220000000 > /proc/sys/vm/dirty_background_bytes

echo 320000000 > /proc/sys/vm/dirty_bytes

echo 0 > /proc/sys/vm/dirty_background_ratio

echo 0 > /proc/sys/vm/dirty_ratio

echo 500 > /proc/sys/vm/dirty_writeback_centisecs

echo 4500 > /proc/sys/vm/dirty_expire_centisecs

echo 1 > /proc/sys/net/ipv4/tcp_rfc1337

echo 10 > /proc/sys/vm/swappiness

echo never > /sys/kernel/mm/transparent_hugepage/enabled

echo never > /sys/kernel/mm/transparent_hugepage/defrag

echo 120 > /proc/sys/net/ipv4/tcp_keepalive_time

echo 0 > /proc/sys/vm/zone_reclaim_mode

echo deadline > /sys/block/sda/queue/scheduler

echo 8 > /sys/class/block/sda/queue/read_ahead_kb

echo 1048575 > /proc/sys/vm/max_map_count

退出vi编辑器保存文件.

在登录提示显示之前,所有初始化服务启动后,每次重新启动时都会设置这些参数.

(/ etc / rc.local文件在所有启动linux服务之后执行,如果elasticsearch在它作为服务之前启动它可能不起作用,但是如果你将来需要这个方法在另一个设置上有用,或者你可以像这样使用将它们放在elasticsearch init脚本中,因为init脚本以root身份运行,所以它与上面的init脚本中使用的语法相同)

您也可以立即复制它们并粘贴它们以进行即时更改.上面的参数在我的apache cassandra服务器上有效,调整并运行.

如果您愿意,可以尝试将它们作为调整您自己的起点.

使它们永久化的第二种方法:

现在将在Linux上的任何启动服务之前设置参数.

编辑/etc/sysctl.conf,将参数放入其中

vm.max_map_count=1048575

vm.zone_reclaim_mode=0

vm.dirty_background_bytes=220000000

vm.dirty_background_ratio=0

vm.dirty_bytes=320000000

vm.dirty_ratio=0

vm.swappiness=10

继续与其他人保持联系,保存/etc/sysctl.conf,重新启动服务器以应用更改,或执行:sysctl -p以应用更改而不重新启动.他们将在重新启动时永久保持.

上面两种方法是最常见的.还有一个,它可能适合你,它是通过使用sudo,几乎就像你在做:

代替:

sudo sysctl -w vm.max_map_count=262144

尝试:

echo 262144 | sudo tee /proc/sys/vm/max_map_count

它适用于ubuntu.

校验:

user@naos:~$cat /proc/sys/vm/max_map_count

262144

希望我有所帮助,至少通过提供3种不同的方案来解决问题,因为你的问题已经差不多一年了;)

问候,拉斐尔普拉多

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值