提供网站建设工具的品牌,个人注册公司的条件,哪个网站教做饭做的好,上海缘震网络科技有限公司文章目录影响Linux性能的因素CPU内存磁盘I/O性能网络宽带操作系统相关资源系统安装优化内核参数优化文件系统优化应用程序软件资源系统性能分析工具vmstat命令iostat命令sar命令系统性能分析标准小结影响Linux性能的因素
CPU
CPU是操作系统稳定运行的根本#xff0c;CPU的速…
文章目录影响Linux性能的因素CPU内存磁盘I/O性能网络宽带操作系统相关资源系统安装优化内核参数优化文件系统优化应用程序软件资源系统性能分析工具vmstat命令iostat命令sar命令系统性能分析标准小结影响Linux性能的因素
CPU
CPU是操作系统稳定运行的根本CPU的速度与性能在很大程度上决定了系统整体的性能因此CPU数量越多、主频越高服务器性能也就相对越好。但事实上并非完全如此。
目前大部分CPU在同一时间内只能运行一个线程超线程的处理器可以在同一时间运行多个线程因此可以利用处理器的超线程特性提高系统性能。在Linux系统下只有运行SMP内核才能支持超线程但是安装的CPU数量越多从超线程获得的性能方面的提高就越少。
另外Linux内核会把多核处理器当作多个单独的CPU来识别例如两个4核的CPU在Lnux系统下会被当作8个单核CPU。但是从性能角度来讲两个4核的CPU和8个单核的CPU并不完全等价根据权威部门得出的测试结论前者的整体性能要比后者低25%30%。
内存
内存的大小也是影响Linux性能的一个重要的因素。内存太小系统进程将被阻塞应用也将变得缓慢甚至失去响应内存太大导致资源浪费。
Linux系统采用了物理内存和虚拟内存两种方式虚拟内存虽然可以缓解物理内存的不足但是占用过多的虚拟内存应用程序的性能将明显下降。
要保证应用程序的高性能运行物理内存一定要足够大但是过大的物理内存会造成内存资源浪费. 磁盘I/O性能
磁盘I/O性能直接影响应用程序的性能。在一个有频繁读写的应用中如果磁盘I/O性能得不到满足就会导致应用停滞。 磁盘采用了很多方法来提高I/O性能比如常见的RAID技术。
RAIDRedundant Array of Independent Disk独立磁盘冗余阵列简称磁盘阵列通过将多块独立的磁盘物理硬盘按不同方式组合起来形成一个磁盘组逻辑硬盘从而提供比单个硬盘更高的I/O性能和数据冗余。
通过RAID技术组成的磁盘组就相当于一个大硬盘。用户可以对它进行分区格式化、建立文件系统等操作与单个物理硬盘几乎一模一样。唯一不同的是RAID磁盘组的I/O性能比单个硬盘要高很多同时在数据的安全性也有很大提升。
根据磁盘组合方式的不同RAID可以分为RAID0、RAID1、RAID2、RAID3、RAID4、RAID5、RAID6、RAID7、RAID01、RAID10等级别。常用的RAID级别有RAID0、RAID1、RAID5、RAID01这里进行简单介绍。
RAID0通过把多块硬盘粘合成一个容量更大的硬盘组提高磁盘的性能和吞吐量。这种方式成本低要求至少两个磁盘但是没有容错和数据修复功能因而只能用在对数据安全性要求不高的环境中。RAID1也就是磁盘镜像通过把一个磁盘的数据镜像到另一个磁盘上最大限度地保证磁盘数据的可靠性和可修复性具有很高的数据冗余能力但磁盘利用率只有50%因而成本最高多用在保存重要数据的场合。RAID5采用了磁盘分段与奇偶校验技术从而提高了系统可靠性RAID5读出效率很高写入效率一般至少需要3个磁盘允许一个磁盘故障而不影响数据的可用性。RAID01把RAID0和RAID1技术结合起来就成了RAID01至少需要4个硬盘。此种方式的数据除分布在多个磁盘上外每个磁盘都有其镜像盘提供全冗余能力同时允许一个磁盘故障而不影响数据可用性并具有快速读/写能力。
通过了解各个RAID级别的性能可以根据应用的不同特性选择适合自身的RAID级别从而保证应用程序在磁盘方面达到最优性能。 网络宽带
Linux下的各种应用一般都是基于网络的因此网络带宽也是影响性能的一个重要因素。低速、不稳定的网络将导致网络应用程序的访问阻塞而稳定、高速的网络带宽可以保证应用程序在网络上畅通无阻地运行。 操作系统相关资源
系统安装优化
系统优化可以从安装操作系统开始。当安装Linux系统时磁盘的划分、交换分区内存的分配都直接影响以后系统的运行性能.
例如磁盘分配可以遵循应用的需求
对于写操作频繁而对数据安全性要求不高的应用可以把磁盘做成RAID0而对于对数据安全性较高而对读写没有特别要求的应用可以把磁盘做成RAID1对于对读操作要求较高而对写操作无特殊要求并要保证数据安全性的应用可以选择RAID5对于对读写要求都很高并且对数据安全性要求也很高的应用可以选择RAID01。
这样通过不同的应用需求设置不同的RAID级别在磁盘底层对系统进行优化操作。 随着内存价格的降低和内存容量的日益增大对虚拟内存交换分区的设定现在已经没有了所谓虚拟内存是物理内存两倍的要求但是交换分区的设定还是不能忽略。
根据经验
如果内存较小物理内存小于4GB一般设置交换分区交换分区大小为内存的2倍如果物理内存大于8GB小于16GB可以设置交换分区大小等于或略小于物理内存即可-如果内存大小在16GB以上原则上可以设置交换分区为0但并不建议这么做因为设置一定大小的交换分区还是有一定作用的。 内核参数优化
系统安装完成后优化工作并没有结束。接下来。还可以对系统内核参数进行优化。不过内核参数的优化要和系统中部署的应用结合起来整体考虑。
如果部署的是Web应用那么就需要根据Web应用特性进行网络参数的优化例如修改net.ipv4.ip_local_ port_range、net.ipv4.tcp_tw_reuse、net.core.somaxconn等网络内核参数 文件系统优化
在Linux下可选的文件系统有ext2、ext3、ReiserFS、ext4、XFS。根据不同的应用选择不同的文件系统。 应用程序软件资源
应用程序的优化其实是整个优化工程的核心。如果一个应用程序存在bug那么即使所有其他方面都达到了最优状态整个应用系统还是性能低下。所以对应用程序的优化是性能优化过程的重中之重。 系统性能分析工具
如何从系统上发现是某个方面或某几个方面出现问题了呢这就需要使用Linux系统提供的几个常用性能分析工具。 vmstat命令
vmstat是Virtual Meomory Statistics虚拟内存统计的缩写很多Linux发行版本都默认安装了此命令工具。
利用vmstat命令可以对操作系统的内存信息、进程状态、CPU活动等进行监控不足之处是无法对某个进程进行深入分析。
vmstat使用语法如下。 [rootVM-24-3-centos ~]# vmstat --helpUsage:vmstat [options] [delay [count]]Options:-a, --active active/inactive memory-f, --forks number of forks since boot-m, --slabs slabinfo-n, --one-header do not redisplay header-s, --stats event counter statistics-d, --disk disk statistics-D, --disk-sum summarize disk statistics-p, --partition dev partition specific statistics-S, --unit char define display unit-w, --wide wide output-t, --timestamp show timestamp-h, --help display this help and exit-V, --version output version information and exitFor more details see vmstat(8).
[rootVM-24-3-centos ~]#
-V表示输出版本信息是可选参数。-n表示在周期性循环输出时输出的头部信息仅显示一次。delay表示两次输出之间的间隔时间。count表示按照“delay”指定的时间间隔统计的次数。默认为1。
例如
vmstat 3表示每3秒钟更新一次输出信息循环输出按Ctrlc组合键停止输出。
vmstat 3 5表示每3秒更新一次输出信息统计5次后停止输出。 iostat命令
iostat是I/O statistics输入/输出统计的缩写主要的功能是对系统的磁盘I/O操作进行监控。它的输出主要显示磁盘读写操作的统计信息同时也会给出CPU使用情况。
同vmstat一样iostat也不能对某个进程进行深入分析仅对系统的整体情况进行分析
iostat一般都不随系统安装。要使用iostat工具需要在系统上安装一个Sysstat工具包。Sysstat是一个开源软件官方地址为http://pagesperso-orange.fr/sebastien.godard。
可以选择以源代码包或rpm包的方式安装。安装完毕系统会多出3个命令iostat、sar和mpstat。然后就可以直接在系统下运行iostat命令了。
iostat使用语法如下。
iostat [ -c | -d ] [ -k ] [ -t ] [ -x [ device ] ] [ interval [ count ] ][rootVM-24-3-centos ~]# iostat --help
Usage: iostat [ options ] [ interval [ count ] ]
Options are:
[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | ... } ]
[ [ -T ] -g group_name ] [ -p [ device [,...] | ALL ] ]
[ device [...] | ALL ]
[rootVM-24-3-centos ~]#
各个选项及参数含义如下。
-c显示CPU的使用情况。
-d显示磁盘的使用情况。
-k每秒以千字节为单位显示数据。
-t输出统计信息开始执行的时间。
-x device指定要统计的磁盘设备名称默认为所有的磁盘设备。
interval指定两次统计间隔的时间。
count按照“interval”指定的时间间隔统计的次数。 sar命令
sar命令很强大是分析系统性能的重要工具之一。通过sar指令可以全面地获取系统的CPU、运行队列、磁盘I/O、分页交换区、内存、CPU中断、网络等性能数据。
sar使用格式如下。
sar [options] [-o filename] [interval [count] ][rootVM-24-3-centos ~]# sar -help
Usage: sar [ options ] [ interval [ count ] ]
Options are:
[ -A ] [ -B ] [ -b ] [ -C ] [ -d ] [ -F [ MOUNT ] ] [ -H ] [ -h ] [ -p ] [ -q ] [ -R ]
[ -r ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ] [ -v ] [ -W ] [ -w ] [ -y ]
[ -I { int [,...] | SUM | ALL | XALL } ] [ -P { cpu [,...] | ALL } ]
[ -m { keyword [,...] | ALL } ] [ -n { keyword [,...] | ALL } ]
[ -j { ID | LABEL | PATH | UUID | ... } ]
[ -f [ filename ] | -o [ filename ] | -[0-9] ]
[ -i interval ] [ -s [ hh:mm:ss ] ] [ -e [ hh:mm:ss ] ]
[rootVM-24-3-centos ~]#
各个选项及参数含义如下。
options 为命令行选项sar命令的选项很多下面只列出常用选项: -A显示系统所有资源设备CPU、内存、磁盘的运行状况。 -u显示系统所有CPU在采样时间内的负载状态。 -P显示当前系统中指定CPU的使用情况。 -d显示系统所有硬盘设备在采样时间内的使用状况。 -r显示系统内存在采样时间内的使用状况。 -b显示缓冲区在采样时间内的使用情况。 -v显示进程、文件、inode节点和锁表状态。 -n显示网络运行状态。参数后面可跟DEV、EDEV、SOCK和FULL。DEV显示网络接口信息EDEV显示网络错误的统计数据SOCK显示套接字信息FULL显示以上三个信息。它们可以单独或者一起使用。 -q显示运行队列的大小它与系统当时的平均负载相同。 -R显示进程在采样时间内的活动情况。 -y显示终端设备在采样时间内的活动情况。 -w显示系统交换活动在采样时间内的状态。 -o filename表示将命令结果以二进制格式存放在文件中filename是文件名。 interval表示采样间隔时间是必须有的参数。 count表示采样次数是可选参数默认值是1。 示例如下
要查看系统CPU的整体负载状况每3秒统计一次统计5次可以使用以下命令。
sar –u 3 5系统的CPU计数是从0开始的如果要查看第二颗CPU的运行负载使用以下命令。
sar –P 1 3 5要查看系统磁盘的读写性能使用以下命令。
sar -d 3 5同理要查看系统内存使用情况、网络运行状态可以分别使用以下命令。
sar -r 5 2
sar -n DEV 5 3系统性能分析标准
性能调优的主要目的是使系统能够有效地利用各种资源最大地发挥应用程序和系统之间的性能融合使应用高效、稳定地运行。
但是衡量系统资源利用率好坏的标准没有一个严格的定义针对不同的系统和应用也没有一个统一的说法。因此这里提供的标准其实是一个经验值。
【判定系统资源利用状况的一般准则】 其中
%user表示CPU处在用户模式下的时间百分比%sys表示CPU处在系统模式下的时间百分比%iowait表示CPU等待输入输出完成时间的百分比swap in即si表示虚拟内存的页导入即从SWAP DISK交换到RAMswap out即so表示虚拟内存的页导出即从RAM交换到SWAP DISK。 小结
我们只说了三个常用的系统性能分析工具。其实Linux下的性能分析工具还有很多。例如uptime可以检查CPU的平均负载free可以查看系统内存的使用状况ps、top可以配合监控系统的进程运行状态netstat可以监测网络流量状况等等
系统性能优化是个涉及面广、繁琐、长久的工作寻找出现性能问题的根源往往是最难的部分。一旦找到出现问题的原因性能问题也就迎刃而解。因此解决问题的思路变得非常重要。
例如Linux系统下的一个系统用户反映网站访问速度很慢有时无法访问。
针对这个问题
第一步要做的是检测网络可以通过ping命令检查网站的域名解析是否正常。同时ping服务器地址的延时是否过大等等。通过这种方式首先排除网络可能出现的问题。如果网络没有问题接着进入第二步对Linux系统的内存使用状况进行检查。因为网站响应速度慢一般跟内存关联比较大通过free、vmstat等命令判断内存资源是否紧缺。如果内存资源不存在问题进入第三步检查系统CPU的负载状况可以通过sar、vmstat、top等命令的输出综合判断CPU是否存在过载问题。如果CPU没有问题继续进入第四步检查系统的磁盘I/O是否存在瓶颈可以通过iostat、vmstat等命令检查磁盘的读写性能。如果磁盘读写也没有问题Linux系统自身的性能问题基本排除。最后要做的是检查程序本身是否存在问题。通过这样的思路层层检测步步排查性能问题就“无处藏身”查找出现性能问题的环节也就变得非常简单。