Linux(Debian 8 Jessie)HRTimer - 内核 - 跳秒问题

8
答案:VM时间同步是一门艺术,我要珍惜已有的并使用它们。这就是为什么:引用:“我花了几年时间尝试在主机和虚拟机之间同步时间,使用和不使用NTP等各种方法。这基本上是一门黑魔法,并且严重依赖于虚拟化程序、内核和一系列设置。我们无法在SO评论中解决这个问题,但如果您有一个已知的好配置,我会回到那里,并逐步更改,直到您知道哪个部分出了问题。” - abligh

编辑:

Percona的信息是为了提供背景,这就是我正在做的事情。但问题在Debian 8内核中被认为是一个闰秒问题。关于hrtimer(高分辨率计时器),Mozilla建议的修复方法是使用Linux中的“日期”函数重置时间,但尝试设置日期告诉我我没有权限,尽管我是root用户。


信息:内幕故事——导致网络崩溃的额外一秒

http://wired.com/2012/07/leap-second-glitch-explained


截屏:

最近一次尝试: http://prnt.sc/c208x2

顶部: http://prnt.sc/c202q9

Mysql 进程列表: http://prnt.sc/c20b4f


背景:

我听说这与闰秒问题有关,但事实并不完全符合我的个人情况。

我在Proxmox中有几个debian linux虚拟机实例。

2个独立的Percona Galera-MySQL集群。

第一个集群是正在使用的原始集群,但它没有这个问题或者从来没有出现过。 我的新集群设置在所有3个节点上都有这个问题。

我尝试应用了几个版本的闰秒修复程序。

date
date -s "`date`"
date -s "`date`"

除了第一个之外,所有内容都是“我没有权限做那个”,但我是root!
而且不工作。
许多重启。
除一个从属节点外,每个实例都具有相同的统计信息,我提高了一个来测试是否存在有限资源问题。
1 GB RAM
1 3.6 GHz CPU
唯一可以说的是,在上传备份数据库后问题开始出现。
数据库是我在第一个集群中已经拥有的一个,大约为5MB,并且主要以关系表列表样式呈现。这些未被使用,多次重启后仍未解决。我陷入了困境。
PS:进程列表为空。(1用于自身查找和2个睡眠空闲)

更多信息请访问: 《内幕:导致网络瘫痪的闰秒问题》 http://www.wired.com/2012/07/leap-second-glitch-explained/ - iGNEOS
你能发布一下“top”命令的上半部分吗?MySQL日志或错误日志中有什么内容吗? - Zmrzka
这纯粹是一个时间问题,它发生在Linux内核中使用的hrtimer(高分辨率计时器)中,我可以发布top,但只有几个项目,主要是每个VM的一个服务,如mysql登录bash等。使用日期函数进行日期设置会收到权限被拒绝的错误消息,这是Debian 8 Jessie。 - iGNEOS
请重新命名和重新标记您的问题,因为您显然确定它与Percona无关。 - Zmrzka
按照建议进行了更正。 - iGNEOS
最近尝试:http://prnt.sc/c202q9 - iGNEOS
1个回答

5
我猜测这里的问题是你在一个虚拟机 (VM) 上运行,甚至是一个容器内部。虽然你是 root 用户,但是从容器 / 客户操作系统中没有权限更改时间。这是因为时间会从宿主操作系统同步,显然不能更改那个时间。
如果是这样,你能在宿主操作系统中解决吗?或者你没有访问权限?
还有一点很有用:
strace -f -s2048 -o/tmp/post-this-file date -s "`date`"

即系统调用跟踪date的痕迹。您提到的HiRes计时器死锁已在上游修复commit id=6b43ae8a619d17c4935c3320d2ef9e92bdeed05d
Debian bug将其合并到内核中,似乎在此处,并描述了修复方法此处(合并到Debian的3.2.29-1和2.6.32-46内核)。您实际运行的内核是什么(uname -a的输出会很有帮助)?这并不总是显而易见,特别是在容器环境中。
如果您尚未尝试过,重新启动Percona可能会解决该问题。
发一些关于环境的更多信息,我可能能够提供更多帮助。

@iGNEOS - 我在你评论的时候添加了一些更多的信息。 - abligh
请原谅我的无知,即使作为一名程序员。但是我该如何应用提交(commit),我知道编译(compiling);我也知道git。 - iGNEOS
@iGNEOS,除非您重新编译内核,否则不需要这么做。但是我在这里提供了相关信息(以及后续的段落),以便您可以确定您正在运行的内核是否修复了问题 - 因为您可能遇到了其他的问题。如果您确实想要应用修补程序,请获取源代码(最好使用 git clonegit checkout),然后创建一个分支 git checkout -b mybranch,并使用 git am 应用该修补程序。然而,更容易的方法是确定您的内核是否已经打上了该补丁(此问题多年前就已解决),如果没有,请升级到一个预编译好的内核版本。 - abligh
@iGNEOS 我也很好奇为什么你无法设置日期。我怀疑这是虚拟化的原因,如果是这样,可能需要修复主机内核。 - abligh
10-4,我会运行测试并发布结果(PS:我在VMS的root上运行了日期函数,它成功了,重启有问题的VM并不能解决问题。因为我们不能在不关闭实时高交易量的网站的情况下重新启动VMS的root,所以最好避免这种操作)。 - iGNEOS
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接