1、SystemMaintenance&Management系统维护与管理责任编辑赵志远Linux下NAT模式性能调优西安王震华解宝琦陈军编者按:针对高流量业务通过NAT方式进行转发可能出现的业务丢包或者业务响应迟缓的问题,探讨NAT模式的性能调优方法。Linux常被企业用于出口网关,并通过NAT模式及防火墙对内部网络进行访问控制和保护。在处理高流量的业务通过NAT方式进行转发时,可能会出现业务丢包或者业务响应迟缓的问题。这时用户需要对Linux的默认内核参数进行调优,以满足自己的业务需求。Linux内核提供的Netfilter框架允许对网络数据包进行修改(比如NAT)和过滤(比如防火墙)。因此,
2、所谓的防火墙并不是一个服务,而是一个内核功能。而lptables、l p 6 t a b l e s、E b t a b l e s 等工具是管理和配置Netfilter规则的工具。Netfilter内核功能具有自己的内核参数,优化内核通用化网络参数后,Netfilter内核的参数合理与否,将直接影响该内核功能在实际生产环境中的数据转发效率。Linux内核TCP基本性能参数调优fs.file-max=1000000该参数表示可以打开的最大文件描述符数量。在服务器中,每创建一个连接,系统就会打开一个【上接第9 9 页】对事故发生现场实时画面的传输更加清晰。它属于一个特殊的操作终端,当发生燃气事故
3、后,众多工作人员可以通过大屏幕了解事故现状,并组织应急小组,开展应急工作,制定应急供气方案。系统测试利用物联网技术实现城市燃气事故应急供气系统对事故发生地进行准确定位,并在后台界面作出应急处理决策,使得居民在遇到燃气事故后,可以正常使用燃气,确保生活的稳定,同时帮助燃气修复工作人员更加高效地修复燃气管道,处理好燃气事故。结语城市燃气事故将给居民生活带来严重影响。如何确保居民正常使用燃气,是现阶段城市燃气管理工作的重中之重。本文将物联网技术与应急供气系统相结合,对原有系统进行升级,从而进一步确保居民燃气的正常供应,保障居民的日常生活。N2023.9投稿信箱责任编辑赵志远SystemMainten
4、ance&Management系统维护与管理文件描述符。因此,文件描述符打开的最大数量也决定了最大连接数。fs.nr_open=1000000该值是指单个进程可分配的最大文件数。一般情况下,nofile的值不允许超过nr_open和file-max的值。因此,在修改nofile时,要考虑是否超过以上两个值的情况。nofile可以在/etc/security/limits.conf中进行查看和定义。net.ipv4.tcp_max_syn_backlog=262144该参数表示TCPSYN队列的最大长度。在系统调用connect时,会发生TCP“三次握手”的过程,服务器内核会为TCP维护SYN队
5、列和Accept队列。其中,SYN队列是指存放完成第一次握手的连接,Accept队列是存放完成整个TCP三次握手的连接。修改“net.ipv4.tcp_max_syn_backlog,使之增大,则可以接受更多的网络连接。但此参数过大,可能会遭遇SYNFIoOd攻击,即对方发送多个SYN报文端填充满SYN队列,使服务器无法继续接受其他连接。net.ipv4.tcp_syncookies=1修改此参数可以有效防范以上所说的SYNFlood攻击。在TCP服务器收到TCP SYN包并返回TCPSYN+ACK包时,不专门分配一个数据区,而是根据该SYN包计算出一个Cookie值。在收到TCPACK包时,
6、TCP服务器再根据该Cookie值检查该TCPACK包的合法性。如果合法,再分配专门的数据区进行处理未来的TCP连接。net.ipv4.tcp_keepalive_time=300该参数表示TCPKeepalive心跳包机制,用于检测连接是否已断开,可以通过修改默认时间来改变心跳包发送的频率。“keepalive”一般是服务器发送给客户端来查看客户端是否在线。TCP的Keepalive机制具有争议,因为服务器会为客户端分配一定的资源,会耗费一定的带宽。net.ipv4.tcp_tw_reuse=1大量处于time_wait状态的流量是很浪费资源的,它们占用服务器的描述符等。修改此参数,可以允许
7、重用处于time_wait的Socket。net.ipv4.tcp_tw_recycle=1该参数也是针对time_wait状态的,表示快速回收处于time_wait的Socket。net.ipv4.tcp_fin_timeout=20修改time_wait状态的存在时间,可以释放该状态系统资源。net.ipv4.tcp_max_tw_buckets=5000所允许存在time_wait状态的最大数值。超过该值后,就会立即被清除、警告并释放系统资源。net.ipv4.ip_local_port_range=4096 65535修改扩大对外连接的端口范围。net.core.somaxconn=2
8、62144以上提到SYN队列的最大长度限制。somaxconn参数决定Accept队列长度。在listen函数被调用时,backlog参数即决定Accept队列的长度,该参数如果太小,也会限制最大并发连接数,因为同一时间完成三次握手的连接数量过小,服务器处理连接速度也就越慢。服务器端调用accept函数实际上就是从已连接Accept队列中取走完成三次握手的连接。net.ipv4.tcp_slow_start_after_idle=0可以避免TCP在连接QPS(服务器每秒可以执行的查询次数)不高的情况下,每一个请求都经历慢启动过程,从而提高网络传输速度。服务整体耗投稿信箱2023.9101Sys
9、temMaintenance&Management系统维护与管理责任编辑赵志远时可降低约2 0 mS,以充分发挥TCP长连接的优势,提高网络传输速率。dev_budget=600增大该值到6 0 0,可提高网络吞吐量,一次性地处理更多的数据包。但是这种调整也是有缺陷的,因为这会导致CPU在poll的时间增加,如果系统中运行的任务很多,其他任务的调度延迟就会增加。net.ipv 4.tcp_rmem=10240 87380 12582912该参数定义了TCP接受缓存(用于TCP接受滑动窗口)的最小值、默认值、最大值。net.ipv 4.tcp_wmem=10240 87380 12582912该
10、参数定义了TCP接受缓存(用于TCP接受滑动窗口)的最小值、默认值、最大值。Linux内核Netfilter性能调优filter.nf_conntrack_icmp_timeout=10默认Ping操作到30 s才算超时。filter.nf_conntrack_tcp_timeout_syn_recv=5程序的connect timeout超时时间,默认为120S,显然该时间太长了。filter.nf_conntrack_tcp_timeout_syn_sent=filter.nf_conntrack_tcp_timeout_established=600该参数表示连接的最大超时时间,默认为5
11、天。如果TCP连接5天内没有使用的话,跟踪记录才认为连接断开。这样的连接越多,系统资源消耗越严重。修改该值可以更好地提高有效连接,同时释放资源,从而让系统更高效。filter.nf_conntrack_tcp_timeout_fin_wait=10fin_wait状态超时时间,超过该时间则清除该连接。filter.nf_conntrack_tcp_timeout_time_wait=10time_wait状态超时时间,超过该时间则清除该连接。filter.nf_conntrack_tcp_timeout_close_wait=10close_wait状态超时时间,超过该时间则清除该连接。fil
12、ter.nf_conntrack_tcp_timeout_last_ack=10被动关闭方发送FIN后,如果一直接收不到对面的ACK或RST,将不断重发,直到超时才关闭。filter.nf_conntrack_buckets=filter.nf_conntrack_max=1048576net.nf_conntrack_max=1048576其中,“nf_conntrack_max这个内存有关的计算公式CONNTRACK_MAX=RAMSIZE(inbytes)/16384/(ARCH/32),6 4G B内存的设备最大值为CONNTRACK_MAX=64102410241024/16384/2=2097152。另外,还需要设置哈希表大小,通常为总表的1/8,最大为1/2。CONNTRACK_BUCKETS=CONNTRACK_MAX/8,6 4G B内存的系统,其值通常为2 6 2 1441048576。N 2023.9投稿信箱
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100