基于linux服务器的性能分析与优化(二)

来源:互联网 发布:网络协议分析仪 编辑:程序博客网 时间:2024/06/07 21:10


10.5 几种典型应用对系统资源使用的特点

10.5.1 以静态内容为主的web应用


这类应用,小文件居多,并且读操作频繁,web服务器一般为apache或者Nginx,这两个HTTP服务器对静态资源的处理非常迅速和高效。

但是有大量并发请求时,单一的web服务器无法支撑大量的客户端访问,需要由多台web服务器组成的负载集群系统,还可以在前端搭建cache服务器(常用的cache软件有squid,varinsh)

cache服务器虽然可以提高访问性能,但是要求服务器又很大的内存。

高并发访问时,还有另外一个问题是网络带宽瓶颈。


10.5.2 以动态内容为主的web应用

频繁的进行写操作,例如java,php,perl,cgi等,导致CPU资源消耗严重。因为动态程序的执行需要进行编译、读取数据库等操作。一个基于动态程序的web应用,应该选择多个性能较高的CPU。

高并发访问时,系统执行的进程数会很多,注意负载的分配,因为过多的进程会消耗大量的内存,如果内存不足会使用虚拟内存,而虚拟内存的增加会导致磁盘写操作频繁,进而消耗CPU。

例如 配置较大的内存和高性能的CPU,而在软件方面,可以通过如Memcached之类的软件加快程序与数据库之间的访问效率。


10.5.3 数据库应用

消耗内存和磁盘I/O,对CPU的消耗并不是很大,因此需要配置较大的内存和读写较快的磁盘阵列(RAID5,RAID0+1等)。

如果客户端对数据库请求过大,还可以考虑采取数据库的负载均衡防范,通过软件负载均衡或者硬件负载均衡的方式提高数据库访问性能。


对于数据库中过大的表,进行拆分成多个小表,再通过索引进行关联处理。因为表太大时,查询遍历全表会造成磁盘读操作剧增,进而出现读操作等待。

同时数据库中的查询语句复杂,大量的where字句,order by、groud by排序语句容易使CPU出现瓶颈。


日常应用中将数据的读写分析来提高性能,根据读、写的压力和需求,分别建立两台结构完全相同的数据库服务器,将负责写的服务器上的数据,定时复制给负责读的服务器,通过读写的协作提高系统整体性能。

通过缓存方式也可以提高数据库的性能。


10.5.4 软件下载应用

带宽消耗严重,同时对存储性能要求也很高。

可以采用多台、多点服务器分流的形式分担下载负荷。

在HTTP服务器方面,推荐采用lighttpd,而不是传统的apache,原因是apache使用阻塞式IO操作,性能较差,并发能力有限,而lighttpd使用异步IO方式,并发能力强。


10.5.5 流媒体服务应用

主要用在视频会议、视频点播、远程教育、在线直播等,瓶颈是网络带宽和存储系统带宽(主要是读操作)

可以从存储策略、传输策略、调度策略、代理服务器缓存策略以及流媒体服务器的系统架构等方面考虑性能。

在存储方面,对视频的编码进行优化,节省空间;传输方面,采用智能流技术控制发送的速率,最大程度的保证用户的流畅性;调度方面,采用静态调度和动态调度结合;代理服务器方面,采用分段缓存、动态缓存等策略;体系结构方面,采用内存池和线程池技术改善内存消耗和线程过多对性能的影响。



原创粉丝点击