AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[leapsecond](server)

Martin Hope
amosk
Asked: 2017-01-14 13:51:12 +0800 CST

如何在不重新启动的情况下解决闰秒睡眠问题

  • 5

我发现在最新的闰秒插入之后(2016-12-31 23:59:60),我们的 CentOS7 应用程序在工作之间有工作线程休眠 1 秒,开始立即唤醒休眠线程,而不是在一秒钟内。一般来说,所有睡眠都比预期的醒来时间早 1 秒。

最简单且有效的解决方案是重新启动盒子。但这在我们的情况下是不可取的。有没有办法在不重新启动的情况下解决这个问题?

PS。作为参考,这里有一个用 C++ 编写的简单程序,它重现了这个问题。

#include <boost/date_time.hpp>
#include <boost/thread.hpp>
#include <iostream>

using namespace std;


// this has to be run in a thread to be able to detect the issue
void check_thread()
{
    size_t expected_delay = 1000;
    cout << "Expected delay: " << expected_delay << " ms" << endl;
    boost::posix_time::ptime t1 = boost::posix_time::microsec_clock::universal_time();
    boost::this_thread::sleep(boost::posix_time::milliseconds(1000));
    boost::posix_time::ptime t2 = boost::posix_time::microsec_clock::universal_time();
    size_t actual_delay = (t2 - t1).total_milliseconds();
    cout << "Actual delay: " << actual_delay << " ms" << endl;
    if (abs(expected_delay - actual_delay) > 900) {
        cout << "Too big delay difference: " << (expected_delay - actual_delay) << endl;
        cout << "Possible leap second issue" << endl;
    }
    else {
        cout << "No issues found" << endl;
    }
}

int main()
{
    boost::thread_group g;
    g.create_thread(check_thread);
    g.join_all();
    return 0;
}

建造:

g++ sleep_test.cpp -Wl,-Bstatic -lboost_thread -lboost_system -lboost_date_time -Wl,-Bdynamic -rdynamic -pthread
linux leapsecond
  • 2 个回答
  • 202 Views
Martin Hope
Diomidis Spinellis
Asked: 2016-12-26 12:44:20 +0800 CST

如何配置 Unix 系统以在 TAI 时间运行?

  • 5

我想将 Unix 系统配置为在国际原子时间(TAI) 上运行,以便能够看到正确报告为 2016-12-31 23:59:60 的年终闰秒。我知道这会导致系统的时间戳与 POSIX 的时间戳不兼容,但我这样做是作为一个实验。我已经将时区文件从复制/usr/share/zoneinfo/right/到/etc/localtime. 这些是我的问题。

  • 如何准确设置系统时间?我知道它必须设置为 TAI 秒,而不是 UTC 秒。是否可以通过 NTP 做到这一点?目前,系统显示的时间与正确的时间相差 36 秒。
  • 2017-02-01 之后显示的时间会继续正确吗?时zoneinfo/right区文件是否需要更新?
ntp leapsecond
  • 2 个回答
  • 1715 Views
Martin Hope
User402841
Asked: 2012-07-16 08:31:33 +0800 CST

Fit-PC因闰秒变砖,如何防止秒秒失效?

  • 3

我使用了三台Fit-PC。它们被用作轻量级 Linux 服务器。不幸的是,在 6 月 30 日,由于闰秒错误,他们中的第一个未能启动。我尝试重新启动它几次,但在第三次启动尝试后屏幕仍然空白。这似乎与硬件有关,我们把它交给了维修人员。他告诉我们有些东西过热,主板坏了。他能够恢复数据,但 fit-pc 已注销。

几天后,第二台 Fit-PC 无法重启(这是我们第一次真正尝试重启)。幸运的是,它在第​​三次尝试时重新启动,现在工作正常。

第三台 Fit-PC 没有出现任何问题。当我发现其他人因为闰秒而失败时,我实际上认为我们很幸运有这第三个。事实上,最近服务器运行缓慢很可能是由于同一个错误,现在我重新启动了这台机器(6 月 30 日之后的第一次),它给了我与其他人完全相同的症状。这些症状是:

  • 初始重启尝试失败;操作系统不加载。
  • 我连接一个屏幕以查看发生了什么。保持黑色。
  • 我再次重启。我现在看到常规加载屏幕(“Intel Atom...”),但是它冻结了
  • 我再次尝试重启。
  • 屏幕现在根本不激活。它现在确实显示出任何生命迹象。监视器就像什么都没有发送任何信号一样,所以我无法与 CPU 进行任何交互。

我已经尝试重新启动大约 4 次了,但我非常担心和以前一样的问题。在我住的地方,Fit-PC 并不常见,我不确定是否有合格的技术人员真正知道如何修理它(我什至不确定其他技术人员的诊断是否正确)。所以我想问:您是否也认为我的主板过热并且是另一台 Fit-PC 变砖了,或者我还能做些什么?

编辑:在所有 Fit-PC 上使用 Ubuntu 12.04。

编辑:

我也考虑过电源故障。但是有一些不一致的地方:

  • 服务器位于三个不同的站点上,
  • 没有电涌报告,也没有其他硬件受到影响 - 天气晴朗,平静,
  • 这三台机器之间唯一的相似之处是,它们从 6 月 30 日开始表现得很奇怪(第三台机器负载很高,但我直到 6 月 30 日第一次重启后才意识到这一点,我今天这样做了)。

我也找不到其他受闰秒影响的 Fit-PC,但我不确定还有什么可能导致这种情况......

linux leapsecond
  • 3 个回答
  • 1041 Views
Martin Hope
Bron Gondwana
Asked: 2012-07-01 08:15:09 +0800 CST

还有其他人在闰秒期间遇到 Linux 服务器崩溃率很​​高的情况吗?

  • 363
锁定。这个问题及其答案被锁定,因为这个问题是题外话但具有历史意义。它目前不接受新的答案或互动。

*注意:如果您的服务器仍然由于内核混乱而出现问题,并且您无法重新启动 - 建议在您的系统上安装 gnu date 的最简单解决方案是:date -s now。这将重置内核的内部“time_was_set”变量并修复 Java 和其他用户空间工具中占用 CPU 的 futex 循环。我已经在我自己的系统上跟踪了这个命令,并确认它正在做它在罐头上所说的 *

尸检

虎头蛇尾:唯一死掉的是我的 VPN (openvpn) 链接到集群,所以在它重新建立时有几秒钟令人兴奋。其他一切都很好,在闰秒过去后启动 ntp 顺利进行。

我在http://blog.fastmail.fm/2012/07/03/a-story-of-leaping-seconds/上写下了当天的全部经历

如果您在http://my.opera.com/marcomarongiu/blog/2012/06/01/an-humble-attempt-to-work-around-the-leap-second查看 Marco 的博客- 他有一个解决方案使用 ntpd -x 在 24 小时内分阶段更改时间以避免跳过 1 秒。这是运行您自己的 ntp 基础设施的替代涂抹方法。


就在今天,2012 年 6 月 30 日星期六 - 格林威治标准时间当天开始后不久开始。我们在由不同团队管理的不同数据中心中有几台服务器都变暗了——不响应 ping,屏幕空白。

他们都在运行 Debian Squeeze——从库存内核到自定义 3.2.21 构建的一切。大多数是戴尔 M610 刀片,但我也刚刚丢失了一台戴尔 R510,其他部门也丢失了其他供应商的机器。还有一个旧的 IBM x3550 崩溃了,我认为它可能无关,但现在我想知道。

我确实从中得到屏幕转储的一次崩溃说:

[3161000.864001] BUG: spinlock lockup on CPU#1, ntpd/3358
[3161000.864001]  lock: ffff88083fc0d740, .magic: dead4ead, .owner: imapd/24737, .owner_cpu: 0

不幸的是,所有刀片服务器都应该配置了 kdump,但它们死得太厉害以至于 kdump 没有触发 - 而且它们打开了控制台消隐。我现在已经禁用了控制台消隐,所以祈祷下次崩溃后我会得到更多信息。

只是想知道这是一个共同话题还是“只有我们”。真的很奇怪,它们是在不同时间购买的不同数据中心的不同单元,由不同的管理员运行(我运行 FastMail.FM 的)......现在甚至是不同的供应商硬件。大多数崩溃的机器已经运行了数周/数月,并且运行的是 3.1 或 3.2 系列内核。

最近的一次崩溃是一台运行 3.2.21 的机器只运行了大约 6 个小时。

解决方法

好吧,这就是我解决它的方法。

  1. 禁用的 ntp:/etc/init.d/ntp stop
  2. 创建了http://linux.brong.fastmail.fm/2012-06-30/fixtime.pl(从 Marco 窃取的代码,请参阅评论中的博客文章)
  3. 没有争论地跑去fixtime.pl看看有闰秒设置
  4. 运行fixtime.pl参数以删除闰秒

注意:取决于adjtimex. 我在http://linux.brong.fastmail.fm/2012-06-30/adjtimexadjtimex上放了一个 squeeze二进制文件的副本——它将运行而不依赖于 squeeze 64 位系统。如果将它放在与 相同的目录中,则在系统不存在时将使用它。显然,如果您没有 squeeze 64 位……找到您自己的。fixtime.pl

我ntp明天要重新开始。

正如一位匿名用户所建议的那样——跑步的另一种选择adjtimex是自己设置时间,这可能也会清除闰秒计数器。

linux debian ntp server-crashes leapsecond
  • 5 个回答
  • 152304 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve