Day33-计算机基础3

Day33-计算机基础3

  • 1.根据TCP/IP进行Linux内核参数优化
    • 1.1 例1:调整访问服务端的【客户端】的动态端口范围 ,LVS(10-50万并发),NGINX负载,SQUID缓存服务,
    • 1.2 企业案例:DOS攻击的案例:
    • 1.3 例2:#全/半连接队列
    • 1.4 TCP超时重传
    • 1.5 拥塞控制
  • 2. 内核TCP参数优化
    • 2.1 参看帮助: man tcp
    • 2.2 企业案例:TIME_WAIT过多故障,如何解决?

#抓取所有经过eth0,目的地址是10.0.0.128,端口是22的TCP数
tcpdump -i eth0 '((tcp) and (port 22) and (dst host 10.0.0.128))'
wireshark

在这里插入图片描述

在这里插入图片描述
CLOSING 状态表示:客户端发送了 FIN,但没有收到服务器的 ACK,却收到了服务器的 FIN。
这种情况发生在服务器发送的 ACK 丢包的时候,因为网络传输有时会有意外。

1.根据TCP/IP进行Linux内核参数优化

1.1 例1:调整访问服务端的【客户端】的动态端口范围 ,LVS(10-50万并发),NGINX负载,SQUID缓存服务,

[root@oldboy ~]# cat /proc/sys/net/ipv4/ip_local_port_range 
32768	60999
[root@oldboy ~]# echo 4000 65000 > /proc/sys/net/ipv4/ip_local_port_range 
[root@oldboy ~]# cat /proc/sys/net/ipv4/ip_local_port_range 
4000	65000

DOS/SYN攻击
链接: https://baike.baidu.com/item/dos%E6%94%BB%E5%87%BB/3792374?fr=aladdin

1.2 企业案例:DOS攻击的案例:

SYN洪水攻击属于DoS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。、

1.3 例2:#全/半连接队列

#半连接
/proc/sys/net/ipv4/tcp_max_syn_backlog  #syn连接池队列大小
[root@oldboy ~]# echo 8192 >/proc/sys/net/ipv4/tcp_max_syn_backlog
[root@oldboy ~]# cat /proc/sys/net/ipv4/tcp_max_syn_backlog
8192#全连接
/proc/sys/net/core/somaxconn #完成连接队列大小,默认值128,建议调整大小为1024以上
[root@oldboy ~]# echo 512 >/proc/sys/net/core/somaxconn
[root@oldboy ~]# cat /proc/sys/net/core/somaxconn
512

超时连接
Linux为了防止孤儿连接长时间存留在内核中的两个内核参数:

[root@oldboy ~]# cat /proc/sys/net/ipv4/tcp_max_orphans 
16384[root@oldboy ~]# cat /proc/sys/net/ipv4/tcp_fin_timeout 
60
[root@oldboy ~]# echo 2 > /proc/sys/net/ipv4/tcp_fin_timeout 
[root@oldboy ~]# cat /proc/sys/net/ipv4/tcp_fin_timeout 
2

1.4 TCP超时重传

异常网络状况下(开始出现超时或丢包),TCP控制数据传输以保证其承诺的可靠服务TCP服务必须能够重传超时时间内未收到确认的TCP报文段。为此,TCP模块为每个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时启动。如果超时时间内未收到接收方的应答,TCP模块将重传TCP报文段并重置定时器。至于下次重传的超时时间如何选择,以及最多执行多少次重传,就是TCP的重传策略。

与TCP超时重传相关的两个内核参数:

#指定在底层IP接管之前TCP最少执行的重传次数,默认值是3
#cat /proc/sys/net/ipv4/tcp_retries1
3
#指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30min)
#cat /proc/sys/net/ipv4/tcp_retries2 
15

1.5 拥塞控制

网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可承受的能力,网络的性能就会变坏。此情况称为拥塞TCP为提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性。即所谓的拥塞控制TCP拥塞控制的标准文档是RFC 5681,

拥塞控制的四个部分:

  • 慢启动(slow start)
  • 拥塞避免(congestion avoidance)
  • 快速重传(fast retransmit)
  • 快速恢复(fast recovery)。
    拥塞控制算法在Linux下有多种实现,比如reno算法、vegas算法和cubic算法等。
    当前所使用的拥塞控制算法
    /proc/sys/net/ipv4/tcp_congestion_control

2. 内核TCP参数优化

2.1 参看帮助: man tcp

编辑文件/etc/sysctl.conf,加入以下内容:然后执行sysctl -p让参数生效

net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_max_orphans = 16384
net.ipv4.ip_local_port_range = 2000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.core.somaxconn = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.route.gc_timeout = 100
net.core.netdev_max_backlog = 16384

作用说明:

- net.ipv4.tcp_tw_reuse 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认值为0,表示关闭。该参数对应系统路径为:/proc/sys/net/ipv4/tcp_tw_reuse 0 - net.ipv4.tcp_tw_recycle 表示开启TCP连接中TIME-WAIT sockets的快速回收。该参数对应系统路径为:/proc/sys/net/ipv4/tcp_tw_recycle,默认为0,表示关闭。提示:reuse和recycle这两个参数是为防止生产环境下Web、Squid等业务服务器time_wait网络状态数量过多设置的 - net.ipv4.tcp_syncookies 表示开启SYN Cookies功能。当出现SYN等待队列溢出时,启用Cookies来处理,可防范少量SYN攻击。该参数对应系统路径为:/proc/sys/net/ipv4/tcp_syncookies,默认值为1 - net.ipv4.ip_local_port_range 该选项用来设定允许系统打开的端口范围,即用于向外连接的端口范围。该参数对应系统路径为:/proc/sys/net/ipv4/ip_local_port_range 32768 61000 - net.ipv4.tcp_max_syn_backlog 表示SYN队列的长度,即半连接队列长度,默认为1024。该参数为服务器端用于记录那些尚未收到客户端确认信息的连接请求最大值。该参数对象系统路径为:/proc/sys/net/ipv4/tcp_max_syn_backlog - net.ipv4.tcp_max_tw_buckets 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数值,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,对于Nginx等服务器来说可以将其调低一点,如改为5000~30000,不通业务的服务器也可以给大一点,比如LVS、Squid。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。该参数对应系统路径为:/proc/sys/net/ipv4/tcp_max_tw_buckets - net.ipv4.tcp_synack_retries 参数的值决定了内核放弃连接之前发送SYN+ACK包的数量。该参数对应系统路径为:/proc/sys/net/ipv4/tcp_synack_retries,默认值为5 - net.ipv4.tcp_syn_retries 表示在内核放弃建立连接之前发送SYN包的数量。该参数对应系统路径为:/proc/sys/net/ipv4/tcp_syn_retries,默认值为6 - net.ipv4.tcp_max_orphans 用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数值,孤立连接将被立即被复位并打印出警告信息。这个限制只有为了防止简单的DoS攻击。不能过分依靠这个限制甚至认为减少这个值,更多的情况是增加这个值。该参数对应系统路径为:/proc/sys/net/ipv4/tcp_max_orphans ,默认值8192 - net.core.somaxconn 同时发起的TCP的最大连接数,即全连接队列长度,在高并发请求中,可能会导致链接超时或重传,一般结合并发请求数来调大此值。该参数对应系统路径为:/proc/sys/net/core/somaxconn ,默认值是128 - net.core.netdev_max_backlog 表示当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包最大数。该参数对应系统路径为:/proc/sys/net/core/netdev_max_backlog,默认值为1000 

2.2 企业案例:TIME_WAIT过多故障,如何解决?

LVS、Squid、Nginx这些软件本身服务,能够承受大并发。
基础解决:

net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

修改配置文件:/etc/sysctl.conf (原内容保存)

vm.swappiness = 10
##swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。两个极端,对于 centos linux 5的默认设置,这个值等于60,建议修改为10。net.ipv4.tcp_syncookies = 1
##表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;net.ipv4.tcp_tw_reuse = 1
#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;net.ipv4.tcp_tw_recycle = 1
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。net.ipv4.tcp_fin_timeout = 30
#表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。net.ipv4.tcp_keepalive_time = 1200
#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。net.ipv4.ip_local_port_range = 1024 65000
##表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。net.ipv4.tcp_max_tw_buckets = 5000
##表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,
##TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。
##对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,
##但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。net.ipv4.tcp_mem = 786432 1048576 1572864
##有3个值,意思是:
##net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力.
##net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段.
##net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socketnet.core.wmem_max = 873200
##最大socket写buffer,可参考的优化值:873200net.core.rmem_max = 873200
##最大socket读buffer,可参考的优化值:873200net.ipv4.tcp_wmem = 8192 436600 873200
##TCP写buffer,可参考的优化值: 8192 436600 873200net.ipv4.tcp_rmem = 32768 436600 873200
##TCP读buffer,可参考的优化值: 32768 436600 873200net.core.somaxconn = 256
##listen()的默认参数,挂起请求的最大数量.默认是128.对繁忙的服务器,增加该值有助于网络性能.
可调整到256.net.core.netdev_max_backlog = 1000
##进入包的最大设备队列.默认是300,对重负载服务器而言,该值太低,可调整到1000.net.ipv4.tcp_max_syn_backlog = 2048
##进入SYN包的最大请求队列.默认1024.对重负载服务器,增加该值显然有好处.
可调整到2048.net.ipv4.tcp_retries2 = 5
##TCP失败重传次数,默认值15,意味着重传15次才彻底放弃.可减少到5,以尽早释放内核资源.net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
##意思是如果某个TCP连接在idle 30个分钟后,内核才发起probe.如果probe 3次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效.net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.all.arp_announce = 0
##NAT模式下的打开ARP广播响应

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/733808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[备赛笔记]——5G大唐杯(5G考试等级考考试基础试题)

个人名片: 🦁作者简介:学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:Vir2021GKBS 🐼本文由…

redis缓存满了的话会发生什么?

线上问题 未及时加监控,导致线上redis被逐出,业务有损 示例: 一个key临时存储在redis等缓存中,如果该key在一段时间内有很大作用 比如一次业务请求,上游服务写入一个value,时长1小时,下游服务…

Matlab|考虑源荷两侧不确定性的含风电电力系统低碳调度

目录 1 主要内容 目标函数: 约束条件: 程序亮点总结: 2 代码问题与程序测试 设备出力运行结果: 3 下载链接 1 主要内容 本程序是对《考虑源荷两侧不确定性的含风电电力系统低碳调度》的方法复现,主要实现了基…

【QT+QGIS跨平台编译】之七十六:【QGIS_Native+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、QGIS_Native介绍二、QGIS下载三、文件分析四、pro文件五、编译实践一、QGIS_Native介绍 QGIS_Native模块是QGIS软件的核心部分,提供了许多基本功能和核心组件,主要用于处理与底层操作系统的关系。 二、QGIS下载 QGIS网址: QGIS Source Download 三、文件分析…

Django学习笔记

Django学习笔记 一、Django整体流程跑通 1.1安装 pip install django //安装 import django //在python环境中导入django django.get_version() //获取版本号,如果能获取到,说明安装成功Django目录结构 Python310-Scripts\django-admi…

前端框架的发展历程

文章目录 前言 一、静态页面时代 二、JavaScript的兴起 三、jQuery的出现 四、前端框架的崛起 1.AngularJS 2.React 3.Vue.js 五、面向组件化的发展趋势 总结 前言 前端框架的发展史就是一个不断进化的过程,它的发展和进化一定程度…

力扣刷题Days14第二题--80删除数组中重复元素||(js)

目录 1,题目-中等 2,代码 双指针 3,学习与总结 思路学习与整理 1,题目-中等 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组…

区块链和人工智能的关系以及经典案例

目录 1.区块链与人工智能的关系 2.应用案例:基于区块链的医疗数据共享平台 2.1背景 2.2方案 2.3优势 2.4挑战 区块链技术和人工智能(AI)是两种不同的技术,但它们之间存在着互补关系。区块链技术提供了一种安全、透明、去中心…

Android Studio下载gradle超时问题解决

方法一 1. 配置根目录的setting.gradle.kts文件 pluginManagement {repositories {maven { urluri ("https://www.jitpack.io")}maven { urluri ("https://maven.aliyun.com/repository/releases")}maven { urluri ("https://maven.aliyun.com/repos…

Open-Sora:开源 Sora 复现方案,成本降低 46%

Colossal-AI 开源了完整的 Sora 复现架构方案 Open-Sora,声称可降低 46% 复现成本,并将模型训练输入序列长度扩充至 819K patches。 演示站点: https://ai.uaai.cn UAAI 官方论坛: www.jingyuai.com京娱AI Sora 算法复现方案 在 …

springboot256基于springboot+vue的游戏交易系统

游戏交易系统设计与实现 摘 要 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对游戏交…

[LeetCode][LCR143]树的子结构判断——递归

题目 LCR 143. 子结构判断 给定两棵二叉树 tree1 和 tree2,判断 tree2 是否以 tree1 的某个节点为根的子树具有相同的结构和节点值。注意,空树不会是以 tree1 的某个节点为根的子树具有相同的结构和节点值。 示例: 输入:tree1 …

3.9Code

基于顺序存储结构的图书信息表的图书去重 #include<iostream> #include<stdlib.h> #include<string.h>typedef int status;#define OK 1using namespace std;typedef struct{char no[50];char name[50];float price; }Book;typedef struct{Book* elem;int …

鸿蒙App动画、弹窗

动画 属性动画 https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/ts-animatorproperty-0000001478181445-V3 组件的某些通用属性变化时&#xff0c;可以通过属性动画实现渐变过渡效果&#xff0c;提升用户体验。支持的属性包括width、height、backg…

【软件工程】软件工程定义、软件危机以及软件生命周期

&#x1f338;博主主页&#xff1a;釉色清风&#x1f338;文章专栏&#xff1a;软件工程&#x1f338; 今日语录&#xff1a;What matters isn’t how others think of your ambitions but how fervently you cling to them. 软件工程系列&#xff0c;主要根据老师上课所讲提及…

【ubuntu】安装 Anaconda3

目录 一、Anaconda 说明 二、操作记录 2.1 下载安装包 2.1.1 官网下载 2.1.2 镜像下载 2.2 安装 2.2.1 安装必要的依赖包 2.2.2 正式安装 2.2.3 检测是否安装成功 方法一 方法二 方法三 2.3 其他 三、参考资料 3.1 安装资料 3.2 验证是否成功的资料 四、其他 …

基于机器学习的工业用电量预测完整代码数据

视频讲解: 毕业设计:算法+系统基于机器学习的工业用电量预测完整代码数据_哔哩哔哩_bilibili 界面展示: 结果分析与展示: 代码: from sklearn import preprocessing import random from sklearn.model_selection import train_test_split from sklearn.preprocessing…

vue element plus Typography 排版

我们对字体进行统一规范&#xff0c;力求在各个操作系统下都有最佳展示效果。 字体# 字号# LevelFont SizeDemoSupplementary text12px Extra SmallBuild with ElementBody (small)13px SmallBuild with ElementBody14px BaseBuild with ElementSmall Title16px MediumBuild w…

个人健康管理系统|基于微信小程序的个人健康管理系统设计与实现(源码+数据库+文档)

个人健康管理小程序目录 目录 基于微信小程序的个人健康管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2 运动教程管理 3、公告信息管理 4、论坛信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设…

日期问题---算法精讲

前言 今天讲讲日期问题&#xff0c;所谓日期问题&#xff0c;在蓝桥杯中出现众多&#xff0c;但是解法比较固定。 一般有判断日期合法性&#xff0c;判断是否闰年&#xff0c;判断日期的特殊形式&#xff08;回文或abababab型等&#xff09; 目录 例题 题2 题三 总结 …