dothetrick / binlogportal

mysql binlog同步工具
130 stars 58 forks source link

在活动不频繁的linux服务器上会出现 JVM 阻塞 #3

Closed chc123456 closed 2 years ago

chc123456 commented 3 years ago

BinaryLogClientFactory中生成ServerId的的方法


   private long getRandomServerId() {
        try {
            return SecureRandom.getInstanceStrong().nextLong();
        } catch (NoSuchAlgorithmException e) {
            return RandomUtils.nextLong();
        }
    }

SecureRandom.getInstanceStrong()方法在Linux环境下使用/dev/random生成随机数的种子。但是/dev/random是一个阻塞数字生成器,如果没有足够的随机数据,那么就会一直等待,迫使 JVM 阻塞。

dothetrick commented 3 years ago

感谢反馈,查了下确实可能出现这个问题, 下个版本更新为:new SecureRandom().nextInt(1000000) + 1

dothetrick commented 2 years ago

最新版本1.0.13已修复