美文网首页
本地起 elasticsearch 问题

本地起 elasticsearch 问题

作者: Robin92 | 来源:发表于2019-02-14 20:07 被阅读2次

本地启动 elasticsearch 时,因虚拟内存太小,启动不起来

现象描述

  • 新装机 xubuntu 后,第一次装 elasticsearch。
  • 命令 > docker images 后有 docker.quncrm.com/elastic/elasticsearch 5.3.2 表明已拉取了镜像。
  • 启动一个容器 docker run -d -p 9200:9200 --name elasticsearch docker.quncrm.com/elastic/elasticsearch:5.3.2,没有现象
  • 此时 docker ps 是没有的,因为失败了,所以加上 docker ps -a 可以看到存在
  • 此时可以查看容器中 log 输出,命令:docker logs elasticsearch --tail 30,输出最末30行
  • 查看到有一条信息: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
  • 查询网上解释后,是因为系统设置 vm.max_map_count 值太小的原因

max_map_count 文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。调优这个值将限制进程可拥有VMA的数量。限制一个进程拥有VMA的总数可能导致应用程序出错,因为当进程达到了VMA上线但又只能释放少量的内存给其他的内核进程使用时,操作系统会抛出内存不足的错误。如果你的操作系统在NORMAL区域仅占用少量的内存,那么调低这个值可以帮助释放内存给内核用。参考

修复

  • 可修改 /etc/sysctl.conf 文件,加上(或修改)配置 vm.max_map_count=655360
  • 最后再执行 sysctl -p 重新装载配置

延伸

  • 另外在用 vsCode 时,有报错因项目工程太大而无法监控:“Visual Studio Code is unable to watch for file changes in this large workspace”
  • 这同样需要改此文件的配置,加上一条 fs.inotify.max_user_watches = 524288
  • 再重新装载即可
  • 之后可去了解下 sysctl.conf 有哪些可用配置

相关文章

网友评论

      本文标题:本地起 elasticsearch 问题

      本文链接:https://www.haomeiwen.com/subject/ijeyeqtx.html