外链论坛

 找回密码
 立即注册
搜索
查看: 38|回复: 1

服务器性能优化之网络性能优化

[复制链接]

3002

主题

119

回帖

9915万

积分

论坛元老

Rank: 8Rank: 8

积分
99159226
发表于 2024-8-30 23:32:32 | 显示全部楼层 |阅读模式

曾几何时,一切都是那样简单。网卡很慢,仅有一个队列。当数据包到达时,网卡经过DMA复制数据包并发送中断,Linux内核收集这些数据包并完成中断处理。随着网卡越来越快,基于中断的模型可能会因海量传入数据包而引起 IRQ 风暴。这将消耗大部分 CPU 功率并冻结系统。

认识决这个问题,NAPI(中断+轮询)被提议。当内核收到来自网卡的中断时,它起始查找设备并尽快收集队列中的数据包。NAPI 能够很好地与此刻平常的 1 Gbps 网卡协同运用然则针对10Gbps、20Gbps乃至40Gbps的网卡,NAPI可能还不足倘若咱们仍然运用一个 CPU 和一个队列来接收数据包,这些卡将需要更快的 CPU。幸运的是,此刻多核 CPU 很流行,那样为何不并行处理数据包呢?

1、在优化性能的时候,首要要判断性能的瓶颈在以上的哪个地区而后对症下药,根据下面的办法来优化

1、加强CPU性能的办法

并发。利用多线程、进程。老的线程库效率太低,需要升级用nptl 。进(线)程数不要大于cpu个数 小心用锁。改善架构,尽可能不消锁。

慎用字符串操作,例如sprintf,snprintf,由于%d %s等等都需要CPU资源去做词法分析,数量多的话,是不菲的开销,减少系统调用,例如time,重点消耗在用户态和内核态之间的切换。减少遍历操作。把握真实需要,简化实现方法优化架构,字符串协议解包很耗cpu,思虑单独一个线程,一个好的架构,服务器的CPU总消耗总是平均的分布在各个cpu上,CPU的消耗在70%上下

2、加强网络IO的办法运用epoll代替select,运用非阻塞的模式来研发

3、加强磁盘IO的办法

Linux能够利用空闲内存作文件系统拜访的cache,因此呢系统内存越大存储系统的性能越好,利用次序写,减少寻道次数Cache策略,充分利用cpu和内存的资源来缓解磁盘读写压力

2、怎样来寻找系统的瓶颈呢?能够利用下面的工具:

1、top

能够查看系统中运行的进程的情况,CPU运用情况,系统负载,内存运用等。它是检测系统进程运行情况最方便的工具了,它默认表示部分活动的进程,并且根据进程运用CPU的多少排序。它能够表示所有CPU的运用情况能够表示每一个进程都运行在那个CPU上面。

重点能够用top来看那些进程那类进程占用CPU和内存资源最多,以此快速定位存在性能问题的进程,以及运行反常的进程

2、free

free命令表示系统内存的运用情况理学内存和交换内存)经过这个命令咱们能够看到系统进程实质运用的物理内存,buffer和cache运用理学内存

3、vmstat

vmstat是一个很全面的性能分析工具,能够观察到系统的进程状态、内存运用、虚拟内存运用、磁盘的IO、中断、上下问切换、CPU运用等。

4、Strace

能够用来查看一个进程在执行过程中的系统调用和所接收的信号。

5、tcpdump

linux下的抓包工具。能够把抓下来的信息重定向到文件里。而后在windows下用ethereal来分析。很强大

6、gprof

程序中每一个函数的CPU运用时间。每一个函数的调用次数。并供给简单调用关系图。

运用过程:用gcc或g++编译程序时,运用-pg参数→执行编译得到的运行程序,会产生一个gmon.out文件→使用gprof命令。查看结果信息。(gprof -b proc_name gmon.out | less)TG:li9047

回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-9-6 16:48:36 | 显示全部楼层
我深受你的启发,你的话语是我前进的动力。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-8 23:09 , Processed in 0.069856 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.