java-Ant signjar任务花费太长时间进行时间戳记
作者:互联网
我正在使用Hudson建立一个项目.我有几个jar文件,我想使用Ant SignJar任务用时间戳签名.没有时间戳时,它的工作原理就像一种魅力-一个文件大约需要2-3秒.当我将’tsaurl’属性添加到SignJar任务时,出现问题.然后,一个文件只需花费很少的MINUTES时间.我尝试使用其他时间戳服务器,但没有帮助.有人知道为什么要花这么多时间吗?首先,有什么办法可以解决此问题?
解决方法:
我用jarsign花费太长时间(至少在Linux上)的主要问题是内核熵池干drying了.在这一点上,过程阻塞,直到更多的熵到达.这会导致您看到的症状是,那里的jarsigner进程没有占用CPU时间,但是也没有做太多事情.
在某些时候(从1.5到1.6 AFAIK),Java从使用/ dev / urandom变为/ dev / random.实际的熵实际上是现代计算机上的稀缺资源-大量RAM会减少磁盘活动,缓存内容的智能程序会减少网络活动.有人告诉我,在虚拟机上(就像许多构建服务器一样),熵收集率可能更低.
你可以
>重新配置Java以使用/ dev / urandom(如果您不偏执)
>部署一种将额外的熵注入/ dev / random的方法
我选择了B:我为所选发行版(Ubuntu)安装了randomsound软件包.这会采样迈克中的白噪声,并在干时将其用于将熵注入/ dev / random中.这样做的主要缺点是它会阻止迈克用于其他用途.还有其他获取额外信息的方法,例如将磁盘复制到/ dev / null或进行程序包更新(大量磁盘和网络流量).您可能想用硬件RNG来安装一台或多台服务器,并安装一些可以将“熵即服务”提供给其他服务器的服务器.甚至USB声卡和randomsound都可以工作(服务器机房中有很多白噪声……)
对于选项A,您可以设置属性
-Djava.security.egd=file:/dev/./urandom
(请注意额外的点-这是为了解决“聪明”的一些代码,即使您不这么说,该代码也假设您想要/ dev / random:请参阅:https://bugs.openjdk.java.net/browse/JDK-6202721)
标签:jarsigner,timestamp,java,ant 来源: https://codeday.me/bug/20191029/1961468.html