您当前的位置:首页 > 指南 > 正文

网络优化要关注哪些参数,如何优化服务器的性能

关于【网络优化要关注哪些参数】,今天涌涌小编给您分享一下,如果对您有所帮助别忘了关注本站哦。

内容导航:1、网络优化要关注哪些参数:高并发场景下,如何优化服务器的性能2、网络优化要关注哪些参数,各项网络优化参数详解

1、网络优化要关注哪些参数:高并发场景下,如何优化服务器的性能

本文分享自华为云社区《【高并发】高并发场景下如何优化服务器的性能?》,作者: 冰 河 。原文戳→https://bbs.huaweicloud.com/blogs/393407?utm_source=jinritoutiao&utm_medium=bbs-ex&utm_campaign=other&utm_content=content

写在前面

最近,有小伙伴在群里提问:Linux系统怎么设置tcp_nodelay参数?也有小伙伴说问我。那今天,我们就来根据这个问题来聊聊在高并发场景下如何优化服务器的性能这个话题。

其实,tcp_nodelay参数并不是在操作系统级别进行配置的,而是在TCP套接字上添加tcp_nodelay参数来关闭粘包算法,以便使数据包能够立即投递出去。tcp_nodelay参数主要是对TCP套接字来说的,那对于服务器硬件,如果要使其能够支撑上百万甚至上千万的并发,我们该如何对其进行优化呢?

操作系统

这里,我使用的操作系统为CentOS 8,我们可以输入如下命令来查看操作系统的版本。

CentOS Linux release 8.0.1905 (Core)

对于高并发的场景,我们主要还是优化操作系统的网络性能,而操作系统中,有很多关于网络协议的参数,我们对于服务器网络性能的优化,主要是对这些系统参数进行调优,以达到提升我们应用访问性能的目的。

系统参数

在CentOS 操作系统中,我们可以通过如下命令来查看所有的系统参数。

/sbin/sysctl -a

部分输出结果如下所示。

网络优化要关注哪些参数,如何优化服务器的性能

这里的参数太多了,大概有一千多个,在高并发场景下,我们不可能对操作系统的所有参数进行调优。我们更多的是关注与网络相关的参数。如果想获得与网络相关的参数,那么,我们首先需要获取操作系统参数的类型,如下命令可以获取操作系统参数的类型。

/sbin/sysctl -a|awk -F "." '{print $1}'|sort -k1|uniq

运行命令输出的结果信息如下所示。

abicryptodebugdevfskernelnetsunrpcuservm

网络优化要关注哪些参数,如何优化服务器的性能

其中的net类型就是我们要关注的与网络相关的操作系统参数。我们可以获取net类型下的子类型,如下所示。

/sbin/sysctl -a|grep "^net."|awk -F "[.| ]" '{print $2}'|sort -k1|uniq

输出的结果信息如下所示。

bridgecoreipv4ipv6netfilternf_conntrack_maxunix

网络优化要关注哪些参数,如何优化服务器的性能

在Linux操作系统中,这些与网络相关的参数都可以在/etc/sysctl.conf 文件里修改,如果/etc/sysctl.conf 文件中不存在这些参数,我们可以自行在/etc/sysctl.conf 文件中添加这些参数。

在net类型的子类型中,我们需要重点关注的子类型有:core和ipv4。

优化套接字缓冲区

如果服务器的网络套接字缓冲区太小,就会导致应用程序读写多次才能将数据处理完,这会大大影响我们程序的性能。如果网络套接字缓冲区设置的足够大,从一定程度上能够提升我们程序的性能。

我们可以在服务器的命令行输入如下命令,来获取有关服务器套接字缓冲区的信息。

/sbin/sysctl -a|grep "^net."|grep "[r|w|_]mem[_| ]"

输出的结果信息如下所示。

net.core.rmem_default = 212992net.core.rmem_max = 212992net.core.wmem_default = 212992net.core.wmem_max = 212992net.ipv4.tcp_mem = 43545 58062 87090net.ipv4.tcp_rmem = 4096 87380 6291456net.ipv4.tcp_wmem = 4096 16384 4194304net.ipv4.udp_mem = 87093 116125 174186net.ipv4.udp_rmem_min = 4096net.ipv4.udp_wmem_min = 4096

网络优化要关注哪些参数,如何优化服务器的性能

其中,带有max、default、min关键字的为分别代表:最大值、默认值和最小值;带有mem、rmem、wmem关键字的分别为:总内存、接收缓冲区内存、发送缓冲区内存。

这里需要注意的是:带有rmem 和 wmem关键字的单位都是“字节”,而带有mem关键字的单位是“页”。“页”是操作系统管理内存的最小单位,在 Linux 系统里,默认一页是 4KB 大小。

如何优化频繁收发大文件

如果在高并发场景下,需要频繁的收发大文件,我们该如何优化服务器的性能呢?

这里,我们可以修改的系统参数如下所示。

net.core.rmem_defaultnet.core.rmem_maxnet.core.wmem_defaultnet.core.wmem_maxnet.ipv4.tcp_memnet.ipv4.tcp_rmemnet.ipv4.tcp_wmem

这里,我们做个假设,假设系统最大可以给TCP分配 2GB 内存,最小值为 256MB,压力值为 1.5GB。按照一页为 4KB 来计算, tcp_mem 的最小值、压力值、最大值分别是 65536、393216、524288,单位是“页” 。

假如平均每个文件数据包为 512KB,每个套接字读写缓冲区最小可以各容纳 2 个数据包,默认可以各容纳 4 个数据包,最大可以各容纳 10 个数据包,那我们可以算出 tcp_rmem 和 tcp_wmem 的最小值、默认值、最大值分别是 1048576、2097152、5242880,单位是“字节”。而 rmem_default 和 wmem_default 是 2097152,rmem_max 和 wmem_max 是 5242880。

注:后面详细介绍这些数值是如何计算的~~

这里,还需要注意的是:缓冲区超过了 65535,还需要将 net.ipv4.tcp_window_scaling 参数设置为 1。

经过上面的分析后,我们最终得出的系统调优参数如下所示。

net.core.rmem_default = 2097152net.core.rmem_max = 5242880net.core.wmem_default = 2097152net.core.wmem_max = 5242880net.ipv4.tcp_mem = 65536 393216 524288net.ipv4.tcp_rmem = 1048576 2097152 5242880net.ipv4.tcp_wmem = 1048576 2097152 5242880

优化TCP连接

对计算机网络有一定了解的小伙伴都知道,TCP的连接需要经过“三次握手”和“四次挥手”的,还要经过慢启动、滑动窗口、粘包算法等支持可靠性传输的一系列技术支持。虽然,这些能够保证TCP协议的可靠性,但有时这会影响我们程序的性能。

那么,在高并发场景下,我们该如何优化TCP连接呢?

(1)关闭粘包算法

如果用户对于请求的耗时很敏感,我们就需要在TCP套接字上添加tcp_nodelay参数来关闭粘包算法,以便数据包能够立刻发送出去。此时,我们也可以设置net.ipv4.tcp_syncookies的参数值为1。

(2)避免频繁的创建和回收连接资源

网络连接的创建和回收是非常消耗性能的,我们可以通过关闭空闲的连接、重复利用已经分配的连接资源来优化服务器的性能。重复利用已经分配的连接资源大家其实并不陌生,像:线程池、数据库连接池就是复用了线程和数据库连接。

我们可以通过如下参数来关闭服务器的空闲连接和复用已分配的连接资源。

net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_keepalive_time=1800

(3)避免重复发送数据包

TCP支持超时重传机制。如果发送方将数据包已经发送给接收方,但发送方并未收到反馈,此时,如果达到设置的时间间隔,就会触发TCP的超时重传机制。为了避免发送成功的数据包再次发送,我们需要将服务器的net.ipv4.tcp_sack参数设置为1。

(4)增大服务器文件描述符数量

在Linux操作系统中,一个网络连接也会占用一个文件描述符,连接越多,占用的文件描述符也就越多。如果文件描述符设置的比较小,也会影响我们服务器的性能。此时,我们就需要增大服务器文件描述符的数量。

例如:fs.file-max = 10240000,表示服务器最多可以打开10240000个文件。

2、网络优化要关注哪些参数,各项网络优化参数详解

IT之家(www.ithome.com):再快一点,各项网络优化参数详解

大家在使用软媒魔方进行系统优化的过程中经常会碰到网络优化部分。启用选择性应答功能、启用MTU的自动检测功能、启用黑洞路由器探测、传输单元缓存区设置等选项具体的作用你都了解吗?如果设置不合理又会导致怎样的结果?下面为大家详细介绍下。如果有不完整的地方,或是有其他的疑问,欢迎各位读者朋友们提出你们的宝贵意见和建议。

1、启用选择性应答功能

这个功能在之前的某些教程中被介绍为ADSL数据分包功能。开启这个功能后,需要传输的大容量数据首先被分成若干个小的数据包,然后再进行传输。而这种小的数据包对ADSL的网速不会产生太大影响。

这种说法是否是正确的呢?在解答之前,我们先来看看微软是如何解释的:

网络优化要关注哪些参数,如何优化服务器的性能

根据微软的描述,选择性应答功能(SackOpts)是为了在接受方接收数据出现错误时,向发送方返回一个通知,告诉发送方是哪部分数据出现了错误。然后根据此信息,发送方将正确的这部分数据重新发给接收方,而不是将所有数据统统再重新发送一遍。这样就避免了正确数据的重复发送,提高了TCP通信的性能。

2、启用网卡处理器功能

这部分是指网卡自身的主控制芯片。网卡的主控制芯片一般采用3.3V的低耗能设计、0.35μm的芯片工艺。它能快速计算流经网卡的数据,从而减轻CPU的负担。不过,也有部分网友反映开启这个选项后,上网出现了不稳定问题。大家根据实际情况进行选择。

3、提升网络性能及吞吐量

这部分的设置是综合性的,包含若干项设置,其主要思路是通过增大在没有得到接收端确认前可以发送的最大字节数,来减少返回的确认信息数量,从而增加数据吞吐量。尤其是在当前多媒体信息众多的网络环境下,提高吞吐量有着非常大的现实意义。而且通过Tcp1323Opts的窗口缩放和时间戳功能,这个数据量的上限很惊人,最大可以达到1GB。

4、启用MTU的自动检测功能(最大传输单元,即MTU部分在这里一并介绍)

在默认情况下,TCP IP协议在网络中的最大传输单元,即MTU值为1500。这是什么意思呢?我们知道网络传输数据是按数据包的形式来传送的,例如默认的MTU值为1500字节,那么当传送的数据大于1500时,则会以此为标准,将其分封个若干个1500字节,然后进行封包、解包操作。MTU值的大小会直接影响到封包和解包操作的频率。

MTU值设置过小,那么会在网络中进行频繁的封包和解包,其影响显而易见;而设置的值过大虽然对局域网内部传输速度有提升作用,但是接入互联网则会影响传输的稳定性。不同运营商网络的MTU值是不一样的,因此我们需要寻找最合适的MTU值。这个确定的过程可以通过PING命令附加“-f”和“-l”参数制定MTU值(通常情况下为1500或稍小),然后连接特定IP地址来完成测定。至于具体的测定方法在这里不做展开。

5、启用黑洞路由器探测功能

这里大家可以将黑洞路由器其理解为我们发送的数据包体积超出了路由器最大传输单位的限制,路由器没有把这个消息反馈给数据包的发送方,而是悄悄丢弃了这部分数据。这样就导致了发送方连接超时,影响正常的访问。这个功能的开启是为了探测并避开这些黑洞路由器,保持正常的网络连接。

6、设置系统的保留带宽

这部分保留的带宽是指,当网络过载的时候,也就是饱和的时候可以允许特别需要网络的一些功能(关键应用和多媒体技术)优先使用一定的带宽来保证这些程序不断线。必须提醒大家的是:这里的设置并不代表可以真正为你增加实际的带宽。大家需要特别注意这点。不要被误导。

7、传输单元缓存区

传输单元缓存区是指,当某个分组数据出现错误时,则整个缓存区内的数据都将被清空,然后重新传输这部分数据。若缓冲区设置太小,将导致分组阻塞,降低传输效率。缓冲区太大,一个分组出错会导致缓冲区中的所有数据被丢弃和重发,也会降低效率。该值最好是MSS(即Maximum Segment Size,最大分组数。等于最大MTU值减去40字节的地址信息)的整数倍。

8、默认分组报文寿命

这部分设置决定着数据在互联网中传输时的延续时间,若超过了这个时间,这部分分组数据就将被丢弃。把这个值适当加大,可以让数据传输的更远一些。

9、服务器域名超时时间

如果在NameSrvQueryTimeout(域名服务器超时计数)计数值的时间内没有收到域名服务器的响应,则当域名服务器没有收到本机的请求,请求将会重发或做超时错误处理。优化该值可以增加连接的成功率。

大家可能看的晕头转向了吧,以上内容大家仅作了解即可。全新软媒魔方6已经提供了自动设置以上所有参数的功能,一键搞定,十分方便。大家来看下如何使用:

软媒魔方网络加速参数设置教程:

1、下载软媒魔方,方便小伙伴们设置网络参数。另外全新软媒魔方6还有软媒时间、软媒桌面等一大堆新功能,欢迎大家下载体验:http://mofang.ruanmei.com/

2、在主界面中选择常用应用中的“设置大师”,或者直接在搜索框内搜索“网络”,都可以进入到网络设置部分,是不是很方便。

网络优化要关注哪些参数,如何优化服务器的性能

3、在打开的设置大师界面中,先选择左侧的“网络加速设置”,然后选择对应的上网方式,再点击下方的“自动优化”按钮,最后点击“保存设置”,然后再重启一次就可以应用设置了,是不是很简单。

网络优化要关注哪些参数,如何优化服务器的性能

感谢网友的提醒,这里对上网方式的选择做一下说明:

• 调制解调器拨号、ISDN方式:这两种都是古老的拨号上网方式,而且不属于宽带的范畴,大家一般不要选择。

• xDSL:通过电话线接入宽带的用户选这个。

• PPPoE拨号:PPPoE是一种拨号协议,大家可以理解为最常见的上网方式,通过宽带账号、密码连接上网的用户选这个。

• Cable Modem方式:利用广电公司有线电视网络接入互联网的用户选这个。

• 局域网或更高:多台电脑在局域网环境下使用的用户选这一项。

本文关键词:网络优化需要哪些知识,网络优化要关注哪些参数设置,网络优化涉及哪些参数,网络优化要关注哪些参数和内容,网络优化有哪些主要流程。这就是关于《网络优化要关注哪些参数,如何优化服务器的性能》的所有内容,希望对您能有所帮助!


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 等渴了再去喝水对肾脏有什么危害,医生劝告:遇到这6种情况

下一篇: winsetupfromusb WinSetupFromUSB制作centos



推荐阅读