基于linux服务器的性能分析与优化(一)

平时一直用linux服务器,有时候做性能测试,不懂怎么发现性能瓶颈,知道了性能问题后又不懂怎么优化,就找了本书开始学习。下面就是学习过程中的随笔记录。


首先看的是《高性能linux服务器构建实战》。


10.1 系统性能分析的目的

10.1.1  找到系统性能的瓶颈

系统的性能是指操作系统完成任务的有效性、稳定性和响应速度。


10.1.2 提供性能优化方案

10.1.3 使系统硬件和软件资源的使用达到平衡

性能优化的最终目的是:在一定范围内使系统的各项资源使用区域合理并保持一定的平衡。

任何一项资源的过度使用都会破坏这种平衡,从而导致系统响应过慢或者负载过高。

例如,CPU资源的过度使用,会造成系统中出现大量的等待进程,导致应用程序响应缓慢,而进程的大量增加又会导致系统内存资源的增加,当物理内存耗尽时,系统会使用虚拟内存,而虚拟内存的使用又会造成磁盘IO的增加并加大CPU的开销。


10.3 影响Linux性能的各种因素

10.3.1 系统硬件资源

1. CPU

目前大部分CPU在同一时间只能运行一个线程,超线程的处理器可以在同一时间处理多个线程,因此可以利用超线程特性提高系统性能。

在linux系统下只有运行SMP内核才能支持超线程,但是安装的CPu数量越多,从超线程获得的性能提升越少。

另外linux内核会将多核的处理器当做多个单独的CPU来识别,例如,两个4核的CPU会被当成8个单个CPU,从性能角度讲,两个4核的CPU整体性能要比8个单核CPU低25%-30%。

可能出现CPU瓶颈的应用有邮件服务器、动态web服务器等。

2. 内存

内存太小,系统进程将被阻塞,应用也将变得缓慢,甚至失去响应;内存太大,导致资源浪费。

虚拟内存可以缓解物理内存的不足,但是虚拟内存的过多占用会导致应用程序的性能明显下降。

在一个32位处理器的linux系统中超过8GB的物理内存都将被浪费,因此要使用更大的内存,建议安装64位的操作系统,同时开启linux的大内存内核支持。

由于处理器寻址范围的限制,在32位linux操作系统上,应用程序单个进程最大只能使用2GB的内存。

可能出现内存瓶颈的有打印服务器、数据库服务器、静态web服务器等。

3. 磁盘IO性能

磁盘RAID技术,Redundant Array of Independent Disk,即独立磁盘冗余阵列,简称磁盘阵列。

RAID通过将多块独立的磁盘(物理硬盘)按不同的方式组合起来形成一个磁盘组(逻辑硬盘),从而提供比单个磁盘更高的IO性能和数据冗余。

根据磁盘组合方式不同,分为RAID0、RAID1、RAID2、RAID3、RAID4、RAID5、RAID6、RAID7、RAID0+1、RAID10等,常用的有RAID0、RAID1、RAID5、RAID0+1。

RAID0:通过把多块硬盘粘合成一个容量更大的硬盘组,提高磁盘的性能和吞吐量,成本低,至少两块磁盘,但是没有容错和数据修复功能,只能用在对数据安全性要求不高的环境中。

RAID1:也就是磁盘镜像,通过把一个磁盘的数据镜像到另外一个磁盘上,最大限度的保证磁盘数据的可靠性和可修改性,具有很高的数据冗余能力,但是磁盘利用率只有50%,成本较高,多用在保存重要数据的场合。

RAID5:磁盘分段加奇偶校验技术,提高了系统的可靠性。读出效率很高,写效率一般,至少需要3块磁盘,允许一块磁盘故障,不影响数据的可用性。

RAID0+1:把RAID0和RAID1技术结合起来,至少需要4块硬盘,每个盘都有其镜像盘,提高全冗余能力,并具有快速读写能力。

4.网络带宽


10.3.2 操作系统相关资源

1. 系统安装优化

当安装linux系统时,磁盘划分、SWAP内存的分配都直接影响系统性能。

对于虚拟内存SWAP的设定,现在已经没有了所谓虚拟内存是物理内存两倍的要求,但是根据经验,如果内存较小(物理内存小于4GB),一般设置SWAP交换分区大小为内存的2倍;如果物理内存大约4GB小于16GB,可以设置SWAP大小等于或者略小于物理内存即可;如果内存在16GB以上,原则上可以设置SWAP为0,但最好设置一定大小的SWAP

2. 内核参数优化

例如,如果系统部署的oracle数据库应用,那么就需要对系统共享内存段(kernel.shmmax, kenerl.shmmni, kernel.shmall)、系统信号量(kernel.sem)、文件句柄(fs.file0max)等参数进行优化设置;如果部署的WEB应用,那么就需要根据web应用特性进行网络参数的优化,例如修改net.ipv4.ip_local_port_range、net.ipv4.tc_tw_reuse、net.core.somaxconn等网络内核参数

3. 文件系统优化

在linux下可选的文件系统有ext2,、ext3、xfs、ReiserFS

linux标准文件系统是从VFS开始,然后ext、ext2,ext2是linux上的标准文件系统,ext3是在ext2基础上增加日志形成的。

从VFS到ext3,设计思想没有太大变化,都是早期UNIX家族基于超级块和inode的设计理念设计而成。

XFS文件系统是SGI开发的一个高级日志文件系统,通过分布处理磁盘请求、定位数据、保持cache的一致性来提供对文件系统数据的低延迟、高带宽的访问,因此XFS极具伸缩性,非常健壮,具有优秀的日志记录功能、可扩展性强、快速写入等优点。

ReiserFS在Hans Reiser领导下开发出来的一款高性能的日志文件系统,通过完全平衡树来管理数据,包括文件数据、文件名及日志支持等。与ext2、ext3相比,最大的优点是访问性能和安全性大幅提升。具有高效、合理利用磁盘空间,先将的日志管理机制,特意的搜寻方式,海量磁盘存储等优点。


10.4 系统性分析标准和优化原则

CPU

好: user%+sys%<70%

坏: user%+sys%=85%

糟糕: user%+sys%>=90%


内存

好:SwapIn(si) = 0 SwapOut(so) = 0

坏:Per CPU with 10page/s

糟糕:more swap In & swap out


磁盘

好:iowait%<20%

坏:iowait% = 35%

糟糕:iowait%>=50%


其中

user%表示CPU处在用户模式下的时间百分比

sys%表示CPU处在系统模式下的时间百分比

iowait%表示CPU等待输入输出完成时间的百分比

swap in表示虚拟内存的页导入,从SWAP DISK交换到RAM

swap out表示虚拟内存的页导出,从RAM交换到SWAP DISK



展开阅读全文

没有更多推荐了,返回首页