首页 / LINUX / linux服务器分析优化
linux服务器分析优化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux服务器分析优化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5471字,纯文字阅读大概需要8分钟。
内容图文
一.系统性能分析
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. 流媒体服务应用优化
主要特点:主要应用于视频会议、视频点播、远程教育、在线直播等场景。特点是网络带宽和存储系统带宽存在瓶颈(主要是数据库的读操作)。
应用场景:当远程视频点播时,对于视频的流畅性有较高的要求,因此对网络带宽和数据读取方面的要求较高。对于网络带宽,前面阐述主要可以从带宽优化和更换光纤方面处理,这是硬件方面的处理方案。软件方面可以从存储策略、传输策略、调度策略以及代理缓存方面进行优化。
存储方面可以采用多点分布式存储, 既能提高数据的安全性。又可以提升数据的读取速率,并且可以对视频的编码格式进行优化,节省存储空间,优化存储性能。
传输方面可以通过 智能数据流方式根据压力来控制数据流的传输,尽可能的保证客户观看视频的流畅性。
调度方面可以采用动静结合的调度方式,将动态数据和静态数据结合到同一台代理服务器上。
代理缓存方面可以采用分段缓存、动态缓存、静态缓存等策略,加快视频数据的读取速度,减小数据库的读操作压力。
在流媒体结构方面,可以通过采用内存池和线程池技术改善内存消耗和线程堆积的弊端。
原文:http://jiekeyang.blog.51cto.com/11144634/1774473
内容总结
以上是互联网集市为您收集整理的linux服务器分析优化全部内容,希望文章能够帮你解决linux服务器分析优化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。