linux服务器分析优化
转:http://jiekeyang.blog.51cto.com/11144634/1774473
一.系统性能分析
1.系统的性能是指操作系统完成任务的有效性、稳定性和响应速度。操作系统完成任务与系统自身设置、网络拓扑结构、路由设备、路由策略、接入设备、物理线路有关。当linux服务器出现问题,应该从应用程序、操作系统、服务器硬件、网络环境等方面排查。
2.性能优化方案提供:影响系统性能最大的因素是应用程序和操作系统两个方面,因为这两个方面出现的问题隐藏性好,不易察觉,而其他方面出现的问题一般会立刻定位到。系统硬件:(1).当硬件属于物理故障,直接更换硬件;(2).硬件性能不满足需求,升级硬件。网络:带宽不够,网络不稳定,优化和升级网络即可。应用程序:直接修改或者优化软件系统即可。操作系统配置:修改系统参数、修改系统配置即可。
3.资源平衡:linux操作系统属于开源产品,是开源软件的实践和应用平台,可以支撑开源软件的使用。性能优化的目的是:在一定范围内使系统的各项资源使用趋于合理并保持平衡,即系统运行良好的时候恰恰就是系统资源达到一个平衡状态的时候。任何一项资源的过度使用都会破坏系统平衡状态,导致系统响应缓慢或者负载过高。CPU资源的过度使用会造成系统中的出现大量的等待进程,导致应用程序响应缓慢,而进程的大量增加会导致系统内存资源的增加,当内存耗尽时,系统会使用虚拟内存,而虚拟内存的使用会导致磁盘I/O的增加并加大CPU的开销。
4.系统管理员分析系统性能及管理方案:系统管理员要了解操作系统的当前运行状态,如系统负载、内存状态、进程状态、CPU负荷等。并且系统管理员还需要掌握操作系统的硬件信息,如磁盘I/O、CPU型号、内存大小、网卡带宽等相关参数。系统管理员还需了解应用程序对系统资源的使用情况,以及更深层次的应用程序的运行效率,如程序是否存在bug、内存溢出等问题,并对此类问题具备基本的解决方案。可以通过对系统资源的监控,来判断应用程序是否存在异常,如果应用程序存在问题,如果系统管理员自身可以解决,则自己解决,如果解决不了,则需要反映给开发人员,对应用程序进行修改或升级。
二.影响linux服务器性能的因素
1.硬件资源
(1).CPU
大部分CPU在同一时间只能运行一个线程,超线程的处理器可以在同一时间运行多个线程,所以可以利用处理器的超线程特性提高性能。Linux系统下只有运行SMP内核才能支持超线程,但安装的CPU越多,则性能的提高率就越低。并且,linux内核会把多核处理器当做多个单核CPU来识别,如两个四核CPU,在linux系统下会被当做8个单核CPU。但从性能上分析,两者并不等价,相对来说,8个单核CPU的性能相对更高一点。
CPU瓶颈的情况:邮件服务器、动态WEB服务器。
(2).内存
内存太小,进程会被阻塞,应用会变缓慢,甚至失去响应;内存太大,浪费资源。Linux采用物理内存和虚拟内存两种方式,虚拟内存可以缓解物理内存的不足,但占用过多的虚拟内存,会导致应用程序的性能下降。所以要保证应用程序的高性能运行,需要足够大的物理内存,但物理内存过大,会造成资源浪费。如32位处理器的linux操作系统,内存超过4G的部分都会被浪费,要使用更大的内存,需安装64的操作系统。
32位linux操作系统上,应用程序单个进程最大只能使用2G内存(因为处理器寻址范围的限制),所以,即使有更大的内存,应用程序也使用不了。
内存瓶颈的情况:打印服务器、数据库服务器、静态Web服务器。
(3).磁盘I/O性能
在一个频繁读写操作的应用中,如果磁盘I/O性能得不到满足,就会产生应用停滞的情况,故常见的使用RAID阵列来提高磁盘I/O性能。
RAID:独立磁盘冗余阵列,简称磁盘阵列。Raid通过将多块独立的磁盘(物理硬盘)按不同的方式组合起来形成一个磁盘组(逻辑硬盘),从而提供比单个硬盘更高的I/O性能和数据冗余。
通过RAID技术组成的磁盘组,相当于一个大硬盘,用户可以对其进行分区格式化、建立文件系统等操作,和单个物理硬盘基本上一样,唯一不同的是RAID磁盘组的I/O性能比单个硬盘性能要高许多,并且在数据安全方面也有很大提高。
常见的RAID技术:RAID0、RAID1、RAID2、RAID3、RAID4、RAID5、RAID6、RAID7、RAID0+1、RAID10等级别。
(4)网络带宽
网络带宽也是影响性能的一个重要因素,低速的、不稳定的网络都将导致网络应用程序的访问阻塞。而解决带宽的方法是是使用大流量的带宽或者使用光纤网络。
2.操作系统资源
(1).系统安装优化
在安装linux系统时,可以在磁盘的划分、SWAP内存的分配等加载项上做优化。
磁盘层面:磁盘分配可以遵循应用的要求:a.对于读写数据频繁但数据安全性要求不高时,可以将磁盘做成RAID0;b.对数据安全性要求高却对数据读写没有要求的可以做成RAID1;c.对读要求高,而对写操作没有要求,但要保证数据安全性,则可以将磁盘做成RAID5;d.对读写要求高,并且要求数据安全性高,则可以将磁盘做成RAID0+1;通过不同的需求将磁盘做成不同的RAID级别,在磁盘层面对系统进行优化。
内存层面:当内存较小(物理内存小于4G),一般设置SWAP交换分区为内存的2倍,如果物理内存大于4G而小于16G,设置SWAP交换分区大小等于或略小于内存;如果内存大小大于16G,原则上可以将SWAP分区设置为0,建议设置一个一定大小的SWAP分区起缓冲作用。
(2).内核参数优化
内核参数的优化要和具体应用结合起来整体考虑,根据应用的不同要求进行参数的优化。
(3).文件系统优化
Linux下可选的文件系统有ext2、ext3、ext4、xfs和ReiserFS,根据应用的需求,选择不同的文件系统。
Linux标准文件系统是从VFS开始的,然后是ext,接着是ext2,准确来说。Ext2是linux上标准的文件系统,ext3是在ext2基础上增加日志形成的,,是基于超级块和inode的设计理念设计的。
XFS文件系统是一个高级日志文件,通过分布式处理磁盘请求、定位数据、保持cache的一致性来提供对文件系统数据的低延迟、高带宽的访问。所以XFS伸缩性较好,具有优秀的日志记录功能、可扩展性强、快速写入性能等特点。
ReiserFS是一款高性能的日志文件系统,通过平衡树结构来管理数据,包括文件数据、文件名以及日志支持等。优点是访问性能好和安全性高。具有高效、合理利用磁盘空间,先进的日志管理机制,特有的搜寻方式、海量磁盘存储等特点。
(4).应用的程序的优化
应用程序的优化主要是测试应用程序的可用性以及高效性,目的是调试应用程序是否存在bug。
三.系统性能分析和优化标准
影响系统性能的主要因素是CPU、内存、以及I/O磁盘,以下为系统性能的好坏的判定标准:
好 坏 糟糕
CPU: user%+sys% <70% =85% >=90%
内存: Swap In(si)=0 per CPU with10 page/s More Swap In & Swap Out
Swap Out(so)=0
磁盘:iowait% <20% =35% >=50%
参数解释:
User%:CPU出于用户模式下的时间百分比。
Sys%:CPU处于系统模式下的百分比。
Iowait%:CPU等待输入输出完成时间的百分比。
Swap In:虚拟内存的页导入,即从虚拟磁盘交换到内存
Swap Out:虚拟内存的页导出,即从内存交换到虚拟磁盘。
四,常用应用程序资源占用案例
1.以静态页面为主的Web服务
主要特点是小文件居多,读操作频繁,Web服务器一般为Apache或者Nginx。
应用场景:Apache或者Nginx服务器对静态页面的处理非常迅速和高效,当在Web访问量不大时,可以不做优化直接对外提供服务,但在高并发请求时,单一的Web服务器无法支撑大量的客户端访问,需要搭建由多台Web服务器组件的负载均衡集群平台来保证服务的可用性。并且可以在Web服务器前端搭建Cache服务器用以提供高效的访问处理速度,即将静态资源文件缓存到操作系统的内存中直接进行读操作,当客户端访问服务器时,Cache服务器先在缓存中找相应的资源,如果缓存中资源存在则直接处理,如果资源不存在,再将请求发送到后端Web服务器上,Web服务器根据请求在后端服务器中找相应的资源,最后将处理结果返回给客户端。这样可以大大提高Web服务器的并发访问性能。但此种结构服务器需要有很大的内存,当系统内存充足时,可以缓解磁盘读操作的压力,当内存不足时,系统就会使用虚拟内存,虚拟内存的频繁使用会加大磁盘I/O的增大,从而导致CPU的消耗增大,再次影响Web服务器性能。并且网络带宽也是制约高并发访问的一个因素,当访问量很大时,网络带宽不够,会阻塞网络,导致系统性能下降。网络带宽瓶颈可以通过调节带宽或者更换为光纤优化。故此种结构只适用于低并发的Web网站。常用的缓存服务器有Varnish和Squid。
2.以动态页面为主的Web服务
主要特点是写操作频繁,一般为Java、php、cgi、perl等动态语言编写的网站。
应用场景:频繁的写操作会导致CPU的资源消耗严重,主要原因是动态程序的执行需要进行编译、读取数据库等操作,这些操作会大量消耗CPU资源。所以处理动态Web应用的服务器。一般情况下需要有多个性能较好的CPU。因为动态内容的Web应用在高并发时,会产生多个进程,大量的进程会造成系统负载高,并且大量的进程会消耗系统大量的内存,导致系统内存不足,系统就会使用虚拟内存,而虚拟内存的大量使用会造成磁盘写操作频繁,从而加剧CPU的负荷,因此处理动态内容的Web服务器不但需要多个高性能的CPU,还需要配置较大的内存,并且可以在Web服务器与数据库之间加入memcached缓存服务器,用以提高数据处理的效率。
3.数据库应用
主要特点:内存和磁盘I/O的消耗较大,对CPU的消耗并不是很大
应用场景:后端数据库每时每刻都在进行频繁的写操作和读操作,而这些操作对于系统内存以及磁盘I/O的消耗很大,为了保证数据高效、安全的处理,则需要在内存层面和磁盘层面进行优化。
可以选择RAID阵列进行磁盘I/O优化,并且尽量将Web服务器与数据库服务器分离,当客户端对数据库的请求较大时,可以考虑对数据库做负载均衡,以此提高数据库的访问性能。
对于数据库中较大的表,可以将大表分成多个小表,并且建立索引,提高数据的查询效率。而且数据库中的查询语句比较复杂,容易使CPU出现瓶颈,导致数据更新时比较慢,造成磁盘I/O的写操作大量等待,出现写操作瓶颈,所以在数据程序代码的编写时,尽量要简洁。
还可以对数据库进行读写分离,根据数据库的读写压力分别建立两台相同的数据库服务器,将读操作与写操作分开进行,只需要定时将数据同步即可。但这种方式会导致数据不实时同步,可以在数据库前面加入缓存服务器,当客户端需要读取实时数据时可以从缓存服务器中获取,不影响写操作的服务器将数据同步给读操作的数据库服务器。并且加入缓存服务器,可以大大减少读、写操作服务器的压力,提高数据的性能。
4.软件下载应用优化
主要特点:主要针对的是静态资源下载,其特点是带宽消耗严重,并且对存储性能要求较高。
应用场景:客户在下载应用时,带宽不足,会导致下载速度慢,甚至出现下载失败,而且大量下载同时进行,更严重加剧了带宽的负担,并且对数据库的负担也加重了。可以通过多台、多点服务器分流的方式分担下载负荷。在HTTP服务器方面。可以采用支持高并发的服务器,如Nginx服务器,,采用异步非阻塞的I/O工作模式,处理资源下载的能力较强。
5.流媒体服务应用优化
主要特点:主要应用于视频会议、视频点播、远程教育、在线直播等场景。特点是网络带宽和存储系统带宽存在瓶颈(主要是数据库的读操作)。
应用场景:当远程视频点播时,对于视频的流畅性有较高的要求,因此对网络带宽和数据读取方面的要求较高。对于网络带宽,前面阐述主要可以从带宽优化和更换光纤方面处理,这是硬件方面的处理方案。软件方面可以从存储策略、传输策略、调度策略以及代理缓存方面进行优化。
存储方面可以采用多点分布式存储,既能提高数据的安全性。又可以提升数据的读取速率,并且可以对视频的编码格式进行优化,节省存储空间,优化存储性能。
传输方面可以通过智能数据流方式根据压力来控制数据流的传输,尽可能的保证客户观看视频的流畅性。
调度方面可以采用动静结合的调度方式,将动态数据和静态数据结合到同一台代理服务器上。
代理缓存方面可以采用分段缓存、动态缓存、静态缓存等策略,加快视频数据的读取速度,减小数据库的读操作压力。
在流媒体结构方面,可以通过采用内存池和线程池技术改善内存消耗和线程堆积的弊端。
linux服务器分析优化的更多相关文章
- 大规模请求下,Linux 服务器连接数优化设置
作者:heiyeluren 一般一个大规模Linux服务器请求数可能是几十万上百万的情况,需要足够的连接数来使用,所以务必进行相应的设置. 默认的Linux服务器文件描述符等打开最大是1024,用 u ...
- Linux 服务器安全优化
最小的权限+最少的服务=最大的安全 所以,无论是配置任何服务器,我们都必须把不用的服务关闭.把系统权限设置到最小,这样才能保证服务器最大的安全.下面是CentOS服务器安全设置,供大家参考. 一.注释 ...
- linux服务器性能优化
1.这里的吞吐率特指Web服务器单位时间内处理的请求. 2.压力测试的前提:1>并发用户数 2>总请求数 3>请求资源描述 3.用户平均请求等待时间主要用户衡 ...
- Linux 服务器基本优化
一:修改ulimit数 vi /etc/security/limits.conf 添加如下行: * soft noproc 65535 * hard noproc 65535 * soft nofil ...
- 1.linux服务器的性能分析与优化
[教程主题]:1.linux服务器的性能分析与优化 [课程录制]: 创E [主要内容] [1]影响Linux服务器性能的因素 操作系统级 CPU 目前大部分CPU在同一时间只能运行一个线程,超线程的处 ...
- 高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化
高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等 ...
- linux服务器的性能分析与优化(十三)
[教程主题]:1.linux服务器的性能分析与优化 [主要内容] [1]影响Linux服务器性能的因素 操作系统级 Ø CPU 目前大部分CPU在同一时间只能运行一个线程,超线程的处理器可以在同一时间 ...
- linux服务器的性能分析与优化
[1]影响Linux服务器性能的因素 操作系统级 Ø CPU 目前大部分CPU在同一时间只能运行一个线程,超线程的处理器可以在同一时间处理多个线程,因此可以利用超线程特性提高系统性能. 在linux系 ...
- 基于Linux服务器的性能分析与优化
作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行,但硬件问题.软件问题.网络环境等的复杂性和多变性,导致了对系统的优化变得异常复杂,如何定位性能问题出在哪个方面 ...
随机推荐
- MySQL查询今天/本周/上周/本月/上个月份的数据
MySQL查询的方式很多,下面为您介绍的MySQL查询实现的是查询本周.上周.本月.上个月份的数据,如果您对MySQL查询方面感兴趣的话,不妨一看. 查询当前今天的数据 SELECT name,sub ...
- Git 查看某个版本修改了哪些文件
. . . . . 查看某个版本提交了哪些文件,其实就是查看该版本与其上一个版本之间的差异,所以通过 git diff 命令来取得结果,并且对比的是要查看的版本与它的上一个版本的 commit 号. ...
- js- this
this对象是基于函数在执行的环境绑定的. (一) this 在闭包环境中指向的对象. <Js高级程序设计>中提到: 每个函数在被调用时,其活动对象都会自动取得两个特殊变量:this和 ...
- 一次疏忽导致的bug
NBB_PUT_SHORT 这个宏是按char* 类型算指针的实际工作中,没有注意这一点,输入指针类型 强转为了 SHORT* 导致 填充的内容错误 这是第一次在工作中遇到 指针类型相关的问题值得记录 ...
- 关于representation的理解
目前见过的定义的比较确切的是Yoshua Bengio在ACL2010的一篇paper中关于word representation的定义: " A word Representation i ...
- UILabel添加图片之富文本的简单应用
若想对UILabel添加图片,那么就需要使用NSMutableAttributedString来定义先定义一个普通的label UILabel *lab = [[UILabel alloc]initW ...
- 微软2016校园招聘4月在线笔试 A FontSize
题目链接:http://hihocoder.com/problemset/problem/1288 分析:题目中所求的是最大的FontSize(记为S),其应该满足P*[W/S]*[H/S] > ...
- 通过 UDP 发送数据的简单范例
package j2se.core.net.udp; import java.io.IOException;import java.net.DatagramPacket;import java.net ...
- git更换仓库地址
1. 从原始地址 clone 一份不包含 work copy的仓库: git clone --bare bitbucket_project_address 2. 在os china上创建同名项目. ...
- linux环境下配置solr5.3详细步骤
本人上周五刚刚配置了一遍centos下配置solr5.3版本,综合借鉴并改进了一些教程,贴出如下 单位使用内网,本教程暂无截图,抱歉 另,本人是使用.net编程调用solr的使用的是solrnet,在 ...