摘要: 在网络开发中,我发现有很多同学对一个基础问题始终是没有彻底搞明白。那就是一台机器最大究竟能支持多少个网络连接?我想我有必要单独发一篇文章来好好说一下这个问题。很多同学看到这个问题的第一反应是65535。原因是:“听说端口号最多有65535个,那长连接就最多保持65535个了”。是这样的吗?还有的人说 阅读全文
posted @ 2020-12-04 09:23 zhangyanfei01 阅读(1114) 评论(0) 推荐(0) 编辑
摘要: 在互联网后端日常开发接口的时候中,不管你使用的是C、Java、PHP还是Golang,都避免不了需要调用mysql、redis等组件来获取数据,可能还需要执行一些rpc远程调用,或者再调用一些其它restful api。 在这些调用的底层,基本都是在使用TCP协议进行传输。这是因为在传输层协议中,T 阅读全文
posted @ 2020-12-04 09:10 zhangyanfei01 阅读(1123) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章中《图解Linux网络包接收过程》,我们梳理了在Linux系统下一个数据包被接收的整个过程。Linux内核对网络包的接收过程大致可以分为接收到RingBuffer、硬中断处理、ksoftirqd软中断处理几个过程。其中在ksoftirqd软中断处理中,把数据包从RingBuffer中摘下来 阅读全文
posted @ 2020-12-04 09:06 zhangyanfei01 阅读(1256) 评论(0) 推荐(1) 编辑
摘要: 前面和大家分享了我在CPU、内存、磁盘上的一点浅薄的思考。今天开始我们讨论Linux里最重要的一个模块-网络模块。还是按照惯例来,让我们从一段最简单的代码开始思考。为了简单起见,我们用upd来举例,如下: int main(){ int serverSocketFd = socket(AF_INET 阅读全文
posted @ 2020-12-04 08:58 zhangyanfei01 阅读(1213) 评论(0) 推荐(1) 编辑
摘要: 相信大家都知道固态硬盘(SSD)的优势在于速度比传统的机械硬盘(HDD)要快,所以现在线上服务器里越来越多看到固态硬盘的出现。不过作为一个对性能数字斤斤计较的开发,我想更精确地弄明白搭载SSD的服务器在IO性能上比搭载HDD的究竟快多少,顺序IO情况下快多少,随机IO情况下又能快多少?终于在最近抽空 阅读全文
posted @ 2020-11-06 09:20 zhangyanfei01 阅读(638) 评论(0) 推荐(1) 编辑
摘要: 大家都知道硬盘的随机IO很慢,但是比顺序IO慢多少呢,不知道你是否有过数字上的直接对比。今天我来实际压测对比一下磁盘在顺序IO和随机IO不同场景下的性能数据表现。通过今天的实验数据,你将能深刻理解数据库事务中为什么要用日志的方式来实现,为什么索引中要用节点更大的B+树。 对于任何存储系统,性能指标无 阅读全文
posted @ 2020-11-06 09:09 zhangyanfei01 阅读(677) 评论(0) 推荐(0) 编辑
摘要: 在前文《read文件一个字节实际会发生多大的磁盘IO?》写完之后,本来想着偷个懒,只通过读操作来让大家了解下Linux IO栈的各个模块就行了。但很多同学表示再让我写一篇关于写操作的。既然不少人都有这个需求,那我就写一下吧。 Linux内核真的是太复杂了,源代码的行数已经从1.0版本时的几万行,到现 阅读全文
posted @ 2020-11-06 09:00 zhangyanfei01 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 先讲一个作者大约7年前我在某当时很火的一个应用分发创业公司的面试小插曲,该公司安排了一个刚工作1年多的一个同学来面我,聊到我们项目中的配置文件里写的一个开关,这位同学就跳出来说,你这个读文件啦,每个用户请求来了还得多一次的磁盘IO,性能肯定差。借由这个故事其实我发现了一个问题,虽然我们中的大部分人都 阅读全文
posted @ 2020-11-05 09:13 zhangyanfei01 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 在前文《磁盘开篇:扒开机械硬盘坚硬的外壳!》和《拆解固态硬盘结构》中,我们了解到了硬盘基本单位是扇区。在《磁盘分区也是隐含了技术技巧的》中我们也了解了磁盘分区是怎么回事,但刚分完区的硬盘也是不能直接被被操作系统使用的,必须还得要经过格式化。那么今天我们就简单聊一聊,Linux下的格式化到底都干了些啥 阅读全文
posted @ 2020-11-05 08:48 zhangyanfei01 阅读(461) 评论(0) 推荐(0) 编辑
摘要: 不知道你有没有遇到过当一个文件夹下文件特别多,在下面执行ls命令的时候要等好长时间才能展现出来的问题?如果有,你有想过这是为什么吗,我们该如何解决? 要想深入理解这个的问题产生的原因,我们就需要从文件夹占用的磁盘空间开始讨论了。 inode消耗验证 在《新建一个空文件占用多少磁盘空间?》中我提到了每 阅读全文
posted @ 2020-11-05 08:41 zhangyanfei01 阅读(621) 评论(0) 推荐(0) 编辑