ECS 系统centos7.8 64使用常见命令

  • 启动docker
    • 查看内存使用情况
      • 查看cpu使用率
        • 查看端口占用情况以及对应服务
          • CentOS 7/Red Hat 7/Alibaba Cloud Linux 2
            • 在CentOS 7、Red Hat和Alibaba Cloud Linux 2 系统中,关于如何开启防火墙、关闭防火墙、查看防火墙运行状态,请参考以下信息:
            • 开启防火墙
              • 关闭防火墙
                • 查看防火墙运行状态

                解决docker builid image oom kill (!!!)

                要通过开启swap来解决资源不足的问题,你可以按照以下步骤操作:
                1. 检查当前系统是否已经开启了swap分区:
                  1. 如果没有显示任何swap分区,可以创建一个swap文件。首先,创建一个指定大小的swap文件,例如4GB:
                    1. 设置文件的权限,只允许root用户读写:
                      1. 将文件转换为swap分区:
                        1. 启用swap分区:
                          1. 执行swapon --show命令,确认swap分区已成功启用。
                          请注意,开启swap分区可以提供额外的虚拟内存,但它并不是解决长期性能问题的最佳方法。如果你经常遇到资源不足的问题,建议考虑升级硬件或优化代码。

                          关于第一次使用docker部署项目的大乌龙事件(困扰了好几天的小项目)

                          1.学习docker
                          2.api暴露给使用者,使用微服务架构上游的路由处理移交到下游的rpc去真正处理好并响应回来。
                          3.技术栈 kitex/hertz/gorm
                          4.将user,note,db服务等部署在docker上,使用自定义的网络,容器之间与本地网络是隔离的,公网的其他设备要想访问暴露出去的接
                          口,需要将该api服务 使用-p 指定从本地端口到容器使用的端口的映射。

                          遇到的一些问题困扰较久

                          • 首先是初用docker,使用docker部署到本机windows上,在构建镜像的时候总是会报错,可能是框架对windows的兼容还不够完善。
                          • 随后使用wsl配合vscode在本地的linux子系统中搭建go环境以及相关的依赖进行docker部署,第一个是当时没有发现build.sh的首行脚本解释器可能存在问题,第二个是在本地构建镜像以及搭建项目对c盘占用太大。
                          • 想到可以租一个云服务器,在上面完成应用的镜像构建和部署,不过活动期间的免费使用1个月的服务器内存太小(2核2G贷款1m),引出了后面的问题。
                          • 在centos7.8当中构建我的镜像的时候也会中途出错,不完全completely,一开始真的摸不着头脑,搜索方法找了很多也不见效,后面注意到是signal kill ,被oom也就是内存不足以继续构建镜像被kill了。
                          • 一开始是想着怎么清理释放一些内存来达到目的,后发现怎么清理始终不够,想到虚拟内存或许奏效,尝试一番果然成功了,虽然则这样build过程花的时间颇为长,但还算是最终解决了。却又扑面而来一个新的麻烦。
                          • 将构建好的镜像运行起来,在自定义的网络中,虽然知道容器与本地的网络环境是隔离的,使用本地127.0.0.1:port测试接口虽然没有问题,但是想到部署好的应用总不能是供自娱自乐的,应该是可以通过公网ip加端口在不同路由下调不同api来处理并对数据库进行操作最后返回响应的过程。
                          • 起初只想到是不是我实体机的防火墙问题,或者云服务器上的防火墙问题,又或者是端口映射错误。通过公网ping命令以及ip+80port成功访问到云上部署的网站排除错误。思来想去查看是不是端口冲突了呢,使用命令后发现8080只有dockerproxy在占用,也没有问题。真的苦恼!!!
                          • 最后发现其实是ECS在安全组上没有开放8080这个端口,打开了就顺理成章的可以使用实体机通过云公网ip+端口调用我们写好的笔记api了
                          总结:这个小项目的实现逻辑并不难,主要是将rpc调用,dockers部署以及go框架的学习梳理了一下
                          Loading...