docker - 如何在 docker 容器中设置 net.ipv4.tcp_tw_recycle
问题描述
在使用 JMeter docker 做压力测试时,我需要根据这个建议设置tcp_tw_recycle以启用快速回收 TIME_WAIT 套接字。但是我在运行 JMeter docker 容器时遇到了错误消息“/proc/sys/net/ipv4/tcp_tw_recycle: no such file or directory”。
docker run --privileged -i -v /e/JMeter:/JMeter -w /JMeter --rm --sysctl net.ipv4.tcp_tw_recycle=1 vinsdocker/jmserver:latest -n -t "/JMeter/TestNginx.jmx" -l "/JMeter/log/log.jtl" -e -o "/JMeter/output/"
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"write sysctl key net.ipv4.tcp_tw_recycle: open ?/proc/sys/net/ipv4/tcp_tw_recycle: no such file or directory\"": unknown.
这个 JMeter docker 镜像的基础镜像是“openjdk:8-jre-slim”。
Docker 版本:
Docker 版本 19.03.8,构建 afacb8b
我发现 /sys/net/ipv4/ 文件夹中的文件在不同的 docker 主机上运行时是不同的。在 Docker Desktop for windows 中,我发现了62 个以 /proc/sys/net/ipv4/tcp_* 开头的文件。但是在 CentOS7 中的 Docker for Linux 中只有6 个此类文件。并且没有名为 tcp_tw_recycle 的文件。为什么它们在不同的 Docker 主机中有所不同?
uname -a
在 Docker Desktop for windows(Wins10) 的容器中执行。
root@b8a08c3ea9ab:/# uname -a
Linux b8a08c3ea9ab 4.19.76-linuxkit #1 SMP Thu Oct 17 19:31:58 UTC 2019 x86_64 GNU/Linux
uname -a
在 Docker for Linux(CentOS7) 的容器中执行。
root@7d929239742c:/# uname -a
Linux 7d929239742c 3.10.0-1127.18.2.el7.x86_64 #1 SMP Sun Jul 26 15:27:06 UTC 2020 x86_64 GNU/Linux
链接:
解决方案
推荐阅读
- excel - 确定闭合工作簿中的单元格内部颜色
- javascript - 在 jquery 中追加有时有效,有时无效
- php - 在登录模式上显示错误
- sql-server - SQL - 一个汇总表,如何解决“无法绑定多部分标识符”的错误。”
- sql-server - SQL Server:Charindex 与标准 where 子句语句,哪个更有效?
- excel - 在 DAX 中,我可以创建一个计算两个日期/时间字段之间的工作日的函数吗?
- java - 为什么使用规则引擎而不是易于理解的一行属性?
- mysql - MySQL中的成本常数
- c - C语言猜数字游戏
- python - 使用 Flask 从 S3 存储桶下载文件