运维工程师高频面试——Linux系统性能优化思路(一)

时间:2023-02-22 07:18:02

       Linux服务器主机性能优化是运维工程师面试常考常新的主题,首先我们要清楚影响Linux性能的各种因素,包括硬件资源、 硬件资源方面,如果是动态web应用、mail服务等都是较为消耗CPU资源的,需要使用多核CPU与超线程技术;内存方面需要较好把控物理内存与swap的取舍,比如可以对内核参数进行设置,让大数据业务使用固定物理内存,限制使用swap内存的容量;如无特殊需求,需要选择主流的64位操作系统,需要充分redis、hbase、mongodb等消耗内存的数据库。关于磁盘IO资源,使用raid10可以兼具raid0、raid1的优势,对高频访问数据使用SSD硬盘存储,对冷备份数据可以使用磁盘存储,以兼顾性能和成本。网络设备一般选择万兆网卡,操作系统考虑使用双网卡绑定运行的方式,减轻单块网卡的流量负载。 操作系统方面,除了需要对磁盘合理分区,raid设置、swap设置以外,对内核参数进行优化是杀手锏,比如通过ulimit -n设置系统最大文件打开数,ulimit -u设置系统最大用户数等,文件系统优化方面,尽量使用ext4格式和xfs格式,前者支持无线子目录,可以快速fsck,后者能够提供较高性能运行效率。 常用的linux性能优化工具: (1)vmstat(系统默认自带) 使用vmstat命令可以对操作系统内存信息、进程状态、CPU活动等主要指标进行监控, 例如下面是vmstat命令在某个系统上的输出结果:

[root@liguo110 ~]# vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 264 92240 2108 306500 0 0 17 2 71 170 0 0 100 0 0
0 0 264 92216 2108 306500 0 0 0 0 134 327 0 0 100 0 0
1 0 264 92216 2108 306500 0 0 0 0 121 311 0 0 100 0 0
procs:
r列表示运行和等待分配cpu时间片的进程数,这个值长期大于系统CPU 的个数, 说明CPU资源不足,需要增加 CPU解决进程等待问题。b列表示在等待资源的进程数,比如正在等待I/O、内存交换等。
memory:
swpd列表示切换到内存交换区的内存数量(以kb为单位)。如果swpd值不为0,或者比较大,只要si、so的值长期为0,不会影响系统性能。
buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲。
cache列表示page cached的内存数量,作为文件系统cached,频繁访问的文件都会被放入cached,如果cache 值较大,说明其中的文件数较多,如果此时IO中的bi比较小,说明文件系统运行效率比较好。
swap:
si列表示由磁盘调入内存,就是内存进入内存交换区的数量。so列表示从内存调入磁盘。一般情况下,si、so 的值都为 0,如果 si、so 的值长期不为 0,则表示系统内存不足,需要增加系统内存。
IO 项显示磁盘读写状况:Bi列表示从块设备读入数据的总量(即读磁盘)。Bo 列表示写入到块设备的数据总量(即写磁盘)。
system:
显示采集间隔内发生的中断数,in列表示在某个时间间隔观测到的每秒设备中断数,cs列表示每秒产生的上下文切换次数。这2个值越大,内核消耗的CPU时间越多。
CPU:
CPU的使用状态,us 列显示了用户进程消耗的 CPU 时间百分比。us 的值比较高时,说明用户进程消耗的cpu 时间多,如果长期大于50%,需要考虑优化程序或算法。sy列显示内核进程消耗的CPU时间百分比。Sy的值较高,说明内核消耗的CPU资源很多。Sy的值较高,说明内核消耗的CPU资源很多。id列显示了CPU处在空闲状态的时间百分比。wa 列显示了IO等待所占用的CPU时间百分比。wa值越高,说明IO等待越严重。造成IO等待的原因可能是磁盘大量随机读写,也可能是磁盘或者磁盘控制器的带宽瓶颈造成的。
在对 CPU 的评估中,需要重点注意的是procs项、r列的值;CPU项中us、 sy和id列的值。