范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

tcp收包和发包受哪些linux配置项影响?

  收包是指数据到达网卡再到被应用程序开始处理的过程。发包则是应用程序调用发包函数到数据包从网卡发出的过程。
  问题引入:
  网卡中断太多,占用太多 CPU,导致业务频繁被打断;
  应用程序调用 write() 或者 send() 发包,怎么会发不出去呢;
  数据包明明已经被网卡收到了,可是应用程序为什么没收到呢;
  我想要调整缓冲区的大小,可是为什么不生效呢;
  1.tcp 数据包发送的过程受什么影响?
  TCP数据包发送过程
  应用程序调用 write(2) 或者 send(2) 系列系统调用开始往外发包时,这些系统调用会把数据包从用户缓冲区拷贝到 TCP 发送缓冲区(TCP Send Buffer),这个 TCP 发送缓冲区的大小是受限制的,这里也是容易引起问题的地方。
  TCP 发送缓冲区的大小默认是受 net.ipv4.tcp_wmem 来控制:
  net.ipv4.tcp_wmem = 8192 65536 16777216
  tcp_wmem 中这三个数字的含义分别为 min、default、max。TCP 发送缓冲区的大小会在 min 和 max 之间动态调整,初始的大小是 default,这个动态调整的过程是由内核自动来做的,应用程序无法干预。自动调整的目的,是为了在尽可能少的浪费内存的情况下来满足发包的需要。
  tcp_wmem 中的 max 不能超过 net.core.wmem_max 这个配置项的值,如果超过了,TCP 发送缓冲区最大就是 net.core.wmem_max。通常情况下,我们需要设置net.core.wmem_max 的值大于等于 net.ipv4.tcp_wmem 的 max:
  net.core.wmem_max = 16777216
  对于 TCP 发送缓冲区的大小,我们需要根据服务器的负载能力来灵活调整。通常情况下我们需要调大它们的默认值,我上面列出的 tcp_wmem 的 min、default、max 这几组数值就是调大后的值,也是我们在生产环境中配置的值。
  之所以将这几个值给调大,是因为我们在生产环境中遇到过 TCP 发送缓冲区太小,导致业务延迟很大的问题,这类问题也是可以使用 systemtap 之类的工具在内核里面打点来进行观察的(观察 sk_stream_wait_memory 这个事件):
  应用程序有的时候会很明确地知道自己发送多大的数据,需要多大的 TCP 发送缓冲区,这个时候就可以通过 setsockopt(2) 里的 SO_SNDBUF 来设置固定的缓冲区大小。一旦进行了这种设置后,tcp_wmem 就会失效,而且这个缓冲区大小设置的是固定值,内核也不会对它进行动态调整。
  SO_SNDBUF 设置的最大值不能超过 net.core.wmem_max,如果超过了该值,内核会把它强制设置为 net.core.wmem_max。所以,如果你想要设置 SO_SNDBUF,一定要确认好 net.core.wmem_max 是否满足需求,否则你的设置可能发挥不了作用。通常情况下,我们都不会通过 SO_SNDBUF 来设置 TCP 发送缓冲区的大小,而是使用内核设置的 tcp_wmem,因为如果 SO_SNDBUF 设置得太大就会浪费内存,设置得太小又会引起缓冲区不足的问题。
  tcp_wmem 以及 wmem_max 的大小设置都是针对单个 TCP 连接的,这两个值的单位都是 Byte(字节)。系统中可能会存在非常多的 TCP 连接,如果 TCP 连接太多,就可能导致内存耗尽。因此,所有 TCP 连接消耗的总内存也有限制:
  net.ipv4.tcp_mem = 8388608 12582912 16777216
  通常也会把这个配置项给调大。与前两个选项不同的是,该选项中这些值的单位是Page(页数),也就是 4K。它也有 3 个值:min、pressure、max。当所有 TCP 连接消耗的内存总和达到 max 后,也会因达到限制而无法再往外发包。
  TCP 层处理完数据包后,就继续往下来到了 IP 层。IP 层这里容易触发问题的地方是net.ipv4.ip_local_port_range 这个配置选项,它是指和其他服务器建立 IP 连接时本地端口(local port)的范围。我们在生产环境中就遇到过默认的端口范围太小,以致于无法创建新连接的问题。所以通常情况下,我们都会扩大默认的端口范围:
  net.ipv4.ip_local_port_range = 1024 65535
  为了能够对 TCP/IP 数据流进行流控,Linux 内核在 IP 层实现了 qdisc(排队规则)。我们平时用到的 TC 就是基于 qdisc 的流控工具。qdisc 的队列长度是我们用 ifconfig 来看到的 txqueuelen,我们在生产环境中也遇到过因为 txqueuelen 太小导致数据包被丢弃的情况,这类问题可以通过下面这个命令来观察:
  ip -s -s link ls dev eth0
  TX: bytes packets errors dropped carrier collsns
  3263284 25060 0 0 0 0
  如果观察到 dropped 这一项不为 0,那就有可能是 txqueuelen 太小导致的。当遇到这种情况时,你就需要增大该值了,比如增加 eth0 这个网络接口的 txqueuelen:
  ifconfig eth0 txqueuelen 2000
  在调整了 txqueuelen 的值后,你需要持续观察是否可以缓解丢包的问题,这也便于你将它调整到一个合适的值。
  Linux 系统默认的 qdisc 为 pfifo_fast(先进先出),通常情况下我们无需调整它。如果你想使用 TCP BBR 来改善 TCP 拥塞控制的话,那就需要将它调整为 fq(fair queue, 公平队列):
  net.core.default_qdisc = fq
  经过 IP 层后,数据包再往下就会进入到网卡了,然后通过网卡发送出去。至此,你需要发送出去的数据就走完了 TCP/IP 协议栈,然后正常地发送给对端了。
  2 . tcp数据包接收过程受什么影响?
  TCP数据包接收过程
  TCP 数据包的接收流程在整体上与发送流程类似,只是方向是相反的。数据包到达网卡后,就会触发中断(IRQ)来告诉 CPU 读取这个数据包。但是在高性能网络场景下,数据包的数量会非常大,如果每来一个数据包都要产生一个中断,那 CPU 的处理效率就会大打折扣,所以就产生了 NAPI(New API)这种机制让 CPU 一次性地去轮询(poll)多个数据包,以批量处理的方式来提升效率,降低网卡中断带来的性能开销。
  在 poll 的过程中,一次可以 poll 多少个呢?这个 poll 的个数可以通过 sysctl 选项来控制:
  net.core.netdev_budget = 600
  该控制选项的默认值是 300,在网络吞吐量较大的场景中,我们可以适当地增大该值,比如增大到 600。增大该值可以一次性地处理更多的数据包。但是这种调整也是有缺陷的,因为这会导致 CPU 在这里 poll 的时间增加,如果系统中运行的任务很多的话,其他任务的调度延迟就会增加。
  接下来继续看 TCP 数据包的接收过程。我们刚才提到,数据包到达网卡后会触发 CPU 去poll 数据包,这些 poll 的数据包紧接着就会到达 IP 层去处理,然后再达到 TCP 层,这时就会面对另外一个很容易引发问题的地方了:TCP Receive Buffer(TCP 接收缓冲区)。
  与 TCP 发送缓冲区类似,TCP 接收缓冲区的大小也是受控制的。通常情况下,默认都是使用 tcp_rmem 来控制缓冲区的大小。同样地,我们也会适当地增大这几个值的默认值,来获取更好的网络性能,调整为如下数值:
  net.ipv4.tcp_rmem = 8192 87380 16777216
  它也有 3 个字段:min、default、max。TCP 接收缓冲区大小也是在 min 和 max 之间动态调整 ,不过跟发送缓冲区不同的是,这个动态调整是可以通过控制选项来关闭的,这个选项是 tcp_moderate_rcvbuf 。通常我们都是打开它,这也是它的默认值:
  net.ipv4.tcp_moderate_rcvbuf = 1
  之所以接收缓冲区有选项可以控制自动调节,而发送缓冲区没有,那是因为 TCP 接收缓冲区会直接影响 TCP 拥塞控制,进而影响到对端的发包,所以使用该控制选项可以更加灵活地控制对端的发包行为。
  除了 tcp_moderate_rcvbuf 可以控制 TCP 接收缓冲区的动态调节外,也可以通过setsockopt() 中的配置选项 SO_RCVBUF 来控制,这与 TCP 发送缓冲区是类似的。如果应用程序设置了 SO_RCVBUF 这个标记,那么 TCP 接收缓冲区的动态调整就是关闭,即使tcp_moderate_rcvbuf 为 1,接收缓冲区的大小始终就为设置的 SO_RCVBUF 这个值。
  也就是说,只有在 tcp_moderate_rcvbuf 为 1,并且应用程序没有通过 SO_RCVBUF 来配置缓冲区大小的情况下,TCP 接收缓冲区才会动态调节。
  与 TCP 发送缓冲区类似,SO_RCVBUF 设置的值最大也不能超过net.core.rmem_max。通常情况下,我们也需要设置 net.core.rmem_max 的值大于等于net.ipv4.tcp_rmem 的 max:
  net.core.rmem_max = 16777216

小满小得盈满,刚刚好麦穗初齐稚子娇,桑叶正肥蚕食饱。进入小满时节,温润的南风使夏季向北推进,也带来了更多夏日物产。小满三候为苦菜秀,靡草死,麦秋至。小满节气后,苦菜繁茂起来一些喜阴的细软草类再也受不了空气能助力山东省实现全省80清洁取暖率为全面贯彻落实中共中央国务院办公厅关于推动城乡建设绿色发展的意见,进一步提高城乡建设绿色发展水平,助力国家早日实现碳达峰碳中和目标,近日,山东省人民政府经研究,印发山东省人民政府办美丽外表下藏着无法想象的罪恶,2019年,这个印度女人震惊了全国美丽无辜的外表下,藏着蛇蝎一样的心肠温柔有礼的举止背后,暗藏着汹涌的致命杀机。2019年,一个印度女子引爆了全国的舆论。她叫乔莉约瑟夫,出生于富裕家庭,执教于印度著名大学,嫁入了当毁灭俄罗斯舰队,美国更大阴谋正在筹划,局势极有可能再度升级最近,俄方对外发布消息称,美国正在准备向乌克兰援助其鱼叉反舰导弹和海军打击导弹。本来美国向乌克兰援助武器,就已经是火上浇油了,现在美国正在筹划更大的阴谋,这是要毁灭俄罗斯舰队的节奏从5999元跌至3499元,12GB256GB60倍变焦,无奈依然少人问津发布新手机是手机厂商们每年必做的事情,而且大型手机厂商几乎每个月都会举办新机发布会,部分手机品牌每年所发布的新机数量甚至可能超过20款,因为有时候一场发布会可能会发布多款新机,不过C919完成正式首飞,欧美却拒发适航证,未来可能无法飞出国门?由于我国科技起步较晚,以至于在某些关键领域一直都依赖从西方国家进口,比如商业民航,虽然我国拥有全球最大的民航市场,但所用到的飞机却全部都是美国波音和法国空客这些海外机型,这相当于是docker环境Ubuntu20。0464版Centos7docker版本20。10。16dockercompose版本1。25。1redis镜像版本docker。ioredis6。2。5al名宿迪恩直播吧5月21日讯最近几天,多家英国媒体称曼联门将迪恩亨德森接近加盟纽卡,俱乐部名宿保罗帕克对此事发表了自己的看法。保罗帕克说道我个人觉得迪恩亨德森应该离开曼联加盟纽卡,我们应该给3岁分床,5岁分房骗了太多家长!到底娃在什么年龄适合分床?不知何时起,育儿界就开始流传3岁分床,5岁分房的言论。甚至有人说三岁四岁不分房,五岁六岁悔断肠。于是,不少父母就把这种年龄建议当成了铁律。他们掐着时间执行,强迫孩子分床分房,生怕错没想到,59岁的杨紫琼会用一部黄暴污的电影,成为今年的王炸爆了,爆了,瞬息全宇宙这部电影彻底爆了。要说今年最让人期待的电影,一定少不了这部杨紫琼主演的瞬息全宇宙。早在今年3月份的西南偏南电影节亮相后,这部影片就收获广泛好评,有各路媒体的争欢迎光临张佳宁甜美,白百何有范儿,这个年轻女孩也很有灵气欢迎光临追剧到现在,剧中有这样四位女神给人留下了非常深刻的印象,按照出场顺序来说包括,张佳宁饰演的九斤白百何饰演的郑有恩薛昊婧饰演的冯远叶以及柴碧云饰演的佟娜娜,四位女神不管是身份
都2023年了,黎明觉醒生机还停留在十年前的水平!上次玩末日题材的手游也是去年的事情了,这不终于等到黎明觉醒生机上线,搓搓我的一手,准备大展身手,结果把我拦在半山腰上,只能选择打道回府,这是怎么回事了,请听我分解。最开始我是发现一重新定义封建社会探析封建王朝的进步与落后引言久而深之的中国历史,无论在历史跨度还是所经历的历史事实远比其他国家所不能超越的。正因为中国积累着历朝历代的治国经验,治理能力经验,社会治理经验以及事件经验教训以及长久时间获得实广东旅游寻访汕头陈慈簧故居行(图)在即将结束海南三亚为期度假一个月之前,记者考虑到海南与广东只隔着一道琼州海峡,距离很近,应该在广东报个团再游一下后回京。于是攻略了半天最后选择了潮汕地区。为此,将这个计划向携程旅游高州市石板镇反诈知识不可少守护群众钱袋子如果不是每天定时都听到村村通大喇叭滚动播放全民反诈顺口溜,我差点就被人骗了。高州市石板镇贺村的赖阿姨对进村入户宣传反诈知识的志愿者亲切地说。为进一步深化打击治理电信网络诈骗违法犯罪我们只是老了,不是傻了,医保改革遭退休老人集体吐槽落地才两个月的医保改革,已经让许多退休老人尝到了揪心添堵的滋味。首先是打入个人帐户里的钱被大幅减少了,由以前的每月二三百块锐减至七八十块钱,减少了约三分之二。再去走门诊报销,先是有拿什么证明自己,这些知识不可不知案例回顾近日,本报接到一起投诉电话,当事人朱先生反映自己遭遇欠薪,他与同事被工地老板欠薪合计近3万元,当他们拿着老板发来的欠条照片作为证据找劳动部门反映情况时,却被告知这无法作为有效的证据中国网络文学影响力榜集结令丨老鹰吃小鸡希望更多外国友人喜欢我的书视频加载中红网时刻新闻2月25日讯(记者袁思蕾)3月1日,中国网络文学影响力榜发布仪式将在长沙举行。这将是一场中国网络文学盛典,来自全国各地的网络作家将汇聚一堂,共襄盛举。盛会举办从心理学分析安远县李县长更喜欢段厅长陈区长戴局长哪一位近日网上曝光了很多官场糗事,有扬州美女戴局长婚房妹事件成都陈区长潮水姐事件云南段厅长裙带女事件,最为色胆包天的莫过于江西安远李县长侵犯男事件,有没有侵犯下属或权色交易不知,但将色手全部由小学生创作!2026冬奥会吉祥物二选一,你喜欢哪个?上上周,2026年冬季奥运和残奥组委会在圣雷莫音乐节上公布了两款本届赛事的吉祥物候选方案,并邀请公众在线投票选出自己喜欢的吉祥物设计。据介绍,两款吉祥物方案是从意大利各地小学生提交狂飙3喜欢咬着棒棒糖的天才杀手,为什么令人意难平?此文为小编对狂飙电视剧人物剧情的解读,每一期涉及不同的人物与剧情,如果喜欢的话,请右上角点关注文接上期老默第一次出场,谁也没有想到他会是后面连杀数人的杀手。彼时安欣为了调查黄翠翠的智能手表,智能手环你有在用吗?大家主要喜欢其中的什么功能呢?苹果手表未来将可无创检测血糖智能手表智能手表,智能手环你有在用吗?大家主要喜欢其中的什么功能呢?明星印小天王鸥智能手表(图源网络)今天看到两则关于智能手表和智能手环的报道1。彭博社