Linux系统调优手册.docx

上传人:b****4 文档编号:4924478 上传时间:2022-12-11 格式:DOCX 页数:21 大小:172.69KB
下载 相关 举报
Linux系统调优手册.docx_第1页
第1页 / 共21页
Linux系统调优手册.docx_第2页
第2页 / 共21页
Linux系统调优手册.docx_第3页
第3页 / 共21页
Linux系统调优手册.docx_第4页
第4页 / 共21页
Linux系统调优手册.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

Linux系统调优手册.docx

《Linux系统调优手册.docx》由会员分享,可在线阅读,更多相关《Linux系统调优手册.docx(21页珍藏版)》请在冰豆网上搜索。

Linux系统调优手册.docx

Linux系统调优手册

 

LINUX操作系统

调优手册

 

2008-10-29

1系统调优概述2

1.1调优的意义3

1.2调优前的准备3

1.2.1首先你必须了解你要做什么,目标要清晰3

1.2.2你要了解你要调优的硬件潜力,是否还有资源开发3

1.2.3必须清楚Linux内核参数哪些可以调整,哪些不可以3

1.3调优注意事项4

1.3.1以系统的稳定与安全为主4

1.3.2不要盲目求快,要循序渐进4

1.3.3要扬长避短,多用内存少读磁盘4

2系统调优各种方法4

2.1关闭不需要的服务4

2.1.1可以根据需要停止某个服务4

2.1.2关闭图形界面5

2.2改变内核参数6

2.3处理器子系统调优7

2.4内存子系统的调优8

2.5文件系统的调优9

2.5.1安装Linux前,硬件方面的考虑10

2.5.2磁盘技术的选择10

2.5.3磁盘的数量11

2.5.4文件系统的选择12

2.5.5通过Linuxkernel对文件系统调优12

2.5.6调整阶梯算法13

2.5.7选择Ext3文件系统的日志模式13

2.5.8调整并设定bdflush14

2.5.9文件系统块大小15

2.5.10分区设置的原则15

2.5.11交换分区16

2.6系统调优内核参数——网络篇17

2.6.1调优网络需要具备的基础知识17

2.6.2Linux内核网络上有哪些可调参数17

3怎样根据需要查询内核可调参数22

3.1.1多阅读Linux内核的官方网站22

3.1.2以及系统发布厂商的发布说明22

3.1.3丰富的系统网络维护经验22

 

1系统调优概述

所谓系统级别的调优也被成为内核(Kernel)级别的调优,主要通过修改Linux内核的参数,找到系统资源的瓶颈,通过特定的手段,提高应用的处理能力。

系统调优遵循如下规则(按重要性排序):

——系统的规划设计

——应用程序怎样使用资源

——优化系统的内存

——优化系统的磁盘IO

——更换操作系统

1.1调优的意义

平台硬件的处理能力是固定的,操作系统在分配硬件资源时怎样才能更好的发挥硬件自身的超强能力,避免出现某项资源的瓶颈,并保证业务的稳定与安全,简单的说就是在保证业务稳定与安全的前提下,榨干硬件的所有可用资源,提高业务处理能力。

1.2调优前的准备

1.2.1首先你必须了解你要做什么,目标要清晰

不清楚目标就是瞎调,瞎调是没有意义的,在线上系统可能会引起系统灾难。

1.2.2你要了解你要调优的硬件潜力,是否还有资源开发

各种硬件的处理能力是有限的,本来只能同时处理10条记录的机器,你每次给他1000条,这样导致cpu队列巨长,增大系统压力反而出现相反的状态,越来越慢,我们知道大家有序过桥的故事,怎样知道硬件的处理能力,需要系统维护人员有长期的工作经验,因为处理能力根据不同的环境,不同的应用,不同的设备而变化它不是固定数字。

1.2.3必须清楚Linux内核参数哪些可以调整,哪些不可以

这要求你对操作系统的可调性非常熟悉,要多看看操作系统发布厂商、你正在使用的操作系统概述。

厂商是否对维护者预留了接口。

1.3调优注意事项

1.3.1以系统的稳定与安全为主

1.3.2不要盲目求快,要循序渐进

1.3.3要扬长避短,多用内存少读磁盘

2系统调优各种方法

按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能。

如何用以下几种技巧进行性能的优化:

2.1关闭不需要的服务

有些运行在服务器中的daemons(后台服务),并不是完全必要的。

关闭这些daemons可释放更多的内存、减少启动时间并减少CPU处理的进程数。

减少daemons数量的同时也增强了服务器的安全性。

缺省情况下,多数服务器都可以安全地停掉几个daemons。

注意:

关闭xfsdaemon将导致不能启动X,因此只有在不需要启动图形界面的时候才可以关闭xfsdaemon。

使用startx命令前,开启xfsdaemon,恢复正常启动X。

关闭portmap服务将不能是有NFS(服务端客户端都需要)。

2.1.1可以根据需要停止某个服务

如要停止sendmail进程,输入如下命令:

/sbin/servicesendmailstop

也可以配置在下次启动的时候不自动启动某个进程,还是sendmail:

/sbin/chkconfigsendmailoff

除此之外,LINUX还提供了图形方式下的进程管理功能。

启动图形界面,使用如下命令:

/usr/bin/system-config-services或者鼠标点击MainMenu->SystemSettings->

ServerSettings->Services.

提示:

并非所有的daemons都会显示在该配置界面,如要看到全部的daemons,使用如下命令:

/sbin/chkconfig–list

2.1.2关闭图形界面

只要有可能,就不要在Linuxserver上启动图形界面,通常在Linuxserver上,没有必要启动图形界面,所有的管理任务均可在命令行方式下完成。

需要的时候启动图形界面,用完马上关闭图形界面多数情况,服务器运行在runlevel3,即在机器启动的时候不进入图形界面。

命令行方式下,执行startx来启动Xserver.

查看runlevel的命令:

runlevel

会显示出上次和当前的runlevel(如N5表示没有上次的runlevel(N),当前的runlevel是5).

2.在不同的runlevels之间切换,使用命令init

如切换到runlevel3,键入命令init3

注意:

千万不要在线上系统运行此命令,除非你清楚你要做什么

下边是对Linux中不同runlevels的简要描述

–0–Halt停机(不要将0设置为缺省,否则服务器启动后就会马上关闭)

–1-Singleusermode单用户模式

–2-Multi-user不带网络的多用户模式(如果没有网络,相当与3)

–3-Fullmulti-usermode完全多用户命令行模式

–4–Unused未使用

–5-X11

–6–Reboot重启(不要将6设置为缺省,否则服务器会不断地重启)

修改文件/etc/inittab来设置机器启动的runlevel,如下图:

2.2改变内核参数

Linux内核是操作系统的核心,对所有的Linux发行版本是通用的。

内核参数可以改变,在命令行下执行sysctl命令。

提示:

缺省情况下,LINUX内核包括不必重启就可以使用sysctl命令的必要的模块。

RedHat也提供了图形界面下更改sysctl参数的方式:

/usr/bin/redhat-config-proc:

如下图:

2.3处理器子系统调优

处理器对于应用和数据库服务器来讲是最重要的硬件子系统之一。

然而在这些系统中,CPU经常是性能的瓶颈。

在配有Xeon处理器的高端服务器中,你可以启用或者关闭Hyper-Threading(超线程功能)、多核心等。

Hyper-Threading在操作系统里将一颗处理器虚拟化为两颗使用。

对于支持Hyper-Threading的操作系统和软件来说,不需要增加CPU时钟频率即可使性能得到明显的改进。

例如,在4路的服务器上起用Hyper-Threading功能并使用性能监测工具(如top)来检测,可以看到8颗处理器。

如下图

注意:

对于Hyper-Threading、64位操作系统:

——基于SMP内核的LINUX才可以支持Hyper-Threading

——安装的CPU数量越多,从Hyper-Threading获得的性能上的提高就越少。

可获得的性能提高大约为:

——2颗物理CPU:

15-25%

——4颗物理CPU:

1-13%

——8颗物理CPU:

0-5%

EM64T是IntelIA-32处理器的64-bit扩展。

意思是,处理器能够支持更多的内存并支持64-bit应用同时完全兼容现存的32-bit应用。

2.4内存子系统的调优

内存子系统的调优不是很容易,需要不停地监测来保证内存的改变不会对服务器的其他子系统造成负面影响。

如果要改变虚拟内存参数(在/proc/sys/vm),建议您每次只改变一个参数然后监测效果。

对与虚拟内存的调整包括以下几个项目:

2.4.1.1配置Linux内核如何更新dirtybuffers到磁盘修改vm.bdflush

磁盘缓冲区用于暂存磁盘的数据。

相对于内存来讲,磁盘缓冲区的速度很慢。

因此,如果服务器使用这类内存,性能会成问题。

当缓冲区内的数据完全dirty,使用:

sysctl-wvm.bdflush="3050000500300060200"

vm.bdflush有9个参数,但是建议您只改变其中的3个:

1nfract,为排队写入磁盘前,bdflushdaemon允许的缓冲区最大百分比

2ndirty,为bdflush即刻写的最大缓冲区的值。

如果这个值很大,bdflush需要更多的时间完成磁盘的数据更新。

3-6无意义

7nfract_sync,发生同步前,缓冲区变dirty的最大百分比。

2.4.1.2配置kswapddaemon,指定Linux的内存交换页数量

sysctl-wvm.kswapd="10243264"

–tries_base相当于内核每次所交换的“页”的数量的四倍。

对于有很多交换信息的系统,增加这个值可以改进性能。

–tries_min是每次kswapdswaps出去的pages的最小数量。

–swap_cluster是kswapd即刻写如的pages数量。

数值小,会提高磁盘I/O的性能;数值大可能也会对请求队列产生负面影响。

如果要对这些参数进行改动,可以使用工具vmstat检查对性能的影响。

其它可以改进性能的虚拟内存参数为:

_buffermem

_freepages

_overcommit_memory

_page-cluster

_pagecache

_pagetable_cache

2.5文件系统的调优

总体而言,所有数据都要从磁盘获取并都要保存到磁盘。

磁盘访问速度通常以毫秒来计算,比其它组件要慢上千倍(如内存、PCI操作是以纳秒或者微秒来计算的)。

Linux文件系统定义了数据存储和访问的方式。

Linux可用的文件系统有多种,它们的性能和可扩展性各不相同。

除了保存和管理磁盘数据,文件系统还负责保证数据的完整性。

新版的Linux缺省安装已经包括日志文件系统(journalingfilesystems),日志文件系统可防止系统崩溃时导致的数据不一致问题。

对文件系统元数据(metadata)的更改都被保存在一份单独的日志里,当发生系统崩溃时可以根据日志正确地恢复数据。

除此之外,日志使系统重新启动时不必进行文件系统的检查,从而缩短了恢复时间。

同其他方面的计算一样,性能和完整性是相互平衡的。

然而,因Linux服务器多用于企业环境及数据中心,因此要求具备更高的可用性。

2.5.1安装Linux前,硬件方面的考虑

当前Linux的发行版本对CPU、硬盘和内存方面均有明确的安装要求。

然而,对于如何设置磁盘子系统的说明远远不够。

由于Linux服务器被广泛的应用于各种环境,数据中心的服务器整合,我们首先要回答的问题就是:

“该服务器的功能是什么,业务特点是什么?

磁盘子系统可能是整个服务器系统性能的主要方面。

了解服务器的功能是判断I/O子系统对性能产生多大影响的关键

2.5.1.1几种服务器的磁盘I/O性能是非常重要的:

2.5.1.1.1文件和打印服务器要求在用户和磁盘子系统之间快速地移动数据。

因文件服务器的功能是向客户端发送数据,所以要快速读取所有的数据。

2.5.1.1.2数据库服务器的最终目标是从磁盘上的数据仓库里查找和获取数据。

即便有足够的内存,多数数据库服务器依然需要大量的磁盘I/O将数据读入内存和更新磁盘数据。

2.5.1.1.3一台设备多个短信彩信群发应用的服务器。

因为要大量的生成彩信文件,每个彩信有几个小文件组成,发送成功后有大量的日志要写。

2.5.1.2几种服务器的磁盘I/O性能不是最重要的:

2.5.1.2.1邮件服务器用于电子邮件的存储和转发,通常产生较大的通信量。

对这类服务器来讲,网络性能更为重要。

2.5.1.2.2Web服务器用于发布静态和动态的Web页面,网络和内存子系统的性能非常重要。

2.5.2磁盘技术的选择

除了理解服务器功能,还要了解磁盘容量的部署。

下面是当前几种可选的磁盘技术及其容量、特点:

 

技术

花费

功能

容量及其限制

EIDE

最低

直连、本地存储

低端服务器,如x305

每控制器最多2块盘

SCSI

直连、本地存储

中、高端服务器,

如x346、x365

已经使用了10年的标准;

对数据线长度、传输带宽和磁盘数量均有限制

单个通道的并发访问的数量也有所限制,限制了群集功能

SATA

中端数据存储应用

点对点协议,每个驱动器都有一个独立的通道,增强扩展能力;

连续的磁盘访问性能可与SCSI相比;

支持RAID

iSCSI

较低

中端数据存储,

如Web/文件服务器

定位于中端存储和远程启动;

节省基础架构的开销

提供了TCP/IP/Ethernet的灵活性和可靠性;

TCP/IP的高延迟影响性能;

FibreChannel

高端的企业存储,

如数据库服务器

低延迟、高吞吐量,长传输距离可达10公里2Gbps传输速率;路径冗余功能提高可靠性;一个光纤环路支持127个设备,共享带宽,实现大规模群集

2.5.3磁盘的数量

磁盘的数量多少会影响到系统性能。

对磁盘容量的需求通常是考虑磁盘数量的唯一因素,而忽视了吞吐量的因素。

好的性能是依赖于提供I/O读写的磁头数量。

可通过RAID技术来实现,包括软RAID和硬件RAID。

许多型号的xSeries服务器提供了硬件RAID支持,Linux还提供了软RAID功能。

软RAID是通过md设备驱动实现的,支持EIDE或SCSI硬盘。

支持的RAID级别为RAID-0,RAID-1,和RAID-5,可以在初始安装配置或者用mdadm工具配置。

提示:

通常增加硬盘数量是提高磁盘性能的一个最有效方法。

2.5.4文件系统的选择

从RedHat7.2开始,缺省文件系统为Ext3。

相对于Ext2,增加了日志。

其主要特点为:

2.5.4.1Availability(可用性):

Ext3提供数据的写一致功能。

即意外宕机情况下,不需要检查数据的一致性,使系统恢复时间从几小时缩短为几秒钟。

2.5.4.2Dataintegrity(数据完整性):

通过mount命令定义日志方式:

data=journal,所有的数据,包括文件数据和元数据,都被定义为日志型。

2.5.4.3Speed(速度):

通过定义日志方式:

data=writeback,可以选择获得数据完整性还是写速度的优势来满足不同的业务需求。

2.5.4.4Flexibility(灵活性):

从Ext2升级到Ext3非常简单,且不需要重新格式化硬盘。

使用命令tune2fs并编辑文件/etc/fstab,便可完成升级。

注意,Ext3可被mount为不带日志属性的ext2文件系统。

另外,许多第三方厂家兼容Ext3filesystems,如PartitionMagic。

2.5.5通过Linuxkernel对文件系统调优

缺省文件系统的设置或许适合大多数应用环境。

尽管如此,可以通过几个提高磁盘性能的方法:

2.5.5.1访问时间更新

linux文件系统当文件被访问,创建,更新的时候会保留纪录。

默认的,当文件读写操作的时候,系统会更新last-time-read属性。

因为写操作是比较耗费资源的操作,减少不必要的i/o可以整体上提高磁盘性能。

在挂接文件系统的时候,加入noatime参数可以禁止inode节点访问时间的修改。

如果文件更新时间对于特定的应用不是很重要的话,比如web服务,就可以把noatime参数加入/etc/fstab文件中

比如:

/dev/sdb1/dataext3defaults,noatime12

推荐利用单独的分区作为挂接点并打开noatime开关

2.5.6调整阶梯算法

磁盘I/O阶梯算法产生于V2.4kernel它是通过控制I/O请求获得服务前在队列中等待时间,来调整块I/O的运算法则。

这是由调整阶梯算法的读写值实现的。

通过增加延迟(更大的读、写值),I/O请求在队列中等待更长时间,给I/Oscheduler更好地完成I/O操作,改进性能。

对应用于大量磁盘I/O的Linux服务器,要在吞吐量和延迟方面找到一个合理的平衡点。

Linux文件系统使用块设备,因此改进块读写的频率可以改进文件系统的性能。

一个准则是,小缓存、平横的长延迟读写有利于大量磁盘I/O的Linux服务器。

阶梯算法的调整是一个交互的过程,首先要获得基准性能曲线,然后改动设置,观察效果。

用/sbin/elvtune命令显示当前设置以及如何改动读写队列的数值。

提示:

建议将读延迟(-r)调整为写延迟(-w)的一半。

做过改动之后,确保/sbin/elvtunecall被加到/etc/rc.d/rc.local中,使设置在系统重新启动后生效。

2.6核心的linux指出elvtune命令已经作废,取而代之的是调整/sys/block结构

2.5.7选择Ext3文件系统的日志模式

Ext3文件系统可选三种日志模式,使用mount命令来完成:

_data=journal

文件数据和元数据均设置为日志方式,性能开销比较大

_data=ordered(缺省设置)

顺序写入,先写文件数据,再写元数据

_data=writeback

提供最快的访问速度,但是牺牲了数据的一致性。

元数据仍然被记录到日志,从而确保元数据的完整。

文件数据会在系统崩溃之后恢复到原先的状态。

2.5.7.1三种方法改变日志模式:

2.5.7.1.1使用mount命令:

mount-odata=writeback/dev/sdb1/mnt/mountpoint这里/dev/sdb1是挂载的文件系统

2.5.7.1.2在/etc/fstab文件的选项中:

/dev/sdb1/testfsext3defaults,journal=writeback00

2.5.7.1.3更改root分区的data=ordered,更改上述/etc/fstab文件,执行mkinitrd命令来扫描/etc/fstab文件并创建新的印象文件。

升级grub或lilo指向新的印象文件。

2.5.8调整并设定bdflush

通过调整虚拟内存子系统也可以改进文件系统性能。

Bdflush内核进程保证dirtybuffers(任何当前被修改的只存在于易失性内存的数据)与磁盘一致。

修改/proc/sys/vm/bdflush变量,来改变写入磁盘速率,避免磁盘竞争问题。

对/proc下的任何修改即刻生效,但是重新启动后会恢复到原来状态。

在/etc/rc.d/rc.local文件中加入echo命令使所做的修改永久生效。

对于2.4Linuxkernels,在/proc/sys/vm/bdflush包括九个变量:

nfract:

dirtybuffers在buffercache中的最大百分比。

Nfract值越大,写入磁盘的延迟越长。

当内存不足时,大量的I/O操作被处理。

为使磁盘I/O操作均匀分布,保持较低的值。

Ndirty:

bdflushprocess可以一次写入磁盘的最大dirtybuffers值。

该值过大会导致大量I/O请求,过小会在bdflushdaemon执行不够频繁的时候导致内存不足。

下面是更改bdflush变量的示例:

SCSI磁盘的标签命令队列Taggedcommandqueuing(TCQ),产生于SCSI-2标准,是一种将到达SCSI驱动器的指令序列进行打标签和重新排序的方法。

对于繁重、随机访问的I/O负荷,这种方法通过对I/O请求的重排序,使驱动器磁头位置最优化,改进I/O性能。

一些IBMxSeries服务器集成了AdaptecAIC-7xxxSCSI控制器。

执行命令:

cat/proc/scsi/aic7xxx/0来检查当前TCQ的设置,不必重新编译内核。

可以在/etc/modules.conf中添加如下两行内容,指定参数aic7xxx=global_tag_depth:

xx

2.5.9文件系统块大小

数据块大小是对磁盘读写的最小单位,直接影响服务器性能。

如果服务器处理的多为小文件,那么较小的数据块尺寸会更有效。

反之,如果服务器处理的多为大文件,大的数据尺寸块会提高系统性能。

如果要改变数据块的大小必须重新格式化磁盘。

做了RAID的磁盘,stripesize就是数据块的容量(光纤盘采用segment)。

根据应用的不同合理选择正确的块大小,通常的原则是顺序读写应用宜使用大的块容量,象数据库这样的随机读写操作使用等同于记录大小的块容量更合适。

2.5.9.1不同系统版本,可选的块大小不同:

2.5.10分区设置的原则

Linux缺省安装创建三个分区:

_一个swap分区(自动设定为2倍内存大小但不超过2GB)

_一个小的boot分区:

/boot(例如100MB)

_其它空间给根分区/

关于Linux磁盘分区的优化存在许多的争论。

如果只有一个根分区的话,对于将来要增加新分区时会比较麻烦。

而分区太多对文件系统的管理又会变的复杂。

Linux安装过程中,允许创建多个分区。

2.5.10.1创建多个磁盘分区的好处:

2.5.10.1.1件系统出色的颗粒度属性使安全性得到改进。

例如,允许所有用户和进程容易地访问/var和/tmp分区,并防止恶意访问。

通过将这些分区分布到不同的磁盘,可在不影响系统正常运行的情况下对一些分区进行重建和恢复。

2.5.10.1.2某块磁盘故障导致的数据丢失不影响其他磁盘的数据,改进数据完整性。

2.5.10.1.3全新的安装或升级不影响其它分区。

2.5.10.1.4更有效的备份过程

设计分区时要考虑到备份工具,要了解备份工具是以分区为边界或是以更细颗粒度级别,如文件系统为边界。

下表列出了要考虑与根分区分开的五个分区,这些分区的划分可以改进性能和灵活性。

2.5.11交换分区

当物理内存被全部占用,而系统又需要更多的内存时,交换设备发挥作用。

这时,系统会将内存中很少使用的数据交换到磁盘的交换分区,释放物理内存。

最初的交换分区在安装系统的过程建立,原则上是两倍的物理内存大小。

Linuxkernels2.4支持每分区24GB的交换分区,32-bit系统理论上支持最大8T分区大小。

交换分区存在于独立的磁盘。

对于安装好的系统,增加内存时,需要设置更多的交换空间。

两种方法可以实现:

·创建一个新的分区作为交换分区。

如果没有空闲空间创建新的分区,可以创建一个交换文件。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1