[ekp@ecs-296713 onesearch]$ ./start.sh [ekp@ecs-296713 onesearch]$ ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] ERROR: Elasticsearch did not exit normally - check the logs at /home/ekp/onesearch/onesearch/logs/default.log
时间: 2025-03-24 08:07:36 浏览: 52
### 解决方案
Elasticsearch 启动失败的原因可能是由于 `vm.max_map_count` 设置过低引起的。以下是具体的解决方案:
#### 修改系统参数
为了提高虚拟内存区域的数量限制,可以通过修改 Linux 的内核参数来解决问题。执行以下命令以临时调整该值:
```bash
sysctl -w vm.max_map_count=262144
```
如果希望永久生效,则需要编辑 `/etc/sysctl.conf` 文件并添加或更新以下内容:
```text
vm.max_map_count=262144
```
保存文件后,通过以下命令使更改立即生效:
```bash
sysctl -p
```
此操作可以满足 Elasticsearch 对于虚拟内存的要求[^1]。
---
#### 验证配置是否成功
在完成上述步骤之后,验证当前系统的 `vm.max_map_count` 值是否已正确设置:
```bash
cat /proc/sys/vm/max_map_count
```
返回的结果应为 `262144` 或更高数值。如果没有达到预期值,请重新检查之前的配置过程。
---
#### Docker 环境下的额外注意事项
当使用 Docker 运行 Elasticsearch 时,还需要确保容器内的 `vm.max_map_count` 参数被正确传递给宿主机。可以在启动容器时加入以下选项:
```bash
docker run -e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
--ulimit nofile=65536:65536 \
--ulimit memlock=-1:-1 \
--sysctl vm.max_map_count=262144 \
-p 9200:9200 \
-p 9300:9300 \
docker.elastic.co/elasticsearch/elasticsearch:7.10.0
```
这里的关键部分是 `--sysctl vm.max_map_count=262144` 和其他资源限制的相关参数[^3]。
---
#### 日志排查
即使完成了以上配置,仍需关注 Elasticsearch 的日志输出,确认是否存在其他潜在问题。通常情况下,日志路径位于 `${ES_HOME}/logs/` 下。如果有进一步错误提示,可以根据具体情况逐一解决。
---
#### 总结
通过对操作系统层面的 `vm.max_map_count` 调整以及 Docker 容器环境中的适配,能够有效解决因虚拟内存不足而导致的 Elasticsearch 启动异常问题。同时建议定期优化服务器资源配置,避免类似情况再次发生。
---
阅读全文
相关推荐
















