首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏陶辉笔记

    高性能网络编程4–TCP连接的关闭

    4、so_linger这个功能的用处在哪? 5、对于监听socket执行关闭,和对处于ESTABLISH这种通讯的socket执行关闭,有何区别? 所以,会在最后一个报文中加入FIN标志,同时,关闭用于减少网络中小报文的angle算法,向连接对端发送消息。如果没有待发送的消息,则构造一个报文,仅含有FIN标志位,发送出去关闭连接。 如果close时发出的消息其实丢失在网络中了,那么,进程突然退出时连接上发出的RST就可能被对方收到,而且,之前丢失的消息不会有重发来保障可靠性了。 然而,网络环境又得复杂的,如果对方总是不响应怎么办?所以还需要l_linger这个超时时间,控制close阻塞进程的最长时间。 4)若参数中有标志位为关闭写,那么下面做的事与close是一致的:发出FIN包,告诉对方,本机不会再发消息了。 以上,就是close与shutdown的主要行为,同时也回答了本文最初的5个问题。

    2.4K50发布于 2019-06-21
  • 来自专栏用户2442861的专栏

    高性能网络编程4--TCP连接的关闭

    4、so_linger这个功能的用处在哪? 5、对于监听socket执行关闭,和对处于ESTABLISH这种通讯的socket执行关闭,有何区别? 所以,会在最后一个报文中加入FIN标志,同时,关闭用于减少网络中小报文的angle算法,向连接对端发送消息。如果没有待发送的消息,则构造一个报文,仅含有FIN标志位,发送出去关闭连接。 如果close时发出的消息其实丢失在网络中了,那么,进程突然退出时连接上发出的RST就可能被对方收到,而且,之前丢失的消息不会有重发来保障可靠性了。 然而,网络环境又得复杂的,如果对方总是不响应怎么办?所以还需要l_linger这个超时时间,控制close阻塞进程的最长时间。 4)若参数中有标志位为关闭写,那么下面做的事与close是一致的:发出FIN包,告诉对方,本机不会再发消息了。 以上,就是close与shutdown的主要行为,同时也回答了本文最初的5个问题。

    1.9K20发布于 2018-09-20
  • 来自专栏DPU

    libfabric_ofa_简介_指南_设计思想_高性能网络4

    可扩展内存注册针对高度并行、高性能的应用程序。此类应用程序通常具有额外的安全级别,允许对等方在使用内存注册的更受信任的环境中运行。在可扩展模式下,注册发生在内存地址范围内,MR 属性由用户选择。 目标地址和密钥可以硬编码或通过算法确定,从而减少内存占用并避免与注册相关的网络流量。 fi_allocinfo(); ... ​ /* A scalable endpoint requires > 1 Tx or Rx queue */ hints->ep_attr->tx_ctx_cnt = 4; 提供者将他们的硬件或网络限制暴露给应用程序,而不是在内部分割大量传输,以最大限度地减少完成开销。 即使在软件中实现,计数器的使用也可以通过减少报告的完成数据量来提高性能。 此外,相对于计数相同类型事件的应用程序,提供者可能能够优化计数器的更新方式。

    50710编辑于 2025-06-13
  • 来自专栏杰哥技术分享

    高性能网络通讯原理

    本篇主要探讨高性能网络通讯框架的一些必要知识和底层操作系统相关的原理。在探讨如何做之前,我们先讨论下为什么要做。 随着互联网的高速发展,用户量呈指数形式递增,从原来的PC普及到现在的移动设备普及。 一个高性能网络通讯框架从硬件设备到操作系统内核以及用户模式都需要精心设计。只要有任何地方有疏漏都会出现短板效应。 因此如何使得单机网络并发连接数达到10K成为通讯开发者热门的讨论话题。 总结 本文通过I/O访问方式,I/O模型,线程模型三个方面解释了操作系统为实现高性能I/O做了哪些事情,通过提高CPU使用效率,减少内存复制是提高性能的关键点。 参考文档 新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析 高性能网络编程(二):上一个10年,著名的C10K并发连接问题 NIO的epoll空轮询bug 两种高效的服务器设计模型:Reactor

    81620发布于 2019-12-16
  • 来自专栏迁移内容

    高性能MySQL(4)——查询性能优化

    这会给MySQL服务器带来额外的负担,并增加网络开销,另外也会消耗应用服务器的CPU 和内存资源。 在应用层做关联,可以更容易的对数据库进行拆分,更容易做到高性能和可扩展。 查询本身效率也可能会有所提升。 可以减少冗余记录的查询。 ** ​ 4). 如果没有通过ORDER BY子句显式地指定排序列,当查询使用GROUP BY 子句的时候,结果集会自动按照分组的列进行排序。 尽肯能的使用索引覆盖 ​ 4). 延迟关联 ​ 5). 有时候也可以将LIMIT查询转换为已知位置的查询,让MySQL通过范围扫描找到对应的结果。 ​ 6). 参考: 《高性能 MySQL 第三版》

    2K10编辑于 2022-12-01
  • 来自专栏喔家ArchiSelf

    微秒级高性能网络初探

    如果我们的预期是将网络延时从10ms 降低到1ms,那么应该先分析这些时延的具体构成,很有可能瓶颈并不是网络传输;如果目标是将网络延时降低到微秒级或者百微秒级,那么我们才可能使用到高性能网络,例如RDMA 高性能IB网络高性能计算集群中,网络协议一般不是Ethernet+TCP/IP,而是Infiniband(IB)协议,是从物理层到传输层的一整套协议栈。 3.4 RDMA 的典型应用场景 RDMA当前最主要的应用场景有两类:一是高性能计算,包括分布式机器学习训练(尤其是使用GPU的时候);二是计算存储分离。 4 小结 对于高性能网络而言,通过kernel bypass和zero copy,RDMA实现了网络传输的低时延、高带宽与低CPU消耗。 一般地,应用程序需要通过特殊的API来使用RDMA,而RDMA则需要底层网络具备无丢包配置,其主要应用场景包括了高性能计算以及计算存储分离。

    86310编辑于 2025-01-07
  • 来自专栏萝卜要加油

    Go高性能编程EP4: 反射

    config := new(Config) b.ResetTimer() for i := 0; i < b.N; i++ { config.Net = "tcp<em>4</em>" ) b.ResetTimer() for i := 0; i < b.N; i++ { value.FieldByName("Net").SetString("tcp4" list 6: reflect/value.go[4] func (v Value) FieldByName(name string) Value { v.mustBe(Struct) 如何提高性能 尽量避免使用reflect 使用反射赋值,效率非常低下,如果有替代方案,尽可能避免使用反射,特别是会被反复调用的热点代码。 [4]reflect/value.go: https://go.googlesource.com/go/blob/82c371a307116450e9ab4dbce1853da3e69f4061/src

    31510编辑于 2025-03-07
  • 来自专栏冷环渊的全栈工程师历程

    Netty高性能网络通信:NIO

    认识Netty Netty 网络编程框架 他可以做到什么? 自定义通信协议 自定义编码/解码字节流 没有netty之前我们是用什么的? java.net + java .io java.nio Mina /Grizzly Netty的特点 并发高 基于 NIO网络通信框架,比较BIO性能得到了提升 传输快 NIO的特性之一, FileChannel 文件管道的数据 Pipe.SinkChannel Pipe.SourceChannel 线程间通信的管道 ServerSocketChannel SocketChannel 用于TCP网络通信的管道 DatagramChannel 用于UDP网络通信的管道 Buffer capacity 总体容量大小 limit 存储容量的大小,是可读写和不可读写的界线 position 已读容量的大小,

    89120发布于 2021-11-15
  • 来自专栏6G

    高性能网络的基础知识

    同样的逻辑也适用于高性能网络(High-Performance Networking, HPN)。然而,HPN失效的负面影响可能会更为显著。 本文将探讨高性能网络的组成部分、可用的传输技术以及使其真正实现高速运行的“秘诀”。 高性能网络由哪些部分组成? 目前,高性能网络的最低要求是400Gbps,预计在未来两年内将跃升至800Gbps至1600Gbps。 尽管如此,尽管实现这种带宽的工程和物理原理相当复杂,且管道的大小确实很重要,但带宽本身并不是使网络高性能”的因素。 如果不是延迟和带宽,那么是什么让应用程序运行得更快呢? 标准数据中心网络的“尽力而为”服务等级协议(SLA)是不够的。这就是高性能网络中“高性能”部分的体现。 那么,什么是高性能网络呢? 定义高性能网络的问题并非仅仅是延迟或带宽的问题,尽管这两者都是因素。

    69410编辑于 2025-02-12
  • 来自专栏人工智能应用

    使用asyncio构建高性能网络爬虫

    引言 在当今数据驱动的时代,高效获取网络数据已成为开发者必备技能。 BeautifulSoup/lxml:HTML解析库 aiomysql/asyncpg:异步数据库连接 实战代码示例 import aiohttp import asyncio from bs4

    37310编辑于 2025-08-01
  • 来自专栏小徐学爬虫

    使用Golang构建高性能网络爬虫

    所谓的高性能网络爬虫就是一种能够快速、高效地从互联网上抓取大量网页数据的程序。网络爬虫通常被用于搜索引擎、数据挖掘、信息检索等领域,用于收集和分析互联网上的信息。 使用Golang构建高性能网络爬虫可以充分利用Golang的并发特性和高效的网络库,实现快速、高效地爬取网页数据。 以下是一个简单的示例,展示如何使用Golang构建一个基本的网络爬虫:package mainimport ("fmt""net/http""golang.org/x/net/html""sync")func 当然,实际的网络爬虫可能需要更复杂的处理,比如处理页面解析错误、限制并发数量、处理重定向、处理异常情况等。但是这个简单的示例可以帮助你了解如何使用Golang构建一个基本的网络爬虫。

    54810编辑于 2023-11-29
  • 来自专栏云深之无迹

    STM32F4-高性能家族

    F4还是垫底 这是高性能的家族 我们的F103是主流MCU F401系列 F411系列 最小的就是这样子WLCSP的封装,不过是F411里面的最小 STM32F4系列的入门级微控制器! DMIPS,尺寸最小、成本最低的解决方案,具有卓越的功率效率(Dynamic Efficiency™) STM32F401 –尺寸不到3 x 3mm,具有USB OTG2.0FS和SDIO接口 这就是高性能里面最小的封装 淘宝里面最多的就是这个F411了 Apple Watch充电器的里面也有MCU 不过是L4的,记错了 我也不知道人家怎么选型的,可能是使用了USB 很紧 TI TPS51604双MOS管驱动器,这颗芯片在之前的充电线中也有使用

    65800编辑于 2025-02-05
  • 来自专栏IT大咖说

    Golang 高性能网络库 evio 源码解析

    evio 是一个基于事件驱动的网络框架,它非常轻量而且相比 Go net 标准库更快。其底层使用epoll 和 kqueue 系统调度实现。 关于这边的更多细节,可以看我的另一篇文章 【Golang 网络库 evio 一些问题/bug和思考】(https://note.mogutou.xyz/articles/2019/08/15/1565876205121 但是其实关于 loopWrite 和 loopRead 的处理是会有 bug 的,详细可以看另一篇文章 【Golang 网络库 evio 一些问题/bug和思考】(https://note.mogutou.xyz

    1.9K40发布于 2021-04-08
  • 来自专栏Rainbond开源「容器云平台」

    ​Kubernetes集群中的高性能网络策略

    本文针对K8s的网络策略进行介绍并对网络性能进行测试。 网络策略 K8s的网络策略应用于通过常用标签标识的pod组。 但是,它需要一个能够应用策略的网络后端。例如,简单路由网络或常用的 [flannel](https://github.com/coreos/flannel) 网络程序本身不能应用网络策略。 因此,网络策略可以直接由Linux内核中的主机使用iptables规则应用。这个结果是一个高性能,易于管理的网络。 测试网络策略的性能影响 在应用网络策略之后,需要根据这些策略来检查网络分组,以验证这种类型的业务是允许的。但是,对每个数据包应用网络策略的性能损失是多少? 网络性能损耗在可以接受的范围之内。 好雨云帮目前的生产环境使用的是k8s 1.2.x版本,我们在使用个版本的时候k8s还没有网络策略控制的功能,因此我们是基于网络插件的方式来实现访问控制的。

    1.1K30发布于 2018-05-31
  • 来自专栏小工匠聊架构

    高性能网络编程 - select、 poll 、epoll 、libevent

    概述 Select(选择): Select 是一种传统的 I/O 多路复用机制,用于在类 Unix 操作系统(如 Linux)中同时管理多个文件描述符(如网络套接字或文件)。 listen(lfd, 100); if(ret == -1) { perror("listen"); exit(0); } // 4. listen(lfd, 100); if(ret == -1) { perror("listen"); exit(0); } // 4. Epoll 特别适用于构建可扩展和高性能网络服务器和应用程序。 在性能方面,可以利用底层高性能机制,如Epoll,以提高性能。 缺点: 与直接使用底层机制相比,可能引入轻微的性能开销。 需要学习Libevent的API和概念。

    1.1K81编辑于 2023-11-09
  • 来自专栏JavaEdge

    Java NIO高性能网络编程(三)-Channel

    DatagramChannel 通过UDP读写网络中的数据。 SocketChannel 通过TCP读写网络中的数据。

    73220发布于 2021-02-22
  • 来自专栏星融元

    高性能私有云网络解决方案

    测试演示区域:2台Spine,4台Leaf,10台服务器。 在本案例中主要用到了CX306支持的以下高级功能: 最大支持64路基于权重的ECMP(实现流量的负载均衡,保证网络转发的高性能)。 服务器4台部署Openstack云平台,2台做INT网络监测方面的测试,1台做Firewall、其余3台做裸金属。 如下图4是PA_Stack的运营管理员主界面,可以看到目前的虚机资源分配情况。 与云计算无缝融合的云网络 运行在每一台CX系列云交换机上的 AsterNOS 是基于纯粹的 SDN 理念为云计算时代设计开发的一款开放、智能、易用、高性能网络操作系统。

    11.2K20编辑于 2023-07-04
  • 来自专栏用户2442861的专栏

    高性能网络编程(一)—-ACCEPT建立连接

    http://taohui.pub/2016/01/25/%E9%AB%98%E6%80%A7%E8%83%BD%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%EF%BC%88%E4% 高性能网络编程(一)—-ACCEPT建立连接 高性能网络编程(一)—-ACCEPT建立连接 2016年1月25日  陶辉 Comments 1条评论 最近在部门内做了个高性能网络编程的培训,近日整理了下 以上做法无可厚非,但有一定的局限性,本文讲述的网络编程头前冠以“高性能”,它是指程序员设计编写的服务器需要处理很大的吞吐量,这与简单网络应用就有了质的不同。 掌握高性能网络编程,涉及到对网络、操作系统协议栈、进程与线程、常见的网络组件等知识点,需要有丰富的项目开发经验,能够权衡服务器运行效率与项目开发效率。以下图来谈谈我个人对高性能网络编程的理解。 ? 使用tcpdump等抓包工具分析各网络分组。 一般掌握以上3点,就可以挥洒自如的实现高性能网络服务器了。 下面具体谈谈如何做到高性能网络编程。

    1.2K10发布于 2018-09-19
  • 来自专栏Python每日一库

    netius:功能丰富的高性能网络

    netius 是一个基于 Python 的高性能网络库,它为网络应用提供了丰富的功能,包括 HTTP 客户端和服务器、WebSocket 支持、FTP 客户端和服务器以及其他多种协议的支持。 netius 的特点如下:高性能:采用异步事件循环机制,能够处理大量并发连接。易用性:API 设计简洁明了,易于理解和使用。多协议支持:支持 HTTP、WebSocket、FTP 等多种网络协议。 Netius 是一个基于 Python 编写的网络库,用于创建和维护各种网络连接。 send_email(smtp_host, smtp_port, username, password, recipient, subject, body)4. 实现网络爬虫Netius 也适用于实现网络爬虫,通过使用 HTTP 客户端,可以轻松地发送请求并获取网页数据。

    29800编辑于 2025-01-29
  • 来自专栏golang与云原生

    【笔记】Linux高性能网络详解之DPDK

    这避免了中断开销,是高性能的关键5. 当驱动通过轮询发现某个描述符的 DD 位为 1,它就知道一个新的数据包已经到了。驱动通过描述符的索引,从 sw_ring 中找到对应的 mbuf 指针。 每个/sys/class/uio/uioX/maps/mapX/目录包含 4 个只读文件,描述内存区域的属性,这 4 个文件如下。应用程序通过读取文件/dev/uioX 获取中断。 采用 DDIO 技术,使网卡和 CPU 通过 LLC Cache 交换数据, 绕过内存4. 多通道内存并行访问:假设现在单个 CPU 芯片有两个通道,每个通道上有 4 个 rank。 4. ReferenceLinux 高性能网络详解:从 DPDK、RDMA 到 XDPLinux 系统如何收发网络包_linux 网络编程的数据收发接口-CSDN 博客DPDK 收发包流程分析_dpdk 开发流程

    6.7K13编辑于 2025-08-29
领券