标签:sendfile 难点 poll socket kafka 内核 缓冲区 copy
参考文章
[[Kafka常见面试题](https://blog.csdn.net/qq_28900249/article/details/90346599)
[参考文章](https://www.cnblogs.com/juniorMa/articles/13936154.html)
重要考点
- kafka 为什么那么快
-
Cache Filesystem Cache PageCache缓存
-
顺序写 由于现代的操作系统提供了预读和写技术,磁盘的顺序写大多数情况下比随机写内存还要快。
-
Zero-copy 零拷技术减少拷贝次数
-
传统传输文件流程
1. 硬盘—>内核buf—>用户buf—>socket相关缓冲区—>协议引擎
零拷贝
1. sendfile系统调用,文件数据被copy至内核缓冲区
2. 再从内核缓冲区copy至内核中socket相关的缓冲区
3. 最后再socket相关的缓冲区copy到协议引擎
总结
相较传统read/write方式,2.1版本内核引进的sendfile已经减少了内核缓冲区到user缓冲区,再由user缓冲区到socket相关缓冲区的文件copy,而在内核版本2.4之后,文件描述符结果被改变,sendfile实现了更简单的方式,再次减少了一次copy操作
* Batching of Messages 批量量处理。合并小的请求,然后以流的方式进行交互,直顶网络上限。
* Pull 拉模式 使用拉模式进行消息的获取消费,与消费端处理能力相符。
- 消息堆积
- 消费端宕机
增加自动拉起脚本 告警 - 消费能力弱
增强消费能力 异常处理 - 调节消费参数
- max.poll.interval.ms 每次poll消息处理时间调大
- max.poll.records 每次拉取消息条数减小
- 分片少
- 分片不均匀
producer生产时设置key hash到分区均匀
- 消费端宕机
标签:sendfile,难点,poll,socket,kafka,内核,缓冲区,copy 来源: https://blog.csdn.net/mengml_smile/article/details/121154075
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。