基于Linux服务器的性能分析与优化(2)



1、几种典型应用对系统资源使用的特色

1.1 以静态内容为主的Web应用
这类应用的一个主要特色是小文件居多,而且读操做频繁,Web服务器通常为Apache或Nginx,由于这两个HTTP服务器对静态资源的处理很是迅速和高效。在Web访问量不大时,能够直接对外提供服务,可是在有很大并发请求时,单一的Web服务没法支撑大量的客户端访问,此时就须要由多台Web服务器组成的负载集群系统。为了实现更高效的访问,在最前端还能够搭建Cache服务器,也就是将静态资源文件缓存到操做系统内存中直接进行读操做,由于直接从内存读取数据要比从硬盘读数据效率高不少,因此在Web前端搭建Cache服务器能够大大提升并发访问性能。经常使用的Cache软件有Squid、Varinsh等。
Cache服务器虽然能够提升访问性能,但要求服务器有很大的内存,当系统内存充足时,能够缓解磁盘随机读的压力;当内存太小或者内存不足时,系统就会使用虚拟内存,而虚拟内存的使用会引发磁盘I/O的增大,当磁盘I/O增大时,CPU的开销也随之增长。
在高并发访问时,还存在另一个问题,就是网络带宽瓶颈,若是客户端访问量很大且带宽不够,就会阻塞网络,影响访问,所以,在构建基于Web的网络应用时,网络带宽也是必须考虑的一个因素。

1.2 以动态内容为主的Web应用
这类应用的一个特色是频繁地执行写操做,例如Java、PHP、Perl、CGI等,会致使CPU资源消耗严重。由于动态程序的执行要进行编译、读取数据库等操做,而这些操做都会消耗CPU资源,所以,一个基于动态程序的Web应用,应该选择多个性能较高的CPU,这将对系统总体性能的提升有很大帮助。
基于动态内容的Web应用在高并发访问时,系统执行的进程数会不少,所以要注意负载的分配。因为过多的进程会消耗大量系统内存,若是内存不足,就会使用虚拟内存,而虚拟内存的增长会致使磁盘写操做频繁,进而消耗CPU资源,所以要寻求一个硬件资源和软件资源的平衡点,例如配置较大的内存和高性能的CPU,而在软件方面可经过如Memcached加快程序与数据库之间的访问效率。

1.3 数据库应用

数据库应用的一个主要特色是消耗内存和磁盘I/O,而对CPU的消耗并非很大,所以最基本的作法就是为数据库服务器配置较大的内存和读写较快的磁盘阵列,例如,能够为数据库服务器的磁盘选择RAID五、RAID01等RAID级别。将Web Server与DB Server分离也是优化数据库应用的一个经常使用作法。若是客户端用户对数据库的请求过大,还能够考虑采起数据库的负载均衡方案,经过软件负载均衡或硬件负载均衡的方式提升数据库访问性能。
对于数据库中过大的表,能够考虑进行拆分,也就是将一个大表拆分红多个小表,再经过索引进行关联处理,这样能够避免查询大表形成的性能问题,由于表太大时,查询遍历全表会形成磁盘读操做激增,进而出现读操做等待的状况。同时,数据库中查询语句复杂,大量的where子句,order by、group by排序语句等,容易使CPU出现瓶颈。最后,当数据更新时,数据更新量大或更新频繁,也会形成磁盘写操做激增,出现写操做的瓶颈。这些也应该在程序代码中避免。
在平常应用中,还有一种方法能够显著提升数据库服务器的性能,那就是读写分离。 同时对数据库进行读和写的操做,是效率极低的一种访问方式,较好的作法是根据读、写的压力和需求,分别创建两台结构彻底相同的数据库服务器,将负责写的台服务器上的数据,定时复制给负责读的服务器,经过读写的协做提升系统总体性能。
经过缓存方式也能够提升数据库的性能, 缓存是数据库或对象在内存中的临时容器,使用缓存可大幅减小数据库的读取操做,改由内存来提供数据。好比能够在 Web Server和DB Server之间增长一层数据缓存层,在系统内存中创建被频繁请求对象的副本,这样一来,不访问数据库也可为程序提供数据,如今应用很普遍的Memcached就是基于这个原理。
1.4 软件下载应用

静态资源下载服务器的主要特色是带宽消耗严重,同时对存储性能要求也很高,在下载量极高时,能够采用多台、多点服务器分流形式分担下载负荷,在HTTP服务器方面,从高性能角度和减小服务器部署的角度考虑,推荐采用Lighttpd HTTP服务器,而不是采用传统的Apache服务器,缘由是Apache使用阻塞模式的I/O操做,性能相对较差,并发能力有限,而Lighttpd使用异步I/O方式,处理资源下载的并发能力远远超过Apache。

1.5 流媒体服务应用
流媒体主要应用在视频会议、视频点播、远程教育、在线直播等方面,这类应用主要的性能瓶颈是网络带宽和存储系统带宽(主要是读操做),面对海量用户,如何保障用户接收到高清晰的、流畅的画面,如何最大限度地节省网络带宽,这些都是流媒体应用要解决的首要问题。
对于流媒体服务器的优化,能够从存储策略、传输策略、调度策略、代理服务器缓存策略及流媒体服务器的体系结构设计等几个方面进行考虑。在存储方面,须要对视频的编码格式进行优化,进而节省空间,优化存储性能;在传输方面,能够采用智能流技术控制发送的速率,最大程度保障用户观看视频的流畅性;在调度方面,能够采用静态调度和动态调度结合的方法;在代理服务器方面,能够采用分段缓存、动态缓存等管理策略;在流媒体体系结构方面,能够采用内存池和线程池技术改善内存消耗和线程过多对性能形成的影响。前端

相关文章
相关标签/搜索