首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux源码TIME_WAIT状态的持续时间

前言 笔者一直以为在Linux下TIME_WAIT状态的Socket持续状态是60s左右。线上实际却存在TIME_WAIT超过100s的Socket。由于这牵涉到最近出现的一个复杂Bug的分析。...所以,笔者就去Linux源码里面,一探究竟。 首先介绍下Linux环境 TIME_WAIT这个参数通常和五元组重用扯上关系。在这里,笔者先给出机器的内核参数设置,以免和其它问题相混淆。...具体问题可以笔者的以往博客。...但图中并没有指出2MSL到底是多长时间,但笔者从Linux源码里面翻到了下面这个宏定义。...Linux内核是通过时间轮来处理到期的TIME_WAIT socket,如下图所示: 内核将60s的时间分为8个slot(INET_TWDR_RECYCLE_SLOTS),每个slot处理7.5(

1.5K00
您找到你想要的搜索结果了吗?
是的
没有找到

Linux时间命令

Linux一般有系统时间和硬件时间之分,date命令是显示和操作系统时间;hwclock用来操作硬件时间(日期)。日期和时间很重要,比如错误的日期和时间会导致你不能编译程序。...[+格式] 作用:可以用来显示或设定系统的日期与时间。 常用参数: -d  显示字符串所指的日期与时间。字符串前后必须加上双引号。 -s  根据字符串来设置日期与时间。...设置系统时间: date -s    需要有root权限 date -s 20160616 设置系统时间为20160616 date -s 10:50:30 设置系统时间为10:50:30...2 hwclock 可以用来显示或者设置硬件时间 记住下面的用法即可: hwclock 查看硬件时间 hwclock -w 修改硬件时间,改成和系统时间一样 hwclock -s 修改系统时间...,改成和硬件时间一样 示例: ?

5K20

从 Kafka 时间轮算法设计

图中的几个参数: tickMs: 时间跨度 wheelSize: 时间轮中 bucket 的个数 startMs: 开始时间 interval:时间轮的整体时间跨度 = tickMs * wheelSize...,需要处理此时间格所对应的TimerTaskList中的所有任务 整个时间轮的总体跨度是不变的,随着指针currentTime的不断推进,当前时间轮所能处理的时间段也在不断后移,总体时间范围在currentTime...秒针走的一圈、分针走的一圈和时针走的一圈就形成了一个多层时间轮的关系。 第N层时间轮走了一圈,等于 N+1 层时间轮走一格。即高一层时间轮的时间跨度等于当前时间轮的整体跨度。...随着时间推进,也会有一个时间轮降级的操作,原本延时较长的任务会从高一层时间轮重新提交到时间轮中,然后会被放在合适的低层次的时间轮当中等待处理; 在 Kafka 中时间轮之间如何关联呢,如何展现这种高一层的时间轮关系...另外还有一个问题,如何推进时间轮的前进,让时间轮的时间往前走 Netty 中的时间轮是通过工作线程按照固定的时间间隔 tickDuration 推进的 如果长时间没有到期任务,这种方案会带来空推进的问题

97741

从 Kafka 时间轮算法设计

img 图中的几个参数: tickMs: 时间跨度 wheelSize: 时间轮中 bucket 的个数 startMs: 开始时间 interval:时间轮的整体时间跨度 = tickMs * wheelSize...,需要处理此时间格所对应的TimerTaskList中的所有任务 整个时间轮的总体跨度是不变的,随着指针currentTime的不断推进,当前时间轮所能处理的时间段也在不断后移,总体时间范围在currentTime...秒针走的一圈、分针走的一圈和时针走的一圈就形成了一个多层时间轮的关系。 img 第N层时间轮走了一圈,等于 N+1 层时间轮走一格。即高一层时间轮的时间跨度等于当前时间轮的整体跨度。...随着时间推进,也会有一个时间轮降级的操作,原本延时较长的任务会从高一层时间轮重新提交到时间轮中,然后会被放在合适的低层次的时间轮当中等待处理; 在 Kafka 中时间轮之间如何关联呢,如何展现这种高一层的时间轮关系...其实很简单就是一个内部对象的指针,指向自己高一层的时间轮对象。 另外还有一个问题,如何推进时间轮的前进,让时间轮的时间往前走。

62020

linux源码epoll

前言 在linux的高性能网络编程中,绕不开的就是epoll。和select、poll等系统调用相比,epoll在需要监视大量文件描述符并且其中只有少数活跃的时候,表现出无可比拟的优势。...本文就是笔者在探究epoll源码过程中,对kernel将就绪描述符添加到epoll并唤醒对应进程的一次源码分析(基于linux-2.6.32内核版本)。...源码socket的阻塞和非阻塞>>中,博客地址如下: https://my.oschina.net/alchemystar/blog/1791017) 既然知道了tfile->f_op->poll的实现...的软中断机制调用net_rx_action,如下图所示: 注:上图来自PLKA(>) step2: 紧接着跟踪next_rx_action next_rx_action...总结 epoll作为linux下非常优秀的事件触发机制得到了广泛的运用。其源码还是比较复杂的,本文只是阐述了epoll读写事件的触发机制,探究linux kernel源码的过程非常快乐_。

2.2K20

linux 时间戳转换dmesg 时间转换

linux时间戳转换 1. 将日期转换成时间戳 $date +%s -d “04/24/2014 15:30:00” 1398324600 2....将当前日期转换成时间戳 $date +%s 1398765730 dmesg 时间转换 dmesg 输出的格式不易查看,可以通过命令进行转换。...″|bc ` seconds” /proc/uptime详解 在Linux中,我们常常会使用到uptime命令去看看系统的运行时间,它与一个文件有关,就是/proc/uptime,下面对其进行详细介绍...(以秒为单位),这里简记为num1; 第二列输出的是,系统空闲的时间(以秒为单位),这里简记为num2。...注意,很多很多人都知道第二个是系统空闲的时间,但是可能你不知道是,在SMP系统里,系统空闲的时间有时会是系统运行时间的几倍,这是怎么回事呢?

36.6K20
领券