docker 容器增加侦听队列大小超过 128
docker container increase listen queue size beyond 128
如何在具有只读文件系统的 docker 图像上将侦听队列大小增加到 128 以上?
当我 运行 我的容器时,我收到以下错误:
uWSGI: - Listen queue size is greater than the system max net.core.somaxconn (128).
我有一个带有基础镜像 python:2.7. I am trying to increase system level limit on Unix socket and TCP connection listen queue so that uwsgi can set a listen queue limit of 1024, as described at uwsgi: your server socket listen backlog is limited to 100 connections 的 Dockerfile。
我尝试将这些 RUN
命令添加到 Dockerfile:
echo 4096 > /proc/sys/net/core/somaxconn
sysctl -w net.core.somaxconn=4096
但是这些都失败了,分别出现以下错误:
/bin/sh: 1: cannot create /proc/sys/net/core/somaxconn: Read-only file system
sysctl: setting key "net.core.somaxconn": Read-only file system
我还尝试安装一个文件来覆盖 /proc/sys/net/core/somaxconn
,但失败并出现错误 cannot be mounted because it is located inside "/proc"
我也在 运行ning 之前在主机上尝试了 运行ning sudo sysctl -w net.core.somaxconn=4096
net.core.somaxconn = 4096
,但它没有反映在 docker 容器中; uwsgi 仍然失败并显示错误 uWSGI: - Listen queue size is greater than the system max net.core.somaxconn (128)
并且 运行ning cat /proc/sys/net/core/somaxconn
在容器中显示 128 而在主机上显示 4096。
您需要在特权模式下 运行 Docker 才能在容器启动后修改 /proc
文件系统,或者升级到更新的 Docker发布。 run
子命令具有 --sysctl
选项,它允许进行您设想的更改:
$ docker run -ti --sysctl net.core.somaxconn=4096 --rm ubuntu /bin/bash
root@9e850908ddb7:/# sysctl net.core.somaxconn
net.core.somaxconn = 4096
如果您更喜欢使用 docker-compose
。这是您要调整的配置:
sysctls:
net.core.somaxconn: 1024
或者
sysctls:
- net.core.somaxconn=1024
参考:https://github.com/compose-spec/compose-spec/blob/master/spec.md#sysctls
如何在具有只读文件系统的 docker 图像上将侦听队列大小增加到 128 以上?
当我 运行 我的容器时,我收到以下错误:
uWSGI: - Listen queue size is greater than the system max net.core.somaxconn (128).
我有一个带有基础镜像 python:2.7. I am trying to increase system level limit on Unix socket and TCP connection listen queue so that uwsgi can set a listen queue limit of 1024, as described at uwsgi: your server socket listen backlog is limited to 100 connections 的 Dockerfile。
我尝试将这些 RUN
命令添加到 Dockerfile:
echo 4096 > /proc/sys/net/core/somaxconn
sysctl -w net.core.somaxconn=4096
但是这些都失败了,分别出现以下错误:
/bin/sh: 1: cannot create /proc/sys/net/core/somaxconn: Read-only file system
sysctl: setting key "net.core.somaxconn": Read-only file system
我还尝试安装一个文件来覆盖 /proc/sys/net/core/somaxconn
,但失败并出现错误 cannot be mounted because it is located inside "/proc"
我也在 运行ning 之前在主机上尝试了 运行ning sudo sysctl -w net.core.somaxconn=4096
net.core.somaxconn = 4096
,但它没有反映在 docker 容器中; uwsgi 仍然失败并显示错误 uWSGI: - Listen queue size is greater than the system max net.core.somaxconn (128)
并且 运行ning cat /proc/sys/net/core/somaxconn
在容器中显示 128 而在主机上显示 4096。
您需要在特权模式下 运行 Docker 才能在容器启动后修改 /proc
文件系统,或者升级到更新的 Docker发布。 run
子命令具有 --sysctl
选项,它允许进行您设想的更改:
$ docker run -ti --sysctl net.core.somaxconn=4096 --rm ubuntu /bin/bash
root@9e850908ddb7:/# sysctl net.core.somaxconn
net.core.somaxconn = 4096
如果您更喜欢使用 docker-compose
。这是您要调整的配置:
sysctls:
net.core.somaxconn: 1024
或者
sysctls:
- net.core.somaxconn=1024
参考:https://github.com/compose-spec/compose-spec/blob/master/spec.md#sysctls