cod*_*edd 5 linux ubuntu web-server lxc jenkins
我有一个系统(“主机”),使用 LXC(即“来宾”)运行多个容器。我已经在来宾中安装了 Jenkins,它们似乎按预期工作,只是它们不响应请求。(我之前已经成功安装过几次 Jenkins,包括 LXC。)在这种情况下,观察到的问题是内置 Jenkins Web 服务器 (Jetty) 没有响应 HTTP 请求,即使这些请求是从 Jenkins 内部发出的。它运行的非常 LXC 来宾,即指向localhost.
我已经努力解决这个问题好几天了,但没有成功。
这是尝试从以下位置联系 Jenkins Web 服务器时得到的结果localhost:
root@base:~# curl -vI http://localhost:8080/jenkins/
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8080 (#0)
> HEAD /jenkins/ HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.58.0
> Accept: */*
>
Run Code Online (Sandbox Code Playgroud)
在工作设置中,您应该收到 HTTP-403,因为您尚未经过身份验证,并且回复时间不会超过一两秒,但即使几个小时后,也没有响应。Jenkins 日志文件也没有报告任何错误。
我需要帮助来找出根本原因并解决此问题,以便 Jenkins 安装按预期工作并变得可访问。
有关于寻找什么/在哪里来找出并解决这个问题的任何指示?
以下是我已经研究过的一些事情:
/etc/default/jenkins与我的其他工作设置类似,并且进行了最小的更改(例如仅绑定到本地主机和前缀)。/var/log/jenkins/jenkins.log不报告任何问题,这些问题通常显示为异常的 Java 堆栈跟踪。iptables -S):所有链/规则 ( INPUT、FORWARD和OUTPUT) 均设置为ACCEPT。不过,由于此处的通信是在 内部进行的localhost,因此即使存在其他防火墙规则,我也不会期望出现问题。netstat -tapon):显示 Jenkins(java 进程)侦听预期端口(默认 8080,但我尝试过其他端口);在客户端发送如上所示的请求后,它还显示连接ESTABLISHED(在两端) 。curl这表明 TCP 握手成功。tcpdump -i lo):显示正在进行的 3 次握手;它解释了为什么netstat将连接显示为ESTABLISHED。jetty-9.4.z-SNAPSHOT; built: 2018-06-05T18:24:03.829Z上没有具有此.z-SNAPSHOT名称的版本,因此我使用了基于构建日期的最接近的匹配项进行此测试:)9.4.11.v20180605update-alternatives --config java)。观察到相同的无响应行为。我已经看过但不相关或没有帮助的一些问题:
我读过的书远不止这些;它们只是一个样本。
1这是唯一可以确定的方法……大多数情况下……
如果托管 Jenkins 的系统中有70 个或更多CPU,那么 Jenkins/Jetty 就会卡住并且无法工作。确保 Jenkins 将运行的系统/容器的可用CPU 数量少于 70 个,或者将 Jenkins 安装升级到至少 2.138。2,今天发布(2018-10-10)。
事实证明,詹金斯 2.138。Ubuntu 18.04 LTS 存储库中的 Ubuntu 18.04 LTS 存储库中的 Ubuntu 18.04 LTS 存储库中有一个错误,导致 Jenkins/Jetty 在具有 70 个或更多 CPU 的系统上不响应。詹金斯 2.138。2018 年 10 月 10日今天发布,它修复了几个潜在问题,其中一个问题导致了我遇到的问题。
变更日志在这里。对我来说,关键的修复是这个:
我可以确认此错误修复确实解决了问题,并在我的 72 个 CPU 的服务器上验证了这一点。
如果您(还)无法升级 Jenkins 安装,请继续阅读以了解潜在的解决方法。
如果您在 LXC 中安装 Jenkins,那么您可以使用以下命令进行控制:
lxc config set <container> limits.cpu N, 在哪里N < 70; 和lxc exec <container> -- systemctl restart jenkins.service您可能还需要更新配置文件配置,可以执行以下操作:
lxc profile set <container-profile> limits.cpu N
Run Code Online (Sandbox Code Playgroud)
上面已经显示了相同的警告。如果您使用的是虚拟机(例如 VirtualBox、VMware 等),那么您仍然应该能够设置虚拟机可用的 CPU 数量。
PS:感谢 Pavel 的帖子,它引导我找到了正确的方向来处理 CPU/核心计数。
| 归档时间: |
|
| 查看次数: |
11283 次 |
| 最近记录: |