какие системные часы выполняет System.currentTimeMillis (); использовать в Java на CentOS - PullRequest
0 голосов
/ 21 января 2020

Я столкнулся с проблемой в моем кластере oop, вызванной этой строкой кода

long endTime = System.currentTimeMillis();
        if (startTime > endTime) {
            System.out.println("WARNING: Clock skew between the Oozie server host and this host detected.  Please fix this.  " +
                    "Attempting to work around...");
            // We don't know which one is wrong (relative to the RM), so to be safe, let's assume they're both wrong and add an
            // offset in both directions

, найденной здесь

Я написал образец * Программа 1022 *, которая просто печатает текущее время в миллисекундах на узлах.

public class CurrentTimeMillisExample {

    public static void main(String... args) {
        long l = System.currentTimeMillis();
        System.out.println(l);
    }
}

Это действительно показывает, что время между узлами отличается, обычно только в миллисекундах. Проблема в том, что если узел, завершающий работу, опережает на несколько миллисекунд все, что с датами, испорчено. Я хотел бы знать, откуда java тянет время. Я использую ntptime на всех этих системах.

РЕДАКТИРОВАНИЕ1:

Примеры разницы во времени
server1: 1579614657155 - вторник, 21 января 2020 г. 8: 50: 57.155 AM GMT-05: 00
server2: 1579614693828 - вторник, 21 января 2020 г. 8: 51: 33.828 AM GMT-05: 00
server3: 1579614693035 - вторник, 21 января 2020 г. 8: 51: 33.035 AM GMT-05: 00

Таким образом, он выглядит как сервер 1 время достаточно отличается, чтобы повлиять на это. Мне все еще нужно знать, откуда java тянет это системное время?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...