摘要,一开始的时候我把redis丢在docker里面运行然后本机调用docker内的redis进行测试,基本上一次压测也就是一万左右连接就会出现极少数的端口耗尽的报错,然后一直苦苦寻找解决办法,后来突发想起了docker内部使用了虚拟网关可以帮助我们创建爱网关把golang的二进制文件丢进docker里面运行
第一步先吧golang打包成linux二进制文件 配置个环境变量就行 GOOS=linux就行
然后第二部编写Dockerfile
FROM golang:latest
WORKDIR $GOPATH/src/
COPY httpceshi $GOPATH/src/
RUN chmod +x $GOPATH/src/httpceshi
EXPOSE 9090
ENTRYPOINT ["./httpceshi"]
然后 输入 docker build -t xxxxx .
xxxxx是你要打包成镜像的名字 然后不要忘了后面的 . 表示当前目录
接下来运行镜像
docker run -p 9090:9090 xxxx
用Apache的ab进行压测然后,呵呵redis地址失效 之前用的127.0.0.1:6379习惯了没有改,哦吼,完犊子,各种百度
下面是找到的一个解决办法,不一定适用你,如果不好使,请自行解决 (这是我找到的一个帖子感觉写的挺不错的但是我没搞懂 链接:https://blog.youkuaiyun.com/flymoringbird/article/details/81483144)
输入下面的命令
docker network inspect bridge
然后可以看到下面的内容
拿到了redis的网桥 替换redis地址
重新进行之前的打包镜像 运行镜像
大功告成,虽然不是那么灵活吧,但是也算是一个小小的进步
压测结果 如下别问我为什么只测了一万九次
并发一千共一万九千次 47秒有点略卡 不过一个奔腾的cpu不能要求太高了