高流量大并发linuxtcp性能调优

龙行天下之Sky 龙行天下之Sky     2022-12-14     460

关键词:

本文参考文章为:

优化Linux下的内核TCP参数来提高服务器负载能力

Linux Tuning

本文所面对的情况为:

    高并发数
    高延迟高丢包(典型的美国服务器)

值得注意的是,因为openvz的VPS权限比较低,能够修改的地方比较少,所以使用openvz的VPS作VPN服务器是非常不推荐的。

我们通过修改 /etc/sysctl.conf 来达到调整的目的,注意修改完以后记得使用:

sysctl -p

来使修改生效。

首先,针对高并发数,我们需要提高一些linux的默认限制:

fs.file-max = 51200
#提高整个系统的文件限制
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 = 0
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭;
#为了对NAT设备更友好,建议设置为0。
net.ipv4.tcp_fin_timeout = 30
#修改系統默认的 TIMEOUT 时间。
net.ipv4.tcp_keepalive_time = 1200
#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 10000 65000 #表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为10000到65000。(注意:这里不要将最低值设的太低,否则可能会占用掉正常的端口!)
net.ipv4.tcp_max_syn_backlog = 8192
#表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 5000
#表示系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。

#额外的,对于内核版本新于**3.7.1**的,我们可以开启tcp_fastopen:
net.ipv4.tcp_fastopen = 3

其次,针对大流量高丢包高延迟的情况,我们通过增大缓存来提高TCP性能,自己看E文注释吧……感觉我翻译出来各种味道不对 = =:

# increase TCP max buffer size settable using setsockopt()
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
# increase Linux autotuning TCP buffer limit
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
# increase the length of the processor input queue
net.core.netdev_max_backlog = 250000
# recommended for hosts with jumbo frames enabled
net.ipv4.tcp_mtu_probing=1

这里面涉及到一个TCP拥塞算法的问题,你可以用下面的命令查看本机提供的拥塞算法控制模块:

sysctl net.ipv4.tcp_available_congestion_control

如果没有下文提到的htcp,hybla算法,你可以尝试通过modprobe启用模块:

/sbin/modprobe tcp_htcp
/sbin/modprobe tcp_hybla

对于几种算法的分析,详情可以参考下:TCP拥塞控制算法 优缺点 适用环境 性能分析,但是这里面没有涉及到专门为卫星通讯设计的拥塞控制算法:Hybla。根据各位大神的实验,我们发现Hybla算法恰好是最适合美国服务器的TCP拥塞算法,而对于日本服务器,个人想当然的认为htcp算法应该可以比默认的cubic算法达到更好的效果。但是因为htcp算法恰好没有编入我们所使用的VPS中,所以没办法测试。

#设置TCP拥塞算法为 hybla
net.ipv4.tcp_congestion_control=hybla

高并发流量控制

...前没关注过,这里只学的是单机的处理方式。1.什么是大流量  大流量,我们很可能会冒出:TPS(每秒事务量),QPS(每秒请求量),1W+,5W+,10W+,100W+...。  其实并没有一个绝对的数字,如果这个量造成了系统的压力,影... 查看详情

高并发服务优化篇:从rpc预热转发看服务端性能调优

...组和直连路由寻址,负载均衡是很好,可以保证流量均匀从而保护 查看详情

机器学习模型高性能高并发部署实践探索

...习建模平台参考参考文献高并发服务简介高并发意味着大流量,需要运用技术手段抵抗流量的冲击,这些手段好比操作流量,能让流量更平稳地被系统所处理,带给用户更好的 查看详情

网站高并发大流量访问解决方法

1.硬件升级普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大,那么必须首先配置一台更高性能的专用服务器才能解决问题,否则怎么优化都不可能彻底解决性能问题。2.负载均衡它是根据某种负载策略把... 查看详情

机器学习模型高性能高并发部署实践探索

...习建模平台参考参考文献高并发服务简介高并发意味着大流量,需要运用技术手段抵抗流量的冲击,这些手段好比操作流量,能让流量更平稳地被系统所处理,带给用户更好的体验。常见的高并发场景有:淘宝双11、春运抢票、... 查看详情

高并发服务优化篇:从rpc预热转发看服务端性能调优(代码片段)

...组和直连路由寻址,负载均衡是很好,可以保证流量均匀从而保护服务节点稳定。但是,我们有的时候其实不希望我们的请求乱跑,最好能打到指定的机器上。比如 查看详情

大流量高并发系统之限流特技

...访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,... 查看详情

线上redis高并发性能调优实践

点击上方关注“终端研发部”设为“星标”,和你一起掌握更多数据库知识 作者 |  丶谦信来源| urlify.cn/YBJryu66套java从入门到精通实战课程分享项目背景  最近,做一个按优先级和时间先后排队的需求。用Redis的sorte... 查看详情

并发与性能调优(面试题)

...k个请求,查询手机号的笔试题,设计算法?2、 高并发情况下,我们系统是如何支撑大量的请求的?3、 集群如何同步会话状态?4、 负载均衡的原理?        网站访问量已经越来越大,响应速度... 查看详情

javaweb应用高并发性能优化方案汇总(代码片段)

文章目录背景系统现状优化过程一、应用系统调优准备:调优分析工具1.使用缓存2.优化数据库连接3.优化日志输出4.程序代码优化5.数据库设计优化6.Tomcat运行参数优化二、Tomcat集群三、网络和部署方式调优1.操作系统TCP连接... 查看详情

高并发大流量

...、CDN加速、  静态HTML缓存  业务分离、分布式存储3.流量优化  防盗链处理  前端优化:减少http请求,图片合并,  添加异步请求  启用浏览器缓存和文件压缩  查看详情

java从入门到架构师|高并发|高性能|高可用|分布式|性能调优|设计模式|大型电商项目

没有设计的思想,你就不能成为一名架构师。架构师是一个能撸的了一手好代码,画的了一个漂亮的UML/原型,写的了一篇技术文档,更加能解决好项目关键技术的综合人才。架构师=前端工程师+后端程序员+系统分析师+关键技术... 查看详情

高并发大流量解决方案

一、高并发架构相关概念1、并发:是指并发的访问,也就是某个时间点,有多少个访问同时到来;通常如果一个系统的日PV在千万以上,有可能是一个高并发的系统;2、具体关心什么?QPS:每秒请求或查询的数量,在互联网领... 查看详情

高并发和大流量解决方案

一、高并发架构相关概念1、并发  在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任意一个时刻上只有一个程序在处理机上运行。2、我们说的高... 查看详情

高并发大流量站点架构简单思路

...时候额外储备一部分,以备不时之需2.特别监控网络数据流量是否正常。如是否有大规模的爬虫、DDOS等浑水摸鱼,能够针对iP和Cookie的限流3.使用CDN同一时候做一些必要的算法改造,动静分离************************* 查看详情

高并发和大流量解决方案

序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机运行。我们所说的高并发时什么?上面的定义明显不是我们通常所言的并发,在互联网时代,所讲的并发,高并发,通常是指并发访问。也就是在某个事件... 查看详情

高并发,你真的理解透彻了吗?

...,几乎是每个程序员都想拥有的经验。原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时、CPUload升高、GC频繁、死锁、大数据量存储等等,这些问题能推动我们在技术深度上不断精进。在过往的面试中... 查看详情

大促流量激增,通过什么手段提升系统的高并发高可用性?(代码片段)

...就对我们的支付系统有了更高的要求。所以,如何在流量激增的情况下保证支付服务的高并发和高可用性是对我们的要求。经过一系列的压测、调优,达到了预期的QPS。结果不是最重要的,最重要的是期间的调优过程... 查看详情