我做运维的故事
迁移服务器
时遇到的各种问题
127.0.0.1 vs 0.0.0.0
curl: 56 Recv failure: 连接被对方重设 解决:docker容器内可以访问web应用,端口映射到宿主机却无法访问,错误代码:curl: 56 Recv failure: 连接被对方重设_curl: (56) recv failure: 连接被对方重设-CSDN博客 至于我,也是先确认了容器内部,宿主机上 0.0.0.0 和 localhost 都可以访问…试着试着,访问127.0.0.1 就也正常了=.=
es 内存占用
问题:人家发现我装的 elasticsearch 占用内存过高,给图
![[Pasted image 20240126152414.png]]
原因:看到 Command 里,使用的是 elasticsearch 自带的 jdk(后来发现是超级新的 jdk 21 版,不知道为啥贼慢)。然后要如何开始 debug 呢?
- es 是通过啥启动的?systemctl
- systemctl xx
启动的到底是哪里的 bin?这个我其实不知道
- 按照 service 配置文件来。systemctl cat xx
可以查看配置文件的位置。
- 所以我终于找到了 elasticsearch.service
,找到了它的入口文件 ExecStart=/usr/share/elasticsearch/bin/systemd-entrypoint -p ${PID_DIR}/elast
- 然后前往 systemd-entrypoint
,找到主要的执行文件
- 确定执行文件里启动 java 时读了 $JAVA_HOME, 遇到了奇怪的事,于是我略略调试一下
- 直接启动执行文件: $JAVA_HOME 确实是系统上装的 java 环境变量
- 通过 systemctl 启动:$JAVA_HOME 是 elasticsearch 复写的
- 那为什么通过 systemctl 启动时,读不到系统的 $JAVA_HOME 变量呢
- 确认系统的 $JAVA_HOME 写入方式:/etc/profile
- 搜索,发现 systemctl 启动确实是读不到的!要在 service 配置里通过 Environment 或者 EnviromentFile 的方式来设置~