图片 5

标准的分析工具,从而使得系统能够获得更好的性能

方法

首先弄清楚“正常的”状态是什么。

寻找潜在的性能问题,通过调节性能参数来解决这些问题。调整后看看系统怎么样,然后决定保持调整还是回滚。

总结:

  1. 首先收集数据找准方向。
  2. 启动调优,并选择一个合理的默认值
  3. 看看结果,我们的选择是否正确?然后,提交或回归。
  4. 找出潜在的性能问题。
  5. 调整调优参数
  6. 回到第第三步

拓展阅读

我只是提及了很少的系统管理员工具。Red Hat
有丰富的文档展示如何调优以及如何衡量(或者其它的方式),使用比我所提到的更多的工具。

对于电源管理方面,例如即使你忘了在家充电也可以使你的笔记本电脑在工作时间使用,请参见
Red Hat Enterprise Linux 7 Power Management
Guide。

对于性能调优,想使你的昂贵的服务器焕发更多的活力,参见 Red Hat
Enterprise Linux 7 Performance Tuning
Guide。

英文原文:RedHat Performance
Tuning

更多RedHat相关信息见RedHat 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=10

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-12/126864.htm

图片 1

 

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

性能调优是为了提高系统的性能,减少能量的使用或者是减轻应用对其他部分的影响。如果贸然的调优,或者没有任何测量,当然性能调优也许会有不好的影响。

性能优化是为了提高性能性能,减少资源消耗和应用对系统的影响。如果过早实施,或者没有性能评估,性能性能优化可能,或者必须导致相反的效果。

7.3 ReiserFS: SUSE
LINUX的缺省文件系统

从SUSE LINUX 7.1开始,缺省安装的文件系统即为由Hans
Reiser开发的ResierFS。在其设计之初便包括如下性能方面的考虑 From its
initial design, key performance aspects have included:
_ 日志文件系统(Journaling)的设计提高了可靠性和恢复速度。
_
使用平衡树数据结构可以同时存储内容数据和安全元数据,使其获得更快的访问速度。
_
有效地利用磁盘空间,与其他文件系统不同,ResierFS不依赖于数据块的大小。Efficient
use of disk space because, unlike other file systems, this file system
does not rely on block sizes.
目前SUSE LINUX Enterprise Server
8的ReiserFS为V3.6,下一代文件系统是Reiser4。Reiser4提供的是不间断的文件系统,通过实现“atomic”文件系统避免系统崩溃,保证完成I/O操作;使用新的访问算法来获取2到5倍的性能提高。
提示: Red Hat Enterprise Linux AS不支持ReiserFS

Server Settings -> Services.

用于图形化展示的工具

我个人喜欢用 Munin。这个工具可以在 EPEL
仓库找到。这个工具绝对称得上“老式的”,但它非常容易上手,而且它还有非常丰富的插件可供使用。在你安装使用
Munin
上,它会默认安装许多图形化工具。如果你需要更多的图形化插件,你可以在
contrib 仓库上找到它们。

对于一些更先进的监控工具,Elasticsearch,Logstash
和 Kibana 在日志分析和可视化展示方面更受欢迎。设置 ELK
来加载所需要监控的数据,使用 Topbeat 作为资源使用度衡量标准,使用
Filebeat 作为实时日志文件分析,使用 Packetbeat 来分析在线网络数据。

可选的工具有很多,选用你所了解的,喜欢的或者你想学习的。你需要记住的最重要的事情是:确保在你开始修改操作前知道你的基准数据。

之前和之后的指标

对于具体的指标,通过使用压力测试程序,你可以快速建基准,以衡量之前和之后的变化。参见 Stress
testing with Apache
JMeter 早期
sysadvent 日历测试的例子。 

典型的,提供大量静态文件访问的web服务器,缓存服务器(如squid),
均要注意这个问题
网上的教程,大约只是简单说明了如何设置ulimit和file-max,
但并没有说清楚这两者之间的差别,让人一头雾水

下边的命令用来对连接数量非常大的服务器进行调优。

图片 2

但是如果系统的进行,性能优化可以是一门科学,一种艺术。

这个值在kernel的文档里是这样描述的:

图片 3

拓展阅读

我只是提及了很少的系统管理员工具。Red Hat
有丰富的文档展示如何调优以及如何衡量(或者其它的方式),使用比我所提到的更多的工具。

对于电源管理方面,例如即使你忘了在家充电也可以使你的笔记本电脑在工作时间使用,请参见
Red Hat Enterprise Linux 7 Power Management
Guide。

对于性能调优,想使你的昂贵的服务器焕发更多的活力,参见 Red Hat
Enterprise Linux 7 Performance Tuning
Guide。

”用微米测量,却用粉笔标记,用斧子切割“ (警醒:不能犯这样的错误。)

历史指标

已经你已经有历史指标,可以利用图表对历史资源监控。即便在自动化分析的年代,老的
Mk1 Eyeballis 仍然是很有用的。你需要的是图表,而不是一屏的数字。 

(你也可以给你的老板秀一下漂亮的图表,如果你老板顺道部你上班时间都在干什么。)

你应该用图形化的方式来查看所提供的服务上的使用情况和响应时间。针对 web
服务器,指标就应该是请求的数量,每次请求响应的时间,还有每次响应消息的大小。

对于 apache 和 nginx,看看《在 apache 和 nginx
中进行日常日志记录工作》,这篇文章描述了如何将必要的量化指标数据记录日志。

图片 4

你应该以图形化的方式描述其所使用的资源的使用情况,队列和响应时间。这常常意味着针对磁盘和网络
IO 的资源图。以图形化的方式描述每秒的请求数,还有请求-响应的延迟。

 用于图形化展示的工具

我个人喜欢用 Munin。这个工具可以在 EPEL
仓库找到。这个工具绝对称得上“老式的”,但它非常容易上手,而且它还有非常丰富的插件可供使用。在你安装使用
Munin
上,它会默认安装许多图形化工具。如果你需要更多的图形化插件,你可以在
contrib 仓库上找到它们。

对于一些更先进的监控工具,Elasticsearch,Logstash 和 Kibana
在日志分析和可视化展示方面更受欢迎。设置 ELK
来加载所需要监控的数据,使用 Topbeat 作为资源使用度衡量标准,使用
Filebeat 作为实时日志文件分析,使用 Packetbeat 来分析在线网络数据。

可选的工具有很多,选用你所了解的,喜欢的或者你想学习的。你需要记住的最重要的事情是:确保在你开始修改操作前知道你的基准数据。

性能调优工具

tuna

tuna 可以用来控制进程及其调度关系。

例如:在一个健状的系统上却有差的网络性能,并且可以观察到有几个处理核心处于空闲状态。通过检查网卡发现多工调度队列功能已开启,而且它们已经分布在所有可用的处理核心上。

此处假设这些网卡命名为“enp1s0f0“和”enp1s0f1“:

[root@linuxidc ~]# tuna –irq ‘enp1s0f*’ –socket 0 –spread
–show_irqs
  # users            affinity
  69 enp1s0f0                0  igb
  70 enp1s0f0-rx-0          1  igb
  71 enp1s0f0-rx-1          2  igb
  72 enp1s0f0-rx-2          3  igb
  73 enp1s0f0-rx-3          4  igb
  74 enp1s0f0-tx-0          5  igb
  75 enp1s0f0-tx-1          6  igb
  76 enp1s0f0-tx-2          7  igb
  77 enp1s0f0-tx-3          0  igb
  79 enp1s0f1                1  igb
  80 enp1s0f1-rx-0          2  igb
  81 enp1s0f1-rx-1          3  igb
  82 enp1s0f1-rx-2          4  igb
  83 enp1s0f1-rx-3          5  igb
  84 enp1s0f1-tx-0          6  igb
  85 enp1s0f1-tx-1          7  igb
  86 enp1s0f1-tx-2          0  igb
  87 enp1s0f1-tx-3          1  igb

对于拥有多套接口的系统,你可以把你喜欢的进程移到某个套接口,并且把网络管理移到另一个套接口。

tuned

Tuned 这个工具已经在 Red
Hat 的多个发行版中可用。

Tuned
带有多种调优预置配置;用于各种通用服务器的合理的默认配置。用于“虚拟用户”的配置,用于“虚拟主机”的配置,还有用于“高吞吐量”或者“低延迟”的预置配置。他们应该对更进一步的应用提供初始配置。例如

[root@linuxidc ~]# tuned-adm list

  • balanced
  • desktop
  • latency-performance
  • network-latency
  • network-throughput
  • powersave
  • throughput-performance
  • virtual-guest
  • virtual-host
    Current active profile: throughput-performance

不同的默认预置配置有着健全的文档,而且如果你想自定义的话,有初始配置文件可供使用。

在物理机上默认的预置配置是“throughput-performance“或者”balanced“,在虚拟机上的默认预置配置是”virtual-guest“。

tuned 的默认预置配置在 /usr/lib/tuned 目录下。

[root@linuxidc ~]# tree /usr/lib/tuned
/usr/lib/tuned
|– balanced
|  `– tuned.conf
|– desktop
|  `– tuned.conf
|– functions
|– latency-performance
|  `– tuned.conf
|– network-latency
|  `– tuned.conf
|– network-throughput
|  `– tuned.conf
|– powersave
|  |– script.sh
|  `– tuned.conf
|– recommend.conf
|– throughput-performance
|  `– tuned.conf
|– virtual-guest
|  `– tuned.conf
`– virtual-host
    `– tuned.conf

每个配置包括一个 tuned.conf 文件,这个文件带有 INI
文件语义格式和一个可选的脚本解释器。

如果想生成一个自定义的配置文件,你可以拷贝这些目录上的一个到 /etc/tuned
目录,做必要的修改并激活使用。

[root@linuxidc ~]# cp -a /usr/lib/tuned/throughput-performance
/etc/tuned/wonderprofile
[root@linuxidc ~]# vim /etc/tuned/wonderprofile/tuned.conf
[root@linuxidc ~]# tuned-adm profile wonderprofile

例如:/etc/tuned/wonderprofile/tuned.conf文件,对它进行少量调整。

[main]
include=throughput-performance
[sysctl]
net.ipv4.tcp_rmem=”4096 87380 16777216″
net.ipv4.tcp_wmem=”4096 16384 16777216″
net.ipv4.udp_mem=”3145728 4194304 16777216″

同样对/etc/tuned/wonderprofile/script.sh进行调整。

#!/bin/sh
# Lots of functions in here to use
. /usr/lib/tuned/functions
start() {
    [ “$USB_AUTOSUSPEND” = 1 ] && enable_usb_autosuspend
    enable_wifi_powersave
    return 0
}
stop() {
    [ “$USB_AUTOSUSPEND” = 1 ] && disable_usb_autosuspend
    disable_wifi_powersave
    return 0
}
process $@

有时候在程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit
-a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。
1./etc/security/limits.conf
2./etc/pam.d/login
3.一般用户的 .bash_profile

– 3 – Full multi-user mode 完全多用户模式

但是系统性的性能调优比专注一点调优更加科学。

方法

首先搞清楚什么是“正常”情况。

寻找潜在的性能问题,调整性能参数修复问题,调整后监控系统性能,以决定是保留修改还是回退。

总结:

  1. 收集数据建立基线
  2. 启用优化,选择合理默认值
  3. 查看图表,我们的优化是不是正确选择?提交或回退
  4. 确认潜在的性能问题
  5. 调整优化参数
  6. 回到 3

Block sizes块大小
数据块大小是磁盘读写的最小单位,直接影响服务器性能。如果服务器处理的多为小文件,那么较小的数据块尺寸会更有效。反之,如果服务器处理的多为大文件,
大的数据尺寸块会提高系统性能。如果要改变数据块的大小必须重新格式化磁盘。做了RAID的磁盘,stripe
size
就是数据块的容量(光纤盘采用segment)。根据应用的不同合理选择正确的块大小,
通常的原则是顺序读写应用宜使用大的块容量,象数据库这样的随机读写操作使用等同于记录大小的块容量更合适。
不同系统版本,可选的块大小不同:
_ Red Hat Enterprise Linux AS with Ext3 可选的块大小为1 KB, 2 KB和4
KB
_ SUSE LINUX Enterprise Server with ReiserFS可选的块大小为4 KB

Browse: YaST/ ?> YaST modules ?> System ?> Runlevel editor

开始之前,先设定标准

之前和之后的度量

由于有了特定的度量,在改变之前和之后使用“压力测试”很快就可以为你的应用设定标准。可以看看使用
Apache Jmeter
进行压力测试的文章,是关于早期的
sysadvent 日历的例子。

水平度量

如果你可以使用图表进行水平资源监视。即使在自动化分析的今天,以前的 Mk1
Eyeball 仍然是非常有用的,为此,你需要的是图表,而不是满屏的数据。

(当然,你可以把这些图表给你的老板看看,免得他们觉得你在公司吃闲饭)

你应该用图形化的方式来查看所提供的服务上的使用情况和响应时间。针对 web
服务器,指标就应该是请求的数量,每次请求响应的时间,还有每次响应消息的大小。

对于 apache 和 nginx,看看《在 apache 和 nginx
中进行日常日志记录工作》,这篇文章描述了如何将必要的量化指标数据记录日志。

图片 5

你应该以图形化的方式描述其所使用的资源的使用情况,队列和响应时间。这常常意味着针对磁盘和网络
IO 的资源图。以图形化的方式描述每秒的请求数,还有请求-响应的延迟。

在我们开始前建立一个基准

访问时间更新
linux文件系统当文件被访问,创建,更新的时候会保留纪录。默认的,当文件读写操作的时候,系统会更新last-time-read属性。因为写操作是比较耗费资源的操作,减少不必要的i/o可以整体上提高磁盘性能。
在挂接文件系统的时候,加入noatime参数可以禁止inode节点访问时间的修改。如果文件更新时间对于特定的应用不是很重要的话,比如web服务,就可以把noatime参数加入/etc/fstab文件中
比如:
/dev/sdb1 /mountlocation ext3 defaults,noatime 1 2
推荐利用单独的分区作为挂接点并打开noatime开关

图片 6

性能调优工具

tuna

tuna 可以用来控制进程及其调度关系。

例如:在一个健状的系统上却有差的网络性能,并且可以观察到有几个处理核心处于空闲状态。通过检查网卡发现多工调度队列功能已开启,而且它们已经分布在所有可用的处理核心上。

此处假设这些网卡命名为“enp1s0f0“和”enp1s0f1“:

[root@golem ~]# tuna --irq 'enp1s0f*' --socket 0 --spread --show_irqs
   # users            affinity
  69 enp1s0f0                0  igb
  70 enp1s0f0-rx-0           1  igb
  71 enp1s0f0-rx-1           2  igb
  72 enp1s0f0-rx-2           3  igb
  73 enp1s0f0-rx-3           4  igb
  74 enp1s0f0-tx-0           5  igb
  75 enp1s0f0-tx-1           6  igb
  76 enp1s0f0-tx-2           7  igb
  77 enp1s0f0-tx-3           0  igb
  79 enp1s0f1                1  igb
  80 enp1s0f1-rx-0           2  igb
  81 enp1s0f1-rx-1           3  igb
  82 enp1s0f1-rx-2           4  igb
  83 enp1s0f1-rx-3           5  igb
  84 enp1s0f1-tx-0           6  igb
  85 enp1s0f1-tx-1           7  igb
  86 enp1s0f1-tx-2           0  igb
  87 enp1s0f1-tx-3           1  igb

对于拥有多套接口的系统,你可以把你喜欢的进程移到某个套接口,并且把网络管理移到另一个套接口。

tuned

Tuned 这个工具已经在 Red Hat 的多个发行版中可用。

Tuned
带有多种调优预置配置;用于各种通用服务器的合理的默认配置。用于“虚拟用户”的配置,用于“虚拟主机”的配置,还有用于“高吞吐量”或者“低延迟”的预置配置。他们应该对更进一步的应用提供初始配置。例如

[root@golem ~]# tuned-adm list
- balanced
- desktop
- latency-performance
- network-latency
- network-throughput
- powersave
- throughput-performance
- virtual-guest
- virtual-host
Current active profile: throughput-performance

不同的默认预置配置有着健全的文档,而且如果你想自定义的话,有初始配置文件可供使用。

在物理机上默认的预置配置是“throughput-performance“或者”balanced“,在虚拟机上的默认预置配置是”virtual-guest“。

tuned 的默认预置配置在 /usr/lib/tuned 目录下。

[root@golem ~]# tree /usr/lib/tuned
/usr/lib/tuned
|-- balanced
|   `-- tuned.conf
|-- desktop
|   `-- tuned.conf
|-- functions
|-- latency-performance
|   `-- tuned.conf
|-- network-latency
|   `-- tuned.conf
|-- network-throughput
|   `-- tuned.conf
|-- powersave
|   |-- script.sh
|   `-- tuned.conf
|-- recommend.conf
|-- throughput-performance
|   `-- tuned.conf
|-- virtual-guest
|   `-- tuned.conf
`-- virtual-host
    `-- tuned.conf

每个配置包括一个 tuned.conf 文件,这个文件带有 INI
文件语义格式和一个可选的脚本解释器。

如果想生成一个自定义的配置文件,你可以拷贝这些目录上的一个到 /etc/tuned
目录,做必要的修改并激活使用。

[root@golem ~]# cp -a /usr/lib/tuned/throughput-performance /etc/tuned/wonderprofile
[root@golem ~]# vim /etc/tuned/wonderprofile/tuned.conf
[root@golem ~]# tuned-adm profile wonderprofile

例如:/etc/tuned/wonderprofile/tuned.conf文件,对它进行少量调整。

[main]
include=throughput-performance
[sysctl]
net.ipv4.tcp_rmem="4096 87380 16777216"
net.ipv4.tcp_wmem="4096 16384 16777216"
net.ipv4.udp_mem="3145728 4194304 16777216"

同样对/etc/tuned/wonderprofile/script.sh进行调整。

#!/bin/sh
# Lots of functions in here to use
. /usr/lib/tuned/functions
start() {
    [ "$USB_AUTOSUSPEND" = 1 ] && enable_usb_autosuspend
    enable_wifi_powersave
    return 0
}
stop() {
    [ "$USB_AUTOSUSPEND" = 1 ] && disable_usb_autosuspend
    disable_wifi_powersave
    return 0
}
process $@

 

提示:缺省情况下,LINUX内核包括不必重启就可以使用sysctl命令的必要的模块。尽管如此,如果你在安装系统的时候选择移除该功能,那么你只有重新启动LINUX,才可以使得改变生效。

Tuning ReiserFS (调整ReiserFS)
ReiserFS的优势之一是支持大量的小文件。取代传统Linux文件系统的块结构,ReiserFS使用树型结构,保存小文件的全部内容和大文件的结尾。ReiserFS不使用固定的块大小,
避免出现碎片而浪费磁盘空间。挂载ReiserFS
文件系统时,有一个选项可以改进系统性能,但是会消耗更多的磁盘空间。使用notail来关闭“tail
packing”选项

除此之外,LINUX还提供了图形方式下的进程管理功能。对于Red
Hat,启动GUI,使用如下命令: /usr/bin/redhat-config-services
或者鼠标点击 Main Menu -> System Settings ->

1)找出系统性能瓶颈(包括硬件瓶颈和软件瓶颈);
2)提供性能优化的方案(升级硬件?改进系统系统结构?);
3)达到合理的硬件和软件配置;
4)使系统资源使用达到最大的平衡。(一般情况下系统良好运行的时候恰恰各项资源达到了一个平衡体,任何一项资源的过渡使用都会造成平衡体系破坏,从而造成系统负载极高或者响应迟缓。比如CPU过渡使用会造成大量进程等待CPU资源,系统响应变慢,等待会造成进程数增加,进程增加又会造成内存使用增加,内存耗尽又会造成虚拟内存使用,使用虚拟内存又会造成磁盘IO增加和CPU开销增加)
2.影响性能的因素
1)CPU(cpu的速度与性能很大一部分决定了系统整体的性能,是否使用SMP)
2)内存(物理内存不够时会使用交换内存,使用swap会带来磁盘I0和cpu的开销)
3)硬盘(存储系统)
a.Raid技术使用(RAID0, RAID1, RAID5, RAID0+1)
b.小文件读写瓶颈是磁盘的寻址(tps),大文件读写的性能瓶颈是带宽
c.Linux可以利用空闲内存作文件系统访问的cache,因此系统内存越大存储系统的性能也越好
4)网络带宽。
3.性能分析的步骤
1)对资源的使用状况进行长期的监控和数据采集(nagios、cacti)
2)使用常见的性能分析工具(vmstat、top、free、iostat等)
3)经验积累
a.应用程序设计的缺陷和数据库查询的滥用最有可能导致性能问题
b.性能瓶颈可能是因为程序差/内存不足/磁盘瓶颈,但最终表现出的结果就是CPU耗尽,系统负载极高,响应迟缓,甚至暂时失去响应
c.物理内存不够时会使用交换内存,使用swap会带来磁盘I0和cpu的开销
d.可能造成cpu瓶颈的问题:频繁执Perl,php,java程序生成动态web;数据库查询大量的where子句、order
by/group by排序……
e.可能造成内存瓶颈问题:高并发用户访问、系统进程多,java内存泄露……
f.可能造成磁盘IO瓶颈问题:生成cache文件,数据库频繁更新,或者查询大表……

图片 7

6 内存子系统的调优
内存子系统的调优不是很容易,需要不停地监测来保证内存的改变不会对服务器的其他子系统造成负面影响。如果要改变虚拟内存参数(在/proc/sys/vm),建议您每次只改变一个参数然后监测效果。
对于虚拟内存的调整包括以下几个项目:
配置Linux内核如何更新dirty
buffers到磁盘缓冲区用于暂存磁盘的数据。相对于内存来讲,磁盘缓冲区的速度很慢。因此,如果服务器使用这类内存,性能会成问题。

Red Hat: /sbin/service sendmail stop
SUSE LINUX: /etc/init.d/sendmail stop

分区设置的原则
Linux缺省安装创建三个分区:
_ 一个swap分区(自动设定为2倍内存大小但不超过2 GB)
_ 一个小的boot分区:/boot (例如100 MB)
_ 其它空间给根分区 /
关于Linux磁盘分区的优化存在许多的争论。如果只有一个根分区的话,对于将来要增加新分区时会比较麻烦。而分区太多对文件系统的管理又会变的复杂。Linux安装过程中,允许创建多个分区。
创建多个磁盘分区的好处:
_
文件系统出色的颗粒度属性使安全性得到改进。例如,允许所有用户和进程容易地访问/var和/tmp分区,并防止恶意访问。通过将这些分区分布到不同的磁盘,可在不影响系统正常运行的情况下对一些分区进行重建和恢复。
_ 某块磁盘故障导致的数据丢失不影响其他磁盘的数据,改进数据完整性。
_ 全新的安装或升级不影响其它分区。
_ 更有效的备份过程
设计分区时要考虑到备份工具,要了解备份工具是以分区为边界或是以更细颗粒度级别,如文件系统为边界。下表列出了要考虑与根分区分开的五个分区,这些分区的划分可以改进性能和灵活性。
要更深层了解Linux文件系统和分区,访问如下关于文件系统层次的网页

7.5 交换分区
当物理内存被全部占用,而系统又需要更多的内存时,交换设备发挥作用。这时,系统会将内存中很少使用的数据交换到磁盘的交换分区,释放物理内存。
最初的交换分区在安装系统的过程建立,原则上是两倍的物理内存大小。Linux
kernels 2.4
支持每分区24GB的交换分区,32-bit系统理论上支持最大8T分区大小。交换分区存在于独立的磁盘。
对于安装好的系统,增加内存时,需要设置更多的交换空间。两种方法可以实现:
·创建一个新的分区作为交换分区。如果没有空闲空间创建新的分区,可以创建一个交换文件。
·如有选择,最好是创建一个交换分区。
从磁盘I/O到交换分区绕过了文件系统,所有的性能开销都在写文件上,因此使提高了性能。
另外一种改进性能的方法是创建多个交换空间,实现并行读写磁盘。增加了交换分区或交换文件后,/etc/fstab文件包含如Example
10-5所示内容:
通常情况下,Linux首先使用/dev/sda2做为交换分区,然后是/dev/sdb2,依次类推,直到获得足够的交换空间。也就是说,当没有更大空间需求的话,
只有/dev/sda2被使用。将数据分散到更多的交换分区可以改进性能,这是因为所有的读写请求是被并行处理的。如果按照Example
10-6改变文件配置,可以给前三个分区赋予更高的优先级。
交换分区是从最高优先级开始使用的(32767最高,0为最低),给前三个分区赋予相同的优先级使数据被写到三个磁盘中;而不是写满一个再写下一个。三个分区并行使用,以提高性能。
当前三个分区用满之后,第四个分区开始启用。也可以将所有分区设置为同一个优先级,但是假如这里有一块磁盘的速度比其它磁盘慢的话,性能就会下降。
通常的做法是把交换分区放在最快的磁盘中。
提示:交换分区不是物理内存的替代品,它存在于物理磁盘中,性能远远低于内存访问速度。

如果要对这些参数进行改动,请使用工具vmstat检查对性能的影响。其它可以改进性能的虚拟内存参数为:

Tuning the elevator algorithm(调整阶梯算法)
磁盘I/O 阶梯算法产生于V2.4
kernel。它是通过控制I/O请求获得服务前在队列中等待时间,来调整块I/O的运算法则。
这是由调整阶梯算法的读写值实现的。通过增加延迟(更大的读、写值),I/O请求在队列中等待更长时间,给I/O
scheduler更好地完成I/O操作,改进性能。
对应用于大量磁盘I/O的Linux服务器,要在吞吐量和延迟方面找到一个合理的平衡点。Linux文件系统使用块设备,因此改进块读写的频率可以改进文件系统的性能。
一个准则是,小缓存、平横的长延迟读写有利于大量磁盘I/O的Linux服务器。阶梯算法的调整是一个交互的过程,首先要获得基准性能曲线,
然后改动设置,观察效果。Example
10-1给出了如何用/sbin/elvtune命令显示当前设置以及如何改动读写队列的数值。
提示:Red Hat建议您将读延迟(-r)调整为写延迟(-w)的一半。
做过改动之后,确保/sbin/elvtune call被加到/etc/rc.d/rc.local (Red
Hat)或者/etc/init.d/boot.local (SUSE
LINUX)中,使设置在系统重新启动后生效。
redhat推荐调整升降算法来让读延迟是写延迟的一半
提示:2.6核心的linux指出elvtune命令已经作废,取而代之的是调整/sys/block结构

– – 8颗物理CPU: 0-5%

 

Red Hat: /sbin/chkconfig sendmail off
SUSE LINUX: /sbin/chkconfig -s sendmail off

1 关闭daemons
有些运行在服务器中的daemons
(后台服务),并不是完全必要的。关闭这些daemons可释放更多的内存、减少启动时间并减少CPU处理的进程数。
减少daemons数量的同时也增强了服务器的安全性。缺省情况下,多数服务器都可以安全地停掉几个daemons。
提示:关闭xfs
daemon将导致不能启动X,因此只有在不需要启动GUI图形的时候才可以关闭xfs
daemon。使用startx命令前,开启xfs daemon,恢复正常启动X。
如要看到全部的daemons,使用如下命令:
/sbin/chkconfig –list

/sbin/yast powertweak

7.1 安装Linux前
硬件方面的考虑
当前Linux的发行版本对CPU、硬盘和内存方面均有明确的安装要求。然而,对于如何设置磁盘子系统的说明远远不够。由于Linux服务器被广泛的应用于各种环境,数据中心的服务器整合,
我们首先要回答的问题就是:“该服务器的功能是什么?”
磁盘子系统可能是整个服务器系统性能的主要方面。了解服务器的功能是判断I/O子系统对性能产生多大影响的关键。
下面几种服务器的磁盘I/O性能是非常重要的:
_
文件和打印服务器要求在用户和磁盘子系统之间快速地移动数据。因文件服务器的功能是向客户端发送数据,所以要快速读取所有的数据。
_
数据库服务器的最终目标是从磁盘上的数据仓库里查找和获取数据。即便有足够的内存,多数数据库服务器依然需要大量的磁盘I/O将数据读入内存和更新磁盘数据。
下面几种服务器的磁盘I/O性能不是最重要的:
_
邮件服务器用于电子邮件的存储和转发,通常产生较大的通信量。对这类服务器来讲,网络性能更为重要。
_
Web服务器用于发布静态和动态的Web页面,网络和内存子系统的性能非常重要。

Table 10-5 列出了Red Hat V2.4与性能关系密切的一些内核参数。

按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能。
Red Hat Enterprise Linux AS和SUSE LINUX Enterprise
Server系统下,用以下几种技巧进行性能的优化
1、Disabling daemons (关闭 daemons)
2、Shutting down the GUI (关闭GUI)
3、Changing kernel parameters (改变内核参数)
4、Kernel parameters (内核参数)
5、Tuning the processor subsystem(处理器子系统调优)
6、Tuning the memory subsystem (内存子系统调优)
7、Tuning the file system(文件系统子系统调优)
8、Tuning the network subsystem(网络子系统调优)

◆以下命令使服务器忽略来自被列入网关的服务器的重定向。因重定向可以被用来进行攻击,所以我们只接受有可靠来源的重定向。

 

操作系统安装完毕,就要对网络子系统进行调优。对其它子系统的影响:影响CPU利用率,尤其在有大量TCP连接、块尺寸又非常小时,内存的使用会明显增加。

  1. ulimit的
    Provides control over the resources available to the shell and to
    processes started by it, on systems that allow  such control.
    即设置当前shell以及由它启动的进程的资源限制。
    显然,对服务器来说,file-max,
    ulimit都需要设置,否则就可能出现文件描述符用尽的问题,为了让机器在重启之后仍然有效,强烈建立作以下配置,以确保file-max,
    ulimit的值正确无误:
  2. 修改/etc/sysctl.conf, 加入
    fs.file-max = 6553560
    2.系统默认的ulimit对文件打开数量的限制是1024,修改/etc/security/limits.conf并加入以下配置,永久生效
    * soft nofile 65535
    * hard nofile 65535
    修改完之后,重启即可生效

3、Changing kernel parameters (改变内核参数)

  1. 对于2.4 Linux kernels,在/proc/sys/vm/bdflush
    包括九个变量:nfract:dirty buffers在buffer
    cache中的最大百分比。Nfract值越大,写入磁盘的延迟越长。当内存不足时,大量的I/O操作被处理。为使磁盘I/O操作均匀分布,保持较低的值。
  2. Ndirty:bdflush process可以一次写入磁盘的最大dirty
    buffers值。该值过大会导致大量I/O请求,过小会在bdflush
    daemon执行不够频繁的时候导致内存不足。
  3. dummy2 未使用
  4. dummy3 未使用
  5. interval 唤醒kupdate的最低速率。缺省是5秒,最小0秒,最大600秒。
  6. age_buffer操作系统将buffer
    cache写入磁盘前等待的最长时间。缺省30秒,最小1秒,最大6000秒。
  7. nfract_sync 激活bdflush同步的dirty buffers百分比,缺省为60%.
  8. nfract_stop 停止bdflush的dirty buffers百分比,却省为20%.
  9. dummy5 未使用

5 处理器子系统调优

按性能分析工具的用途来说,它可以分为:
CPU的使用情况:sar,time,top,ps,puma,xps
内存的使用情况:vmstat,ipcs
文件系统状态:dbf,iostat,sar,swapinfo,nfsstat
I/O子系统状态:iostat
网络性能:netstat

图片 8

4 内核的参数
与性能关系密切的一些内核参数。

3 改变内核参数

 

如图Figure 10-2。

目前,对系统进行性能调试的工具有很多,
这些可以两大类:一类是标准的分析工具,即所有的UNIX都会带的分析工具;
另一类是不同厂商的UNIX所特有的性能分析工具,比如HP-UX就有自己的增值性能分析工具。

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

HP-UX自己的增值性能分析工具:
glance/gpm
puma
xps

 

 

图片 9

  1. file-max的含义
    man proc,可得到file-max的描述:
    /proc/sys/fs/file-max
                  This  file defines a system-wide limit on the number of
    open files for all processes.  (See
                  also setrlimit(2),  which  can  be  used  by  a  process 
    to  set  the  per-process  limit,
                  RLIMIT_NOFILE,  on  the  number  of  files it may open.) 
    If you get lots of error messages
                  about running out of file handles, try increasing this
    value:

7.2 Ext3: Red
Hat的缺省文件系统

从Red Hat
7.2开始,缺省文件系统为Ext3。相对于Ext2,增加了日志。其主要特点为:
_
Availability(可用性):Ext3提供数据的写一致功能。即意外宕机情况下,不需要检查数据的一致性,使系统恢复时间从几小时缩短为几秒钟。
_ Data
integrity(数据完整性):通过mount命令定义日志方式:data=journal,所有的数据,包括文件数据和元数据,都被定义为日志型。
_ Speed(速度):通过定义日志方式:data=writeback,
可以选择获得数据完整性还是写速度的优势来满足不同的业务需求。
_
Flexibility(灵活性):从Ext2升级到Ext3非常简单,且不需要重新格式化硬盘。使用命令tune2fs
并编辑文件/etc/fstab,便可完成升级。注意,Ext3可被mount为不带日志属性的ext2文件系统。
另外,许多第三方厂家兼容Ext3 file systems,如PartitionMagic。

需要的时候启动GUI,用完马上关闭GUI。多数情况,服务器运行在runlevel
3,即在机器启动的时候不进入GUI。命令行方式下,执行startx 来启动Xserver.

2 关闭GUI
只要有可能,就不要在Linux server上启动GUI图形,通常在Linux
server上,没有必要启动GUI。所有的管理任务均可在命令行方式下完成、或者通过重定向X和Web浏览器界面。
有几个可用的基于Web的工具(例 如webmin, Linuxconf, 和SWAT).
需要的时候启动GUI,用完马上关闭GUI。多数情况,服务器运行在runlevel
3,即在机器启动的时候不进入GUI。命令行方式下,执行startx
来启动Xserver.
缺省情况下,保存了6个控制台:F1……F6。为节省内存,可以减少为3个。使用mingetty
ttyx命令来实现
提示:即便是已经关闭了GUI,依然可以远程连接并启动GUI,可以使用ssh -x

图片 10

选择Ext3文件系统的日志模式
Ext3文件系统可选三种日志模式,使用mount命令来完成:
_ data=journal
文件数据和元数据均设置为日志方式,性能开销比较大
_ data=ordered (缺省设置)
顺序写入,先写文件数据,再写元数据
_ data=writeback
提供最快的访问速度,但是牺牲了数据的一致性。元数据仍然被记录到日志,从而确保元数据的完整。文件数据会在系统崩溃之后恢复到原先的状态。
三种方法改变日志模式:
_ 使用mount 命令:
mount -o data=writeback /dev/sdb1 /mnt/mountpoint 这里/dev/sdb1
是挂载的文件系统
_ 在/etc/fstab文件的选项中:
/dev/sdb1 /testfs ext3 defaults,journal=writeback 0 0
_ 更改root分区的data=ordered,更改上述/etc/fstab
文件,执行mkinitrd命令来扫描/etc/fstab
文件并创建新的印象文件。升级grub或lilo指向新的印象文件。更多有关Ext3的介绍,请参考:

三个参数的描述如下:

磁盘数量的选择
磁盘的数量多少会影响到系统性能。对磁盘容量的需求通常是考虑磁盘数量的唯一因素,而忽视了吞吐量的因素。好的性能是依赖于提供I/O读写的磁头数量。
可通过RAID技术来实现,包括软RAID和硬件RAID。许多型号的xSeries服务器提供了硬件RAID支持,Linux
还提供了软RAID功能。2.4 Linux kernel的软RAID是通过md设备驱动实现的,
支持EIDE或SCSI硬盘。支持的RAID级别为RAID-0,
RAID-1,和RAID-5,可以在初始安装配置或者用mdadm工具配置。
提示:通常增加硬盘数量是提高磁盘性能的一个最有效方法。

8、Tuning the network subsystem(网络子系统调优)

磁盘技术的选择
除了理解服务器功能,还要了解磁盘容量的部署。
下面是当前几种可选的磁盘技术及其容量、特点:
技术 花费 功能 容量及其限制
EIDE 最低 直连、本地存储 低端服务器,如x305 每控制器最多2块盘
SCSI 低 直连、本地存储 中、高端服务器,如x346、x365
已经使用了10年的标准;对数据线长度、传输带宽和磁盘数量均有限制,单个通道的并发访问的数量也有所限制,限制了群集功能
SATA 低 中端数据存储应用
2002年开始出现,是EIDE技术的延续;点对点协议,每个驱动器都有一个独立的通道,增强扩展能力;连续的磁盘访问性能可与SCSI相比;支持RAID
iSCSI 较低 中端数据存储,如Web/文件服务器
定位于中端存储和远程启动;节省基础架构的开销,提供了TCP/IP/Ethernet的灵活性和可靠性;TCP/IP的高延迟影响性能;目前Red
Hat Enterprise Linux还不支持
Fibre Channel 高 高端的企业存储,如数据库服务器
低延迟、高吞吐量,长传输距离可达10公里 2
Gbps传输速率;路径冗余功能提高可靠性;一个光纤环路支持127个设备,共享带宽,实现大规模群集

对于SUSE LINUX Enterprise Server, 执行YaST runlevel
命令改变缺省runlevel值.

磁盘子系统调优
磁盘在 LAMP
架构中扮演着重要的角色。静态文件、模板和代码都来自磁盘,组成数据库的数据表和索引也来自磁盘。对磁盘的许多调优(尤其是对于数据库)集中于避免磁盘访问,
因为磁盘访问的延迟相当高。因此,花一些时间对磁盘硬件进行优化是有意义的。
首先要做的是,确保在文件系统上禁用 atime 日志记录特性。atime
是最近访问文件的时间,每当访问文件时,底层文件系统必须记录这个时间戳。因为
系统管理员很少使用
atime,禁用它可以减少磁盘访问时间。禁用这个特性的方法是,在 /etc/fstab
的第四列中添加 noatime 选项。
/dev/VolGroup00/LogVol00 / ext3 defaults,noatime 1 1
在 /dev/hd 上执行的速度测试
# hdparm -t /dev/hda
不幸的是,对于 Fiber Channel and Small Computer Systems
Interface(SCSI)系统,调优依赖于具体的驱动器。

7 网络子系统的调优

7 文件子系统的调优
总体而言,所有数据都要从磁盘获取并都要保存到磁盘。磁盘访问速度通常以毫秒来计算,比其它组件要慢上千倍(如内存、PCI操作是以纳秒或者微秒来计算的)。
Linux文件系统定义了数据存储和访问的方式。
Linux可用的文件系统有多种,它们的性能和可扩展性各不相同。除了保存和管理磁盘数据,文件系统还负责保证数据的完整性。新版的Linux缺省安装已经包括日志文件系统(journaling
file systems),
日志文件系统可防止系统崩溃时导致的数据不一致问题。对文件系统元数据(metadata)的更改都被保存在一份单独的日志里,当发生系统崩溃时可以根据日志正确地恢复数据。
除此之外,日志使系统重新启动时不必进行文件系统的检查,从而缩短了恢复时间。同其他方面的计算一样,性能和完整性是相互平衡的。然而,因Linux服务器多用于企业环境及数据中心,
因此要求具备更高的可用性。这里,我们将介绍Red Hat Enterprise Linux
AS和SUSE LINUX Enterprise Server的文件系统及其性能调优。

图片 11

解除 Linux 系统的最大进程数和最大文件打开数限制:
vi /etc/security/limits.conf
# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100
修改所有 linux 用户的环境变量文件:
vi /etc/profile

如下的sysctl命令用于改变安全设置,但是它也可以防止网络性能的下降。这些命令被设置为缺省值。

8 网络子系统的调优
操作系统安装完毕,就要对网络子系统进行调优。对其它子系统的影响:影响CPU利用率,尤其在有大量TCP连接、块尺寸又非常小时,内存的使用会明显增加。

图片 12

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章