永久解决 WSL vm.max_map_count 65530 is too low 的问题
问题
在使用基于 WSL 的 Docker 的时候,启动 ES 总是会出现 vm.max_map_count 65530 is too low 问题,导致容器无法启动,网上答案基本就两种,例如 stackoverflow 这个链接给出的答案是:
$ wsl -d docker-desktop
$ sysctl -w vm.max_map_count=262144
值得注意的是,以上修改只在当前会话有效,重启 Windows 和 WSL 都要重新设置,后面作者也给出回答:
If you want to set this permanently, you need to edit
/etc/sysctl.confand setvm.max_map_countto 262144.
但是该设置在 WSL 中并不生效,因为 WSL 并不会读取 /etc/sysctl.conf 配置文件
解决方案
在尝试 N 种方案没有效果后,决定另辟蹊径,从其他方面考虑,既然每次启动都要执行 sysctl -w vm.max_map_count=262144 命令,那就想办法让它自动执行。通过以下两种方式可以实现
一:在 WSL2 ubuntu 里面设置启动参数,命令如下:
$ vim /etc/init.wsl
#! /bin/sh
sysctl -w vm.max_map_count=262144
然后切回到 Windows 中,创建文件,并且加入以下内容:
Set ws = WScript.CreateObject("WScript.Shell")
ws.run "wsl -d Ubuntu-20.04 -u root /etc/init.wsl"
以上的 Ubuntu-20.04 可以改为你的 WSL Linux 发行版名称,你可以通过 wsl --list 查看
然后将文件通过 *.vbs 格式保存,例如我的是 WSL-linux-start.vbs 文件,然后按 "Win + R" 输入 shell:startup 打开启动目录,将 *.vbs 放入即可,如下:

验证
通过以上设置,在重启电脑后,打开 WSL 输入命令,可以看到分配的虚拟内存为 262144:
$ sysctl vm.max_map_count
vm.max_map_count = 262144
这样就解决了每次启动都需要重复输入命令的问题了
永久解决 WSL vm.max_map_count 65530 is too low 的问题的更多相关文章
- max virtual memory areas vm.max_map_count 65530 is too low的解决办法
解决办法 /etc/sysctl.conf加上 vm.max_map_count = 262144 使配置永久生效 执行: sysctl -w vm.max_map_count=262144 使配置立 ...
- max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
elasticsearch启动时遇到的错误 问题翻译过来就是:elasticsearch用户拥有的内存权限太小,至少需要262144: 解决: 切换到root用户 执行命令: sysctl -w vm ...
- max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
sh- /etc/sysctl.conf vm.max_map_count = #在/etc/sysctl.conf追加上面一条 #并执行命令: sysctl -p
- k8s 部署elasticsearch报 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
1.由于登不上云的节点 不采用修改节点配置的方式 修改部署的stateful 加上 initContainers 它和 containers 同一层级的 initContainers: - name: ...
- Docker启动Elasticsearch报错vm.max_map_count
报错信息如下 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 临 ...
- vm.max_map_count
Virtual memoryedit Elasticsearch uses a hybrid mmapfs / niofs directory by default to store its indi ...
- MySQL如何永久解决由dos编码格式导致MySQ的显示乱码
MySQL如何永久解决由dos编码格式导致MySQ的显示乱码 Ⅰ.新建文件 changeCode.txt Ⅱ.粘贴下面代码(作用:将默认的GBK(936)修改为UTF-8(65001)) Window ...
- Docker++:docker运行Tomcat后访问首页报404 (永久解决方式)
docker运行Tomcat后访问首页报404 与 tomcat 版本有关. 解决方式如下: 1.查看防火墙问题 2.Tomcat 下如果有 webapps.dist 和 webapps 则需要进行合 ...
- 永久解决IDEA 连接 mysql时区问题`
永久解决IDEA 连接 mysql时区问题` 找到mysql的安装路径下的my.ini文件 加入以下代码 [mysqld] default-time_zone='+8:00' 关闭然后保存 打开然后以 ...
- 解决wsl不能安装z.sh问题
z.sh是韦大很推崇的类似autojump的bash插件,能够很方便的寻找目录,然而wsl下不能直接使用,解决方法在其github仓库(z)的issue中找到: Reproduce it at Mic ...
随机推荐
- Java循环标签
大家是否见过这种for循环,在for循环前加了个标记的: outerLoop: for (; ; ) { for (; ; ) { break outerLoop; } } 我之前有一次在公司业务代码 ...
- STM32 芯片锁死解决方法
芯片锁死原因: 1.烧进去的工程对应器件与目标器件不一致: 2.烧进去的工程HSE_VALUE与目标板上晶振频率不一致: 3.... 解决方法: 1.工程设置 2.按住复位按键,或短接复位脚电容,点击 ...
- [转帖]TiDB BR 备份至 MinIO S3 实战
https://tidb.net/blog/3a31d41d#3.%E9%83%A8%E7%BD%B2%20MinIO%20S3%20%E5%8F%8A%E5%A4%87%E4%BB%BD%E6%81 ...
- [转帖]SSL数字证书分类DV/OV/EV
SSL证书的分类主要是通过下面两个维度进行分类: 1.根据验证模式分类 根据CA机构对申请者的身份审核范围分为:DV证书.OV证书.EV证书. 1.1.DV证书(域名证书) DV(Domain Val ...
- [转帖]Redis如何绑定CPU
文章系转载,便于分类和归纳,源文地址:https://www.yisu.com/zixun/672271.html 绑定 CPU Redis 6.0 开始支持绑定 CPU,可以有效减少线程上下文切换. ...
- [转帖]总结:Tomcat的IO模型
一.介绍 对于 linux 操作系统,IO 多路复用使用的是 epoll 方式,对于 windows 操作系统中 IO 多路复用使用的是 iocp 方式,对于 mac 操作系统 IO 多路复用使用的是 ...
- C#开源免费的开发效率提升利器:DevToys开发人员的瑞士军刀!
前言 今天分享一款基于C#开源(MIT License开源协议).免费.离线.功能齐全的Windows开发者工具箱,号称开发人员的瑞士军刀,可以帮助开发者完成日常工作开发中常用功能:DevToys. ...
- Skia 编译及踩坑实践
本文要点 •了解并入门 Skia.OpenGL 和 Vulkan •了解 Skia 在后端渲染上的坑点 前言 Skia 是什么 Skia 是一个开源 2D 图形库,提供可跨各种硬件和软件平台工作的通用 ...
- 一文搞懂Redis
作者: 京东物流 刘丽侠 姚再毅 康睿 刘斌 李振 一.Redis的特性 1.1 Redis为什么快? 基于内存操作,操作不需要跟磁盘交互,单次执行很快 命令执行是单线程,因为是基于内存操作,单次执行 ...
- elementui 的tabs组件出现蓝色边框问题
elementui 的tabs组件出现蓝色边框问题 /deep/ .el-tabs__item:focus.is-active.is-focus:not(:active) { -webkit-box- ...