linux性能优化实战-网络性能调优

转自:https://blog.csdn.net/twypx/article/details/80290759

大多数Linux发行版都定义了适当的缓冲区和其他TCP参数,可以通过修改这些参数来分配更多的内存,从而改进网络性能。设置内核参数的方法是通过proc接口,也就是通过读写/proc中的值。幸运的是,sysctl可以读取/etc/sysctl.conf中的值并根据需要填充/proc,这样就能够更轻松地管理这些参数。

下面展示了在互联网服务器上应用于Internet服务器的一些比较激进的网络设置。

# Use TCP syncookies when needed
net.ipv4.tcp_syncookies = 1
# Enable TCP window scaling
net.ipv4.tcp_window_scaling = 1
# Increase TCP max buffer size
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# Increase linux autotuning TCP buffer limits
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65535 16777216
# Increase number of ports available
net.ipv4.ip_local_port_range = 1024 65000

将这些设置添加到/etc/sysctl.conf的现有内容中。

第一个设置启用TCP SYN cookie。

当从客户机发来新的TCP连接时,数据包设置了SYN位,服务器就位这个半开的连接创建一个条目,并用一个SYN-ACK数据包进行响应。在正常操作中,远程客户机用一个ACK数据包进行响应,这回使得半开的连接转换为全开的。

有一种称为SYN泛滥(SYN flood)的网络攻击,它使ACK数据包无法返回,导致服务器用光内存空间,无法处理到来的连接。SYN cookie特性可以识别出这种情况,并使用一种优雅的方法保留队列中的空间,大多数系统都默认启用这个特性,但是确保配置这个特性更可靠。

第二个设置启用TCP窗口伸缩

启用TCP窗口伸缩可以使客户机能够以更高的速度下载数据。TCP允许在未从远程端收到确认的情况下发送多个数据包,默认设置是最多64KB,在与延迟比较大的远程客户机进行通信时这个设置可能不够,窗口伸缩会在头中启用更多的位,从而增加窗口大小。

后面四个配置项增加TCP发送和接收缓冲区

这使应用程序可以更快地丢掉它的数据,从而为另一个请求服务,还可以强化远程客户机在服务器繁忙时发送数据的能力。

最后一个配置项增加可用的本地端口数量

这样就增加了可以同时服务的最大连接数量。

在下一次引导系统时,或者下一次运行sysctl -p /etc/sysctl.conf时,这些设置就会生效。

TCP/IP子系统的调优
所有的TCP/IP调优参数都位于/proc/sys/net目录,例如下面是最重要的一些调优参数:

# 最大的TCP数据接收缓冲
/proc/sys/net/core/rmem_max
# 最大的TCP数据发送缓冲
/proc/sys/net/core/wmem_max
# 时间戳在TCP的包头增加12个字节
/proc/sys/net/ipv4/tcp_timestamps
# 有选择的应答
/proc/sys/net/ipv4/tcp_sack
# 支持更大的TCP窗口,如果TCP窗口最大超过65535,必须设置该数值为1
/proc/sys/net/ipv4/tcp_window_scaling
# 默认的接收窗口大小
rmem_default
# 接收窗口的最大大小
rmem_max
# 默认的发送窗口大小
wmem_default
# 发送窗口的最大大小
wmem_max

/proc目录下的所有内容都是临时性的,所以重启系统后任务修改都会丢失

建议在系统启动时自动修改TCP/IP参数,将下面代码增加到/etc/rc.local文件中,然后保存文件,系统重新引导的时候回自动修改下面TCP/IP参数:

echo 256960 > /proc/sys/net/core/rmem_default
echo 256960 > /proc/sys/net/core/rmem_max
echo 256960 > /proc/sys/net/core/wmem_default
echo 256960 > /proc/sys/net/core/wmem_max
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 1 > /proc/sys/net/ipv4/tcp_sack
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling

TCP/IP参数都是自解释的,TCP窗口大小设置为256960,禁止TCP的时间戳(取消在每个数据包的头中增加12字节),支持更大的TCP窗口和TCP有选择的应答。

上面数值的设定是根据互联网连接和最大带宽/延迟率来决定的。

另外一个方法:使用/etc/sysctl.conf在系统启动时将参数设置成需要设置的值。

net.core.rmem_default = 256960
net.core.rmem_max = 256960
net.core.wmem_default = 256960
net.core.wmem_max = 256960
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1

原文地址:https://www.cnblogs.com/yanwei-wang/p/10739821.html

时间: 2024-10-12 19:37:10

linux性能优化实战-网络性能调优的相关文章

Ceph性能优化 之 配置参数调优

该文同时发表在盛大游戏G云微信公众号,粘贴于此,方便各位查阅 Ceph,相信很多IT朋友都听过.因为搭上了Openstack的顺风车,Ceph火了,而且越来越火.然而要用好Ceph却也不是件易事,在QQ群里就经常听到有初学者抱怨Ceph性能太烂,不好用.事实果真如此吗!如果你采用Ceph的默认配置来运行你的Ceph集群,性能自然不能如人意.俗话说,玉不琢,不成器:Ceph也有它的脾性,经过良好配置优化的Ceph性能还是不错的.下文简单分享下,盛大游戏G云在Ceph优化上的一些实际经验,如有错误之

spark性能优化:数据倾斜调优

调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题--数据倾斜,此时Spark作业的性能会比期望差很多.数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能. 数据倾斜发生时的现象 1.绝大多数task执行得都非常快,但个别task执行极慢.比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时.这种情况很常见. 2.原本能够正常执行的Spark作业,某天突然报出OOM(内存溢出)异常,观察异常

SQL和PL/SQL的性能优化之三--表访问调优

1.一般来说,在where子句的条件选择性不是很高时,全表扫描是最合适的检索路径,而在条件选择很高时,索引或聚簇方法将更合适. 就IO而言,无论记录多大,每个索引访问的开销几乎都是相同的,然而,记录越长,全表扫描必须读取的数据块就越多. 1.1 优化器目标(optimizer goal) 设置为ALL_ROWS和FIRST)ROWS对是否使用索引差异很大. 1.2 基于索引的执行计划更能够从缓冲区高速缓存中的缓存块上获得益处.参数OPTIMIZER_INDEX_CACHING可用来改变优化器估算

Linux环境下查看网络性能的基本命令

                 Linux环境下查看网络性能的基本命令 由于Linux经常使用的是字符界面,而且Linux的功能比较强大,具有默认路由功能,相当于网关和路由器.在网络性能方面也比较稳定,而且配置简单.当然在配置网络的时候可能会发生网络的连通性不稳定或者不通.一下命令或许对大家有所帮助: 1.curl & wget 使用curl或wget命令,不用离开终端就可以下载文件.如你用curl,键入curl -O后面跟一个文件路径.wget则不需要任何选项.下载的文件在当前目录. cur

蚂蚁金服架构师带你深入性能优化一MySql性能优化实战

概要: Mysql的优化,大体可以分为三部分:索引的优化,sql语句的优化,表的优化.本文主要帮助自己整理思路,也可作为一个学习MySQL优化的提纲. 索引的优化 只要列中含有NULL值,就最好不要在此例设置索引,复合索引如果有NULL值,此列在使用时也不会使用索引 尽量使用短索引,如果可以,应该制定一个前缀长度 对于经常在where子句使用的列,最好设置索引,这样会加快查找速度 对于有多个列where或者order by子句的,应该建立复合索引 对于like语句,以%或者'-'开头的不会使用索

面向.Net程序员的后端性能优化实战

最近2个月没做什么新项目 完全是对于旧的系统进行性能优化 避免超时 死锁 数据处理能力不够等常见的性能问题 这里不从架构方面出发 毕竟动大手脚成本比较高 那么我们以实例为前提 从细节开始 优化角度 一.业务逻辑优化 二.DB优化 三.数据处理优化 四.锁与性能 五.cpu飙高小结 六.crash现象分析 业务逻辑优化 这一条不具有普遍性 不同的业务不同的场景 如果归纳起来 就是在不影响业务的前提下进行流程精简 1. 废弃冗余逻辑 常见于各种基于数据库的检查 很多同学在维护别人代码的时候 没有深入

思考:网络性能优化:网络 -- cpu -- 线程数 -- 单个任务耗时 --- qps --- 并发

思考:网络性能优化:网络 -- cpu -- 线程数 -- 单个任务耗时 --- qps --- 并发如果没有理清楚上述概念和它们之间的关系,那么优化会毫无章法:线程越多,利用上的线程越多,cpu的idle会约低,只到cpu低得不能再低,一般情况下,可以可劲用(idle为10%你遇到过吗?),但是要注意你的下游能否能扛得住你转嫁给他们的并发压力呢:单个任务处理越快,qps和并发会越高:两个线程的并发一定是一个线程的两倍,10个线程的并发一定是2个线程的5倍:qps是一秒处理的任务数,这个换算逻辑

LAMP 系统性能调优之网络文件系统调优

LAMP 系统性能调优之网络文件系统调优 2011-03-21 09:35 Sean A. Walberg 网络转载 字号:T | T 使用LAMP系统的用户,都想把自己LAMP性能提高运行的速度提高,那它有一点可以调优: 网络文件系统 ,我们知道网络文件系统是网络共享磁盘的一个系统,我们来进行调优下! AD:2014WOT全球软件技术峰会北京站 课程视频发布 图-LAMP LAMP网络文件系统调优 网络文件系统(NFS)是一种通过网络共享磁盘的方法.NFS 可以帮助确保每个主机具有相同数据的拷

Android App性能优化笔记之一:性能优化是什么及为什么?

By Long Luo 周星驰的电影<功夫>里面借火云邪神之口说出了一句至理名言:“天下武功,唯快不破”. 在移动互联网时代,同样如此,留给一个公司的窗口往往只有很短的时间,如何把握住这个时机,迅速开发出产品,成为至关重要的一环.相对传统互联网时代的PC产品,用户对移动端产品的容忍度更低.而一款移动应用在推出的时候可能只是接近完成的状态,这就需要通过快速的迭代开发来更新产品,不断完善产品来留住用户.同时,通过更新产品也能唤醒一些沉默用户,让一些原本下载了应用但使用次数非常少的用户给该应用多一次