我和我的团队正在使用 docker-compose 将我们的一些基础设施转换为 docker。一切似乎都工作得很好,我遇到的唯一问题是重新启动它给我一个连接池已满错误。我正在尝试找出造成这种情况的原因。如果我删除 2 个容器或(1 个完整设置),它就可以正常工作。
关于我正在尝试做的事情的一些背景。这是一个 Ruby on Rails 应用程序,针对组织内的不同团队使用多种不同的配置运行。该服务器总共运行 14 个不同的容器。主机服务器操作系统是 CentOS,并且从同一网络上的 MacBook Pro 运行 compose 命令。我也用 boot2docker 虚拟机尝试过,得到了相同的结果。
这是命令的详细输出(使用 boot2docker 虚拟机)https://gist.github.com/rebelweb/5e6dfe34ec3e8dbb8f02c0755991ef11 https://gist.github.com/rebelweb/5e6dfe34ec3e8dbb8f02c0755991ef11
任何帮助或指示表示赞赏。
我一直在努力解决这个错误消息以及我的开发环境,该环境使用通过执行的十多个容器docker-compose
.
WARNING: Connection pool is full, discarding connection: localhost
我想我已经找到了这个问题的根本原因。 python 库requests
维护一个 HTTP 连接池docker
库用于与 docker API 以及容器本身进行对话。我的假设是,只有我们这些使用超过 10 个容器的 docker-compose 的人才会看到这一点。问题是双重的。
-
requests
默认其连接池大小为 10,并且
- 似乎没有任何方法可以从
docker-compose
or docker
图书馆
我拼凑了一个解决方案。我的图书馆requests
位于~/.local/lib/python2.7/site-packages
。我发现requests/adapters.py
并改变了DEFAULT_POOLSIZE
从 10 到 1000。
这不是一个生产解决方案,非常晦涩难懂,并且无法在软件包升级后继续存在。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)