Linux操作体系是一个开源产品,也是一个开源软件的实践和运用渠道,在这个渠道下有许多的开源软件支撑,咱们常见的Apache、tomcat、mysql、php等等,开源软件的最大理念是自在、敞开。那么Linux作为一个开源渠道,终究要完结的是经过这些开源软件的支撑,以最低价的本钱,到达运用最优的功用。因而,谈到功用问题,首要完结的是linux操作体系和运用程序的最佳结合。

一、功用问题总述

体系的功用是指操作体系完结使命的有效性、安稳性和呼应速度。Linux体系管理员或许经常会遇到体系不安稳、呼应速度慢等问题,例如在linux上搭建了一个web服务,经常呈现网页无法翻开、翻开速度慢等现象,而遇到这些问题,就有人会诉苦linux体系欠好,其实这些都是表面现象。操作体系完结一个使命时,与体系自身设置、网络拓扑结构、路由设备、路由战略、接入设备、物理线路等多个方面都密切相关,任何一个环节呈现问题,都会影响整个体系的功用。因而当linux运用呈现问题时,应当从运用程序、操作体系、服务器硬件、网络环境等方面归纳排查,定位问题呈现在哪个部分,然后会集处理。
在运用程序、操作体系、服务器硬件、网络环境等方面,影响功用最大的是运用程序和操作体系两个方面,由于这两个方面呈现的问题不易发觉,隐蔽性很强。而硬件、网络方面只需呈现问题。一般都能立刻定位。下面首要解说操作体系方面的功用调优思路,运用程序方面需求详细问题详细对待。
以下从影响Linux功用的要素、剖析功用触及的人员、体系功用优化东西、体系功用点评规范四个方面介绍优化Linux的一般思路和办法

二、影响Linux功用的要素

2.1体系硬件资源

1.CPU

CPU是操作体系安稳运转的底子,CPU的速度与功用在很大程度上决议了体系全体的功用,因而,CPU数量越多、主频越高、服务器功用也就相对越好。但现实并非彻底如此。
现在大部分CPU咋同一时间内只能运转一个线程,超线程的处理器能够在用一时间运转多个线程,因而运用处理器的超线程特性进步体系功用。在Linux体系下,只要运转SMP内核才干支撑超线程,可是,装置的CPU数量越多,从超线程取得的功用方面的进步就越少。别的,Linux内核会把多核的处理器当作多个独自的CPU来辨认,例如两个4核的CPU,在Linux体系下会被当作8个单核CPU。可是从功用视点来讲,两个4核的CPU和8个单核的CPU并不彻底等价,依据权威部门得出的测验定论,前者的全体功用要比后者低25%~30%。
或许呈现CPU瓶颈的运用有DB服务器、动态WEB服务器等,关于这类运用,要把CPU的装备和功用放在首要方位。

2.内存

内存的巨细也是影响Linux功用的一个重要要素,内存太小,体系进程被堵塞,运用也将变得缓慢,乃至失掉呼应;内存太大,导致资源糟蹋。Linux体系采用了物理内存和虚拟内存两种办法,虚拟内存尽管能够缓解物理内存的缺乏,可是占用过多的虚拟内存,运用程序的功用将显着下降,要确保运用程序的高功用运转,物理内存必定要足够大;可是过大的物理内存,会构成内存资源糟蹋,例如,在一个32位处理器的Linux操作体系上,超越8GB的物理内存都将被糟蹋。因而,要运用更大的内存,主张装置64位的操作体系,一起敞开Linux的大内存内核支撑。
由于处理器寻址规模的约束,在32位Linux操作体系上,运用程序单个进程最大只能运用4GB的内存,这样一来,即便体系有更大的内存,运用程序也无法“享”用,处理的办法便是运用64位处理器,装置64位操作体系。在64位操作体系下,能够满意一切运用程序对内存的运用需求,几乎没有约束。
或许呈现内存功用瓶颈的运用有NOSQL服务器、数据库服务器、缓存服务器等,关于这类运用要把内存巨细放在首要方位。

3.磁盘I/O功用

磁盘的I/O功用直接影响运用程序的功用,在一个有频频读写的运用中,假如磁盘I/O功用得不到满意,就会导致运用阻滞。好在如今的磁盘都采用了许多办法进步I/O功用,比方常见的磁盘RAID技能。
经过RAID技能组成的磁盘组,就相当于一个大硬盘,用户能够对它进行分区格式化、树立文件体系等操作,跟单个物理硬盘如出一辙,仅有不同的是RAID磁盘组的I/O功用比单个硬盘要高许多,一起在数据的安全性也有很大提高。
依据磁盘组合办法的不同,RAID能够分为RAID0,RAID1,RAID2,RAID3,RAID4,RAID5,RAID6,RAID7,RAID0+1,RAID10等等级,常用的RAID等级有RAID0,RAID1,RAID5,RAID0+1,这儿进行简略介绍。
RAID0:经过把多块硬盘粘组成一个容量更大的硬盘组,进步了磁盘的功用和吞吐量。这种办法本钱低,要求至少两个磁盘,可是没有容错和数据修正功用,应而只能用在对数据安全性要求不高的环境中。RAID1:也便是磁盘镜像,经过把一个磁盘的数据镜像到另一个磁盘上,最大极限确保磁盘数据的可靠性和可修正性,具有很高的数据冗余才干,但磁盘运用率只要50%,因而,本钱最高,多用在保存重要数据的场合。RAID5:采用了磁盘分段加奇偶校验技能,然后进步了体系可靠性,RAID5读出功率很高,写入功率一般,至少需求3块盘。答应一块磁盘毛病,而不影响数据的可用性。RAID0+1:把RAID0和RAID1技能结合起来就成了RAID0+1,至少需求4个硬盘,此种办法的数据除散布在多个盘上外,每个盘都有其镜像盘,供给冗余才干,一起答应一个磁盘毛病,而不影响数据可用性,并具有快速读/写才干。

4.网络带宽

Linux下的各种运用,一般都是依据网络的,因而网络带宽也是影响功用的一个重要要素,低速的、不安稳的网络将导致网络运用程序的拜访堵塞,而安稳、高速的网络带宽,能够确保运用程序在网络上四通八达地运转。走运的是,现在的网络一般都是千兆带宽或光纤网络,带宽问题对运用程序功用构成的影响也在逐渐下降。

2.2操作体系相关资源

依据操作体系的功用优化也是多方面的,能够从体系装置、体系内核参数、网络参数、文件体系等几个方面镜像衡量,下面顺次进行简略介绍。

1.体系装置优化

体系优化能够从装置操作体系开端,当装置Linux体系时,磁盘的区分,SWAP内存的分配都直接影响今后体系的运转功用,例如,磁盘分配能够遵从运用的需求:
关于写操作频频而对数据安全性要求不高的运用,能够把磁盘做成RAID0;
关于数据安全性较高,对读写没有特别要求的运用,能够把磁盘做成RAID1;
关于读操作要求较高,而对写操作无特殊要求,并要确保数据安全性的运用,能够挑选RAID5;
关于读写要求都很高,而且对数据安全性要求也很高的运用,能够挑选RAID10或RAID0+1。这样经过不同的运用需求设置不同的RAID等级,在磁盘底层对体系进行优化操作。
跟着内存价格的下降和内存容量的日益增大,对虚拟内存SWAP的设定,现在现已没有了所谓虚拟内存是物理内存两倍的要求,可是SWAP的设定仍是不能疏忽,依据经历,假如内存较小(物理内存小于4GB),一般设置SWAP交流分区巨细为内存的2倍,假如物理内存大于8GB小于16GB,能够设置SWAP巨细等于或疏忽小于物理内存即可,假如内存巨细在16GB以上,原则上能够设置SWAP为0,但并不主张这么做,由于设置必定巨细的SWAP仍是有必定效果的。

2.内存参数优化

体系装置完结后,优化作业并没有完毕,接下来还能够对体系内核参数进行优化,不过内核参数的优化要和体系中布置的运用结合起来全体考虑。例如,假如体系布置的是Oracle数据库运用,那么就需求对体系同享内存段(kernel.shmmax、kernel.shmmni、kernel.shmall)、体系信号量(kernel.sem)、文件句柄(fs.file-max)等参数进行优化设置;假如布置的是WEB运用,那么就需求依据WEB运用特性进行网络参数的优化,例如修正net.ipv4.ip_local_port_range、net.ipv4.tcp_tw_reuse、net.core.somaxconn等网络内核参数。

3.文件体系优化

文件体系的优化也是体系资源优化的一个要点,在Linux下可选的文件体系有ext2、ext3、ReiserFS、ext4、XFS,依据不同的运用,挑选不同的文件体系。
Linux规范文件体系是从VFS开端的,然后是ext,接着便是ext2,应该说ext2是Linux上规范的文件体系,ext3是在ext2根底上添加日志构成,从VFS到ext4,其规划思维没有太大改变,都是前期UNIX宗族依据超级块和iNode的规划理念。
XFS文件体系是一个高档日志文件体系,XFS经过散布处理磁盘恳求、定位数据、坚持Cache的一致性来供给对文件体系数据的低推迟、高带宽的拜访,因而,XFS极具伸缩性,十分强健,具有优异的日志记载功用、可扩展性强、快速写入功用等长处。
现在服务器端ext4和XFS是干流文件体系,怎么挑选适宜的文件体系,需求依据文件体系的特色加上事务的需求归纳来定。

2.3运用程序软件资源

运用程序的优化其实是整个优化工程的中心,假如一个运用程序存在BUG,那么即便一切其他方面都到达了最优情况,整个运用体系仍是功用低下,所以,对运用程序的优化是功用优化进程的重中之重,这就对程序架构规划人员和程序开发人员提出了更高的要求。

三、剖析体系功用触及的人员

3.1、Linux运维人员

在做功用优化进程中,Linux运维人员承担着很重要的使命,首要,Linux运维人员要了解和把握操作体系的当期运转情况,例如体系负载(uptime)、内存情况(free)、进程情况(ps)、cpu负荷(top)等信息,这些信息是检测和判别西戎功用的根底和依据;其次,Linux运维人员还要把握体系的硬件体系,例如磁盘I/O、CPU类型、内存巨细、网卡带宽等参数信息,然后依据这些信息归纳点评体系资源的运用情况;第三,作为一名linux运维人员,还要把握运用程序对体系资源的运用情况,更深化的一点便是要了解运用程序的运转功率,例如是否程序有BUG、内存溢出等问题,经过对体系资源的监控,就能发现运用程序是否存在反常,假如确实是运用程序存在问题,需求把问题立刻反映给程序开发人员,从而改善或晋级程序。
功用优化自身便是一个杂乱和繁琐的进程,Linux运维人员只要了解了体系硬件信息、网络信息、操作体系装备信息和运用程序信息才干有针对性的打开对服务器功用优化,这就要求Linux运维人员有足够的理论知识、丰厚的实战经历以及细致剖析问题的脑筋。

3.2、体系架构规划人员

体系功用优化触及的第二类人员便是运用程序的架构规划人员。假如linux运维人员在经过归纳判别后,发现影响功用的是运用程序的履行功率,那么程序架构规划人员就要及时介入,深化了解程序运转情况。首要,体系架构规划人员要盯梢了解程序的履行功率,假如履行功率存在问题,要找出哪里呈现了问题;其次,假如真的是架构规划呈现了问题,那么就要立刻优化或改善体系架构,规划更好的运用体系架构

3.3、软件开发人员

体系功用优化最终一个环节触及的是程序开发人员,在linux运维人员或架构规划人员找到程序或结构瓶颈后,程序开发人员要立刻介入进行相应的程序修正。修正程序要以程序的履行功率为基准,改善程序的逻辑,有针对性地进行代码优化。例如,Linux运维人员在体系中发现有条SQL句子消耗很多的体系资源,抓取这条履行的SQL句子,发现此SQL句子的履行功率太差,是开发人员编写的代码履行功率低构成的,这就需求把这个信息反馈给开发人员,开发人员在收到这个问题后,能够有针对性的进行SQL优化,从而完结程序代码的优化。
从上面这个进程能够看出,体系功用优化一般遵从的流程是:首要Linux运维人员查看体系的全体情况,首要从体系硬件、网络设备、操作体系装备、运用程序架构和程序代码五个方面进行归纳判别,假如发现是体系硬件、网络设备或许操作体系装备问题,Linux运维人员能够依据情况自主处理;假如发现是程序结构问题,就需求提交给程序架构规划人员;假如发现是程序代码履行问题,就交给开发人员进行代码优化。这样就完结了一个体系功用优化的进程。

四、体系功用优化东西

ps、free、uptime、top等指令

五、体系功用点评规范

响功用要素评判规范


糟糕
CPUuser% + sys% < 70%user% + sys%=85%user% + sys% >= 90%
内存Swap In(si) = 0Swap Out (so) = 0Per CPU with 10 page/sMore Swap In & Swap Out
磁盘iowait% < 20%iowait% = 35%iowait% >= 50%

六、调优总结

体系功用优化是个触及面广、繁琐、持久的作业,寻觅呈现功用问题的本源往往是最难的部分,一旦找到呈现问题的原因,功用问题也就方便的解决。因而,处理问题的思路变得十分重要。
例如,linux体系下的一个网络体系,用户反映,网站拜访速度很慢,有时无法拜访。
针对这个问题。
第一步要做的是检测网络,能够经过ping指令查看网站的域名解析是否正常,一起,ping服务器地址的延时是否过大等等,经过这种办法,首要扫除网络或许呈现的问题;假如网络没有问题,接着进入第二步,对linux体系内存运用情况进行查看,由于网站呼应速度慢,一般跟内存相关比较大,经过free、vmstat等指令判别内存资源是否紧缺,假如内存资源不存在问题,
进入第三步查看体系CPU的负载情况,能够经过sar、vmstat、top等指令的输出归纳判别CPU是否存在过载问题,假如CPU没有问题,
持续进入第四步,查看体系的磁盘I/O是否存在瓶颈,能够经过iostat、vmstat等指令查看磁盘的读写功用,假如磁盘读写也没有问题,linux体系自身的功用问题根本扫除,
最终要做的是查看程序自身是否存在问题。
经过这样的思路,层层检测,步步排查,功用问题就“无处藏身”,查找呈现功用问题的环节也就变得十分简略。
|本文来历网络,相关权益归原作者一切

推荐阅读