0

我有两个在 jetty 版本9.2.11下运行 gitblit 的 VM 。两者都在 ubuntu 服务器 14.04中使用 java 8(最新更新"1.8.0_77" )。

我注意到的唯一区别是内核版本

其中之一是

2.6.32-042stab111.12 #1 SMP Thu Sep 17 11:38:20 MSK 2015 x86_64 x86_64 x86_64 GNU/Linux(我们称之为服务器 1)

另一个是

2.6.32-042stab113.21 #1 SMP Wed Mar 23 11:05:25 MSK 2016 x86_64 x86_64 x86_64 GNU/Linux(我们称之为服务器 2)

在服务器 1 上,一切正常。

但是在服务器 2 上,gitblit 的上下文没有启动和运行。

日志中的最后一条记录是:

2016-04-12 22:22:53 [INFO ] Federation passphrase is blank! This server can not be PULLED from.
2016-04-12 22:22:53 [INFO ] Fanout PubSub service is disabled.
2016-04-12 22:22:53 [INFO ] Git Daemon is listening on 0.0.0.0:9419

之后,jetty 的服务失败,上下文不可用。该应用程序将永远保持 STARTING 状态。

我尝试重新安装 ssh 服务器和客户端,但没有成功。

有人可以帮我吗?

问候

4

1 回答 1

0

在我发布我的问题几天后,我找到了正确的答案。

我按照以下步骤检测问题的根本原因:

  1. 我已经下载了我正在使用的gitblit版本的源代码。在这种情况下,版本 1.7.1在此处可用。
  2. 使用源代码,我添加了一些快速日志(使用 sysout),仅用于检查应用程序何时冻结。我注意到问题出在Apache MINA sshd的代码中。
  3. 我还下载了Apache MINA sshd的源代码进行调试。在这种情况下,我无法添加 sysout,然后我选择在服务器上运行的码头中进行远程调试,如此处所述

当然,它有点慢,但我注意到当 sshd 的代码SecureRandom.generateSeed(8)在类SecurityUtils.BouncyCastleRandom中调用时

public BouncyCastleRandom() {
    ValidateUtils.checkTrue(isBouncyCastleRegistered(), "BouncyCastle not registered");
    this.random = new VMPCRandomGenerator();
    byte[] seed = new SecureRandom().generateSeed(8);
    this.random.addSeedMaterial(seed);
}

该系统用于完全冻结。

在互联网上搜索了很长时间后,我找到了这个链接/博客https://blog.cloudflare.com/ensuring-randomness-with-linuxs-random-number-generator/,当我输入命令时,cat /proc/sys/kernel/random/entropy_avail我总是得到结果为 0(零)。

我知道我的 Linux 是在 host1plus 中托管的o​​penvz下运行的 VPS 。基于此,我要求 VPS 提供商检查在我的 VPS 中我总是得到零的原因。

技术支持的回答是:

我们已经为您的 VPS 启用了随机设备。请检查它是否适合您以及问题是否已解决。

在那次更新之后,我的 gitblit 恢复到启动和运行状态。

于 2016-05-24T14:11:47.540 回答