延迟满足

Linux低延迟服务器系统调优

妖精的绣舞 提交于 2020-02-07 15:18:16
https://zhuanlan.zhihu.com/p/58669088 最近做了一些系统和网络调优相关的测试,达到了期望的效果,有些感悟。同时,我也发现知乎上对Linux服务器低延迟技术的讨论比较欠缺(满嘴高并发现象);或者对现今cpu + 网卡的低延迟潜力认识不足(动辄FPGA现象),比如一篇知乎高赞的介绍FPGA的文章写到“从延迟上讲,网卡把数据包收到 CPU,CPU 再发给网卡,即使使用 DPDK 这样高性能的数据包处理框架,延迟也有 4~5 微秒。更严重的问题是,通用 CPU 的延迟不够稳定。例如当负载较高时,转发延迟可能升到几十微秒甚至更高”,刚好我前几天做过类似的性能测试,发现一个tcp或udp的echo server可以把网卡到网卡的延迟稳定在1微秒以内,不会比FPGA方案慢很多吧? 因此,我觉得有必要分享下自己的见解。总的来说,我打算分两篇文章讨论相关低延迟技术: 1)系统调优(本文):一些低延迟相关的Linux系统设置,和一些原则。 2)网络调优: 使用solarflare网卡降低网络IO延迟 。 这里不打算介绍用户空间的延迟优化,因为太广泛了,另外我之前的文章也分享一些解决某类问题的低延迟类库。 说到低延迟,关键点不在低,而在稳定,稳定即可预期,可掌控,其对于诸如高频交易领域来说尤为重要。 而说到Linux的低延迟技术,一个不能不提的词是"kernel

jQuery.holdReady()方法用法实例

和自甴很熟 提交于 2020-02-04 00:30:29
用此方法可以延迟jQuery的ready事件,也就是说尽管文档已经加载完成,也不会执行ready事件处理方法。 可以多次调用jQuery.holdReady()方法,以延迟jQuery的ready事件,当满足一定条件时,再通过将此方法的参数设置为false,一一解除延迟。方法一般用于动态脚本加载,知道脚本加载完成然后再通过将此方法的参数设置为false,解除对jQuery.ready()事件延迟。 语法结构 : jQuery.holdReady(hold) 参数列表 : 参数 描述 hold 如果值为true,则会延迟jQuery.ready()事件。 如果值为false,则会解除对jQuery.ready()事件延迟。 如果值为false,则会解除对jQuery.ready()事件延迟。 实例代码 : 实例一: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>dom加载的延迟操作</title> <script src="jquery-2.0.3.js"></script> </head> <body> <script> jQuery.holdReady(true); $(document).ready(function(){ alert('我不会弹出'); }); </script> </body> <

MySQL实战45讲学习笔记:MySQL是怎么保证高可用的?(第25讲)

三世轮回 提交于 2019-12-02 06:44:11
一、引子 在上一篇文章中,我和你介绍了 binlog 的基本内容,在一个主备关系中,每个备库接收主库的 binlog 并执行。 正常情况下,只要主库执行更新生成的所有 binlog,都可以传到备库并被正确地执行,备库就能达到跟主库一致的状态,这就是最终一致性。 但是,MySQL 要提供高可用能力,只有最终一致性是不够的。为什么这么说呢?今天我就着重和你分析一下。 这里,我再放一次上一篇文章中讲到的双 M 结构的主备切换流程图。 图 1 MySQL 主备切换流程 -- 双 M 结构 二、主备延迟 主备切换可能是一个主动运维动作,比如软件升级、主库所在机器按计划下线等,也可能是被动操作,比如主库所在机器掉电。 接下来,我们先一起看看主动切换的场景。 在介绍主动切换流程的详细步骤之前,我要先跟你说明一个概念,即“同步延迟”。与数据同步有关的时间点主要包括以下三个: 1. 主库 A 执行完成一个事务,写入 binlog,我们把这个时刻记为 T1; 2. 之后传给备库 B,我们把备库 B 接收完这个 binlog 的时刻记为 T2; 3. 备库 B 执行完成这个事务,我们把这个时刻记为 T3。 所谓主备延迟,就是同一个事务,在备库执行完成的时间和主库执行完成的时间之间的差值,也就是 T3-T1。 你可以在备库上执行 show slave status 命令,它的返回结果里面会显示