• 1. 性能测试培训 安大叔 2013-03-06 404Test软件测试网 http://www.404test.com/ 课件本身不外传,此次特例,发一个剪切版!希望大家理解我们!
  • 2. 性能测试监控分析—linux监控分析目录: Linux硬件基础 Linux监控命令 Linux其他图形化监控工具 Linux分析调优 基于web应用的性能分析以及优化案例
  • 3. 硬件基础CPU:就像人的大脑,主要负责相关事情的判断以及实际处理的机制。 查询指令:cat /proc/cpuinfo 内存:大脑中的记忆区块,将皮肤、眼睛等所收集到的信息记录起来的地方,以供CPU进行判断。 查询指令:cat /proc/meminfo 硬盘:大脑中的记忆区块,将重要的数据记录起来,以便未来再次使用这些数据。 查询指令:fdisk -l (需要root权限)
  • 4. 影响因素CPU:CPU的性能主要体现在其运行程序的速度上。影响运行速度的性能指标包括CPU的工作频率、Cache容量、指令系统和逻辑结构等参数。 内存:影响内存的性能主要是内存主频、内容容量。 硬盘:容量、转速、平均访问时间、传输速率、缓存。
  • 5. linux性能监控分析命令vmstat sar iostat top free uptime netstat ps strace lsof
  • 6. vmstat命令 vmstat使用说明 vmstat可以对操作系统的内存信息、进程状态、CPU活动、磁盘等信息进行监控,不足之处是无法对某个进程进行深入分析。
  • 7. vmstat命令用法vmstat vmstat [-a] [-n] [-S unit] [delay [ count]] -a:显示活跃和非活跃内存 -m:显示slabinfo -n:只在开始时显示一次各字段名称。 -s:显示内存相关统计信息及多种系统活动数量。 delay:刷新时间间隔。如果不指定,只显示一条结果。 count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。 -d:显示各个磁盘相关统计信息。 -S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes) -V:显示vmstat版本信息。 -p:显示指定磁盘分区统计信息 -D:显示磁盘总体信息
  • 8. sar命令sar是非常强大性能分析命令,通过sar命令可以全面的获取系统的CPU、运行队列、磁盘I/O、交换区、内存、cpu中断、网络等性能数据。
  • 9. sar命令用法sar 命令行的常用格式:  sar [options] [-A] [-o file] t [n]  在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有  的参数,n为采样次数,是可选的,默认值是1,-o file表示将命令结果以二进制格式  存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项,sar命令  的选项很多,下面只列出常用选项:  -A:所有报告的总和。  -u:CPU利用率  -v:进程、节点、文件和锁表状态。  -p:像是当前系统中指定CPU使用信息。 -d:硬盘使用报告。  -r:显示系统内存的使用情况。  -n:显示网络运行状态。参数后面可跟DEV、EDEV、SOCK和FULL。DEV显示网络接口信息,EDEV显示网络错误的统计数据,SOCK显示套接字信息,FULL显示前三参数所以信息。 -q:显示运行队列的大小,它与系统当时的平均负载相同 -B:内存分页情况 -R:显示进程在采样时间内的活动情况。 -g:串口I/O的情况。  -b:缓冲区使用情况。  -a:文件读写情况。  -c:系统调用情况。  -R:进程的活动情况。  -y:终端设备活动情况。  -W:系统交换活动。
  • 10. iostat命令iostat是对系统的磁盘I/O操作进行监控,它的输出主要显示磁盘读写操作的统计信息,同时给出CPU的使用情况。同vmstat一样,iostat不能对某个进程进行深入分析,仅对操作系统的整体情况进行分析。
  • 11. iostat命令用法iostat命令行的常用格式:  iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ] | ALL ] [ -p [ device | ALL ] ] [ interval [ count ] ] 各选项以及参数含义如下: -c: 仅显示CPU统计信息.与-d选项互斥. -d :仅显示磁盘统计信息.与-c选项互斥. -k :以K为单位显示每秒的磁盘请求数,默认单位块. -p :device | ALL 与-x选项互斥,用于显示块设备及系统分区的统计信息.也可以在-p后指定一个设备名,如: # iostat -p had 或显示所有设备 # iostat -p ALL -t :在输出数据时,打印搜集数据的时间. -V :打印版本号和帮助信息. -x device 输出指定要统计的磁盘设备名称,默认为所有磁盘设备. interval :指两次统计间隔时间 - count :按照interval 指定的时间间隔统计的次数
  • 12. top命令top命令能够实时监控系统的运行状态,并且可以按照CPU、内存和执行时间进行排序,同时top命令还可以通过交互式命令进行设定显示,通过top命令可以查看即时活跃的进行。
  • 13. top命令用法命令行启动参数: 用法: top -hv | -bcisSHM -d delay -n iterations [-u user | -U user] -p pid [,pid ...] -b : 批次模式运行。通常用作来将top的输出的结果传送给其他程式或储存成文件 -c : 显示执行任务的命令行 -d : 设定延迟时间 -h : 帮助 -H : 显示线程。当这个设定开启时,将显示所有进程产生的线程 -i : 显示空闲的进程 -n : 执行次数。一般与-b搭配使用 -u : 监控指定用户相关进程 -U : 监控指定用户相关进程 -p : 监控指定的进程。当监控多个进程时,进程ID以逗号分隔。这个选项只能在命令行下使用 -s : 安全模式操作 -S : 累计时间模式 -v : 显示top版本,然后退出。 -M : 自动显示内存单位(k/M/G)
  • 14. top交互命令1.全局命令 回车、空格 : 刷新显示信息 ?、h : 帮助 = : 移除所有任务显示的限制 A : 交替显示模式切换 B : 粗体显示切换 d、s : 更改界面刷新时间间隔 G : 选择其它窗口/栏位组 I : Irix或Solaris模式切换 u、U : 监控指定用户相关进程 k : 结束进程 q : 退出top r : 重新设定进程的nice值 W : 存储当前设定 Z : 改变颜色模板 2.摘要区命令 l : 平均负载及系统运行时间显示开关 m : 内存及交换空间使用率显示开关 t : 当前任务及CPU状态显示开关 1 : 汇总显示CPU状态或分开显示每个CPU状态    
  • 15. top交互命令3.任务区命令 外观样式 b : 黑体/反色显示高亮的行/列。控制x和y交互命令的显示样式 x : 高亮显示排序的列 y : 高亮显示正在运行的任务 z : 彩色/黑白显示。 显示内容 c : 任务执行的命令行或进程名称 f、o : 增加和移除进程信息栏位及调整进程信息栏位显示顺序 H : 显示线程 S : 时间累计模式 u : 监控指定用户相关进程 任务显示的数量 i : 显示空闲的进程 n或# : 设置任务显示最大数量 任务排序(shift+f) M : 按内存使用率排序 N : 按PID排序 P : 按CPU使用率排序 T : 按Time+排序 < : 按当前排序栏位左边相邻栏位排序 > : 按当前排序栏位右边相邻栏位排序 F 或 O : 选择排序栏位 R : 反向排序
  • 16. free命令free命令是监控linux内存使用最常用的命令 参数说明: -m:以M为单位查看内存使用情况(默认为kb) -b:以字节为单位查看内存使用情况 -s:可以在指定时间段内不简单监控内存的使用情况
  • 17. uptime命令uptime命令是监控系统性能最常用的一个命令,主要是来统计系统当前的运行状态 输出信息依次是:系统现在的时间,系统从上次开机到现在运行了多长时间,系统当前有多少个登录用户,系统在一分钟内、5分钟内、15分钟内的平均负载 注意点:如果load average值长期大于系统CPU的个数则说明CPU很繁忙,负载很高,可能会影响系统性能
  • 18. netstat命令Netstat命令用于显示本机网络连接、运行端口、路由表等信息
  • 19. netstat命令用法命令行启动参数: netstat [选项] -a (all):显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请求(LISTENING)的那些连接,断开连接(CLOSE_WAIT)或者处于联机等待状态的(TIME_WAIT)等 -t (tcp):显示tcp相关选项 -u (udp):仅显示udp相关选项 -n :拒绝显示别名,能显示数字的全部转化成数字。 -l :仅列出有在 Listen (监听) 的服務状态 -p :显示建立相关链接的程序名 -r :显示路由信息,路由表,除了显示有效路由外,还显示当前有效的连接 -e :显示扩展信息,例如uid等 -s :按各个协议进行统计 -c :每隔一个固定时间,执行该netstat命令。 -v :显示当前的有效连接,与-n选项类似 -I :显示自动匹配接口的信息 -e :显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量,也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量。 提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
  • 20. ps命令ps命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到的。
  • 21. ps参数ps a: 显示现行终端机下的所有程序,包括其他用户的程序。 ps -A :显示所有程序。 ps c :列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 ps -e :此参数的效果和指定"A"参数相同。 ps e :列出程序时,显示每个程序所使用的环境变量。 ps f :用ASCII字符显示树状结构,表达程序间的相互关系。 ps -H:显示树状结构,表示程序间的相互关系。 ps –N:显示所有的程序,除了执行ps指令终端机下的程序之外。 ps s:采用程序信号的格式显示程序状况。 ps S :列出程序时,包括已中断的子程序资料。 ps -t<终端机编号> :指定终端机编号,并列出属于该终端机的程序的状况。 ps u:以用户为主的格式来显示程序状况。 ps x:显示所有程序,不以终端机来区分。 Ps -l:较长较详细的显示该pid信息 最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
  • 22. strace命令 strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间
  • 23. strace命令用法strace使用参数 -p:跟踪指定的进程。 -f:跟踪由fork子进程系统调用。 -F:尝试跟踪vfork子进程系统调吸入,与-f同时出现时, vfork不被跟踪。 -o filename:默认strace将结果输出到stdout。通过-o可以将输出写入到filename文件中。 -ff:常与-o选项一起使用,不同进程(子进程)产生的系统调用输出到filename.PID文件。 -r:打印每一个系统调用的相对时间。 -t:在输出中的每一行前加上时间信息。 -tt 时间确定到微秒级。还可以使用-ttt打印相对时间。 -v:输出所有系统调用。默认情况下,一些频繁调用的系统调用不会输出。 -s:指定每一行输出字符串的长度,默认是32。文件名一直全部输出。 -c:统计每种系统调用所执行的时间,调用次数,出错次数。 -e expr:输出过滤器,通过表达式,可以过滤出掉你不想要输出。 -d:输出strace关于标准错误的调试信息。 -h:输出简要的帮助信息。 -i:输出系统调用的入口指针。 -q:禁止输出关于脱离的消息。 -tt:在输出中的每一行前加上时间信息,微秒级。 -T:显示每一调用所耗的时间。 -V :输出strace的版本信息。 -x:以十六进制形式输出非标准字符串。 -xx:所有字符串以十六进制形式输出。
  • 24. lsof命令 lsof命令的原始功能是列出打开的文件的进程,但LINUX下,所有的设备都是以文件的行式存在的,所以,lsof的功能很强大。
  • 25. lsof命令用法 lsof -a :列出打开文件存在的进程 -c<进程名> :列出指定进程所打开的文件 -g :列出GID号进程详情 -d<文件号> :列出占用该文件号的进程 +d<目录> :列出目录下被打开的文件 +D<目录> :递归列出目录下被打开的文件 -n<目录> :列出使用NFS的文件 -i<条件> :列出符合条件的进程。 -p<进程号>: 列出指定进程号所打开的文件 -u 后面跟username:列出该用户相关进程所打开文件 -U :仅列出系统socket文件类型 -h:显示帮助信息 -v:显示版本信息
  • 26. Linux其他图形化监控工具-nmonnmon 是一种在aix 与各种 Linux 操作系统上广泛使用的监控与与分析工具,他主要记录以下内容  cpu 占用率  内存使用情况  磁盘I/O 速度、传输和读写比率  文件系统的使用率  网络I/O 速度、传输和读写比率、错误统计率与传输包的大小  消耗资源最多的进程  计算机详细信息和资源  页面空间和页面I/O 速度  用户自定义的磁盘组  网络文件系统
  • 27. Linux其他图形化监控工具-nmonnmon 下载到IBM官方网站即可下载,下载时候注意选择对应的操作系统版本
  • 28. Linux其他图形化监控工具-nmon分别输入c 、t 、n 、m,可以了解系统cpu ,内存,消耗资源最高的线程的使用情况。
  • 29. Linux其他图形化监控工具-nmon为了实时监控系统在一段时间内的使用情况并将结果记录下来,我们可以通过运行以下命令实现: #./ nmon -fT -s 2 -c 2 -s 2:每2秒进行一次数据采集 -c 2: 一共采集 2 次 输入命令后,将自动在当前目录生成一个hostname_timeSeries.nmon 的文件(hostname为当前见识的服务器的主机名)如: djt_137_188_130226_1749.nmon
  • 30. Linux其他图形化监控工具-nmon生成图形化结果 1 、 下载nmon analyser.xls工具 2 、 打开nmon analyser.xls工具 3 、 调整excel宏安全性:工具-宏-安全性 (修改安全级别与可靠发行商) 安全级别: 低 (勾上)信任所有安装的加载项和模板 (勾上)信任对于“Visual Baisc 项目”的访问 4 、 修改完后,确定-关闭nmon analyser.xls,重新打开 5 、 点击Analyse nmon data 按钮,加载之前下载 djt_137_188_130226_1749.nmon 文件
  • 31. Linux其他图形化监控工具-nmonmon分析指标详解 1. 各sheet页含义解释 2. nmon分析文件详细指标解释 3. nmon关键指标列表
  • 32. Linux其他图形化监控工具-nmon总体结果图
  • 33. Linux其他图形化监控工具-nmonCPU
  • 34. Linux其他图形化监控工具- spotlightSpotlight on UNIX是一个诊断和解决方案适用于Solaris,AIX,HPUX和Red Hat/Linux操作系统。采用基于Windows的控制台,在同一界面上实时显示组件活动。通过显示实际的Unix / Linux操作系统,I/O和内核的活动, Spotlight能够查明问题发生来源。图形化的数据流表明了所有组件之间数据的流动效率。 Spotlight的主界面显示的组件如内存,缓存,磁盘存储和网络。这些组件之间来往的脉冲信号代表相对的数据传输速率和系统内的活动水平。这些流量可以检验有关具体系统的性能特点。
  • 35. Linux其他图形化监控工具- spotlight1、安装spotlight, 2、配置spotlight,注意spotlight默认不能使用root用户进行连接,需要用户自己创建一个具有root权限的用户。 (1)useradd spotlight (2)passwd spotlight; (3)vim /etc/passwd (4)将spotlight的权限改成0:0 3、由于spotlight监控linux仍然使用linux的sysstat包,所有需要安装sysstat包。 (1)检查是否安装sysstat包:rpm -q sysstat; (2)如果没有,安装:rpm -ivh sysstat。 4、配置spotlight链接linux即可。
  • 36. Linux其他图形化监控工具- spotlight配置spotlight链接linux
  • 37. Linux其他图形化监控工具- spotlight总体监控流向图
  • 38. Linux其他图形化监控工具- spotlightCtrl+a 总体资源使用情况
  • 39. Linux其他图形化监控工具- spotlightCtrl+a disk资源情况
  • 40. Linux其他图形化监控工具- spotlightCtrl+a 内存资源情况
  • 41. Linux其他图形化监控工具- spotlightCtrl+a CPU资源情况
  • 42. Linux其他图形化监控工具- spotlightCtrl+a 网络资源情况
  • 43. Linux其他图形化监控工具- spotlightCtrl+a logins
  • 44. Linux其他图形化监控工具- spotlight进程信息
  • 45. Linux其他图形化监控工具- spotlight僵尸进程信息
  • 46. Linux其他图形化监控工具- spotlightservices信息
  • 47. Linux分析调优分析优化步骤 找到系统性能的瓶颈 系统的性能是指操作系统完成任务的有效性、稳定性和响应速度。当系统性能出现问题时候,应当从应用程序、操作系统、服务器硬件、网络环境等方面综合排查,定位系统问题原因 提供性能优化方案 如果发现系统硬件存在问题,如果是物理故障,那么更换硬件就行,如果是硬件性能不能满足需求,设计硬件就可以,如果是网络问题,比如带宽不够、网络不稳定,只需优化升级网络即可;如果是发现应用程序问题,修改或优化应用程序即可,如果是操作系统配置问题,修改系统参数、配置即可 使系统硬件和软件资源的使用达到平衡 性能优化的最终目的是:在一定范围内使系统的各项资源使用区域合理并保持一定的平衡。 任何一项资源的过度使用都会破坏这种平衡,从而导致系统响应过慢或者负载过高。 例如,CPU资源的过度使用,会造成系统中出现大量的等待进程,导致应用程序响应缓慢,而进程的大量增加又会导致系统内存资源的增加,当物理内存耗尽时,系统会使用虚拟内存,而虚拟内存的使用又会造成磁盘IO的增加并加大CPU的开销。
  • 48. Linux分析调优分析系统性能设计到的人员 测试人员 Linux系统管理人员 掌握系统运行状况(负载) 掌握系统资源使用情况(硬件) 掌握应用程序对资源的使用情况(应用程序执行效率,反馈给应用开发人员) 有针对性的开展服务器性能优化(硬件、软件、软件配置) 系统架构设计人员 了解程序执行效率 了解系统架构中的性能瓶颈,优化系统结构 设计更好的应用系统架构 开发人员 了解程序执行效率 改进程序逻辑、改进性能
  • 49. 影响linux性能的各种因素CPU:容易出现该类瓶颈的邮件服务器、动态web服务器 内存:容易出现该类瓶颈的打印服务器、数据库服务器、静态web服务器 磁盘I/O:频繁读写操作的项目 网络带宽:频繁大量上传下载项目
  • 50. 系统性能分析标准该值为经验值 影响性能因素评判标准好坏糟糕CPUuser% + sys%< 60%user% + sys%= 85%user% + sys%>= 90%内存Swap In(si)=0 Swap Out(so)=0Per CPU with 10 page/sMore Swap In & Swap Out磁盘iowait % < 20%iowait % = 35%iowait % >= 50% %user:表示CPU处在用户模式下的时间百分比。 %sys:表示CPU处在系统模式下的时间百分比。 %iowait:表示CPU等待输入输出完成时间的百分比。 swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM swap out:即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK。
  • 51. Linux分析调优操作系统相关资源优化 1. 系统安装优化 当安装linux系统时,磁盘划分、SWAP内存的分配都直接影响系统性能。 对于虚拟内存SWAP的设定,现在已经没有了所谓虚拟内存是物理内存两倍的要求,但是根据经验,如果内存较小(物理内存小于4GB),一般设置SWAP交换分区大小为内存的2倍;如果物理内存大约4GB小于16GB,可以设置SWAP大小等于或者略小于物理内存即可;如果内存在16GB以上,原则上可以设置SWAP为0,但最好设置一定大小的SWAP 2. 内核参数优化 例如,如果系统部署的oracle数据库应用,那么就需要对系统共享内存段(kernel.shmmax, kenerl.shmmni, kernel.shmall)、系统信号量(kernel.sem)、文件句柄(fs.file0max)等参数进行优化设置;如果部署的WEB应用,那么就需要根据web应用特性进行网络参数的优化,例如修改net.ipv4.ip_local_port_range、net.ipv4.tc_tw_reuse、net.core.somaxconn等网络内核参数 3. 文件系统优化 在linux下可选的文件系统有ext2,、ext3、xfs、ReiserFS linux标准文件系统是从VFS开始,然后ext、ext2,ext2是linux上的标准文件系统,ext3是在ext2基础上增加日志形成的。 从VFS到ext3,设计思想没有太大变化,都是早期UNIX家族基于超级块和inode的设计理念设计而成。 XFS文件系统是SGI开发的一个高级日志文件系统,通过分布处理磁盘请求、定位数据、保持cache的一致性来提供对文件系统数据的低延迟、高带宽的访问,因此XFS极具伸缩性,非常健壮,具有优秀的日志记录功能、可扩展性强、快速写入等优点。 ReiserFS在Hans Reiser领导下开发出来的一款高性能的日志文件系统,通过完全平衡树来管理数据,包括文件数据、文件名及日志支持等。与ext2、ext3相比,最大的优点是访问性能和安全性大幅提升。具有高效、合理利用磁盘空间,先将的日志管理机制,特意的搜寻方式,海量磁盘存储等优点。
  • 52. 几种典型应用对系统资源使用的特点以静态内容为主的web应用 这类应用,小文件居多,并且读操作频繁,web服务器一般为apache或者Nginx,这两个HTTP服务器对静态资源的处理非常迅速和高效。 但是有大量并发请求时,单一的web服务器无法支撑大量的客户端访问,需要由多台web服务器组成的负载集群系统,还可以在前端搭建cache服务器(常用的cache软件有squid,varinsh) cache服务器虽然可以提高访问性能,但是要求服务器又很大的内存。 高并发访问时,还有另外一个问题是网络带宽瓶颈。 以动态内容为主的web应用 频繁的进行写操作,例如java,php,perl,cgi等,导致CPU资源消耗严重。因为动态程序的执行需要进行编译、读取数据库等操作。一个基于动态程序的web应用,应该选择多个性能较高的CPU。 高并发访问时,系统执行的进程数会很多,注意负载的分配,因为过多的进程会消耗大量的内存,如果内存不足会使用虚拟内存,而虚拟内存的增加会导致磁盘写操作频繁,进而消耗CPU。 例如 配置较大的内存和高性能的CPU,而在软件方面,可以通过如Memcached之类的软件加快程序与数据库之间的访问效率。
  • 53. 几种典型应用对系统资源使用的特点数据库应用 消耗内存和磁盘I/O,对CPU的消耗并不是很大,因此需要配置较大的内存和读写较快的磁盘阵列(RAID5,RAID0+1等)。 如果客户端对数据库请求过大,还可以考虑采取数据库的负载均衡防范,通过软件负载均衡或者硬件负载均衡的方式提高数据库访问性能。 对于数据库中过大的表,进行拆分成多个小表,再通过索引进行关联处理。因为表太大时,查询遍历全表会造成磁盘读操作剧增,进而出现读操作等待。 同时数据库中的查询语句复杂,大量的where字句,order by、groud by排序语句容易使CPU出现瓶颈。 日常应用中将数据的读写分析来提高性能,根据读、写的压力和需求,分别建立两台结构完全相同的数据库服务器,将负责写的服务器上的数据,定时复制给负责读的服务器,通过读写的协作提高系统整体性能。 通过缓存方式也可以提高数据库的性能。
  • 54. 几种典型应用对系统资源使用的特点软件下载应用 带宽消耗严重,同时对存储性能要求也很高。 可以采用多台、多点服务器分流的形式分担下载负荷。 在HTTP服务器方面,推荐采用lighttpd,而不是传统的apache,原因是apache使用阻塞式IO操作,性能较差,并发能力有限,而lighttpd使用异步IO方式,并发能力强。 流媒体服务应用 主要用在视频会议、视频点播、远程教育、在线直播等,瓶颈是网络带宽和存储系统带宽(主要是读操作) 可以从存储策略、传输策略、调度策略、代理服务器缓存策略以及流媒体服务器的系统架构等方面考虑性能。 在存储方面,对视频的编码进行优化,节省空间;传输方面,采用智能流技术控制发送的速率,最大程度的保证用户的流畅性;调度方面,采用静态调度和动态调度结合;代理服务器方面,采用分段缓存、动态缓存等策略;体系结构方面,采用内存池和线程池技术改善内存消耗和线程过多对性能的影响。
  • 55. 基于web应用的性能分析以及优化案例动态内容为主的网站 动、静态集合的网站 动态内容+Cache为主的网站
  • 56. 动态内容为主的网站网站运行环境说明 1台IBMx3850服务器, 单颗双核Xeon 3.0G CPU,2G内存,3块72G SCSI磁盘 操作系统 CentOS 5.4 应用基于LAMP架构,所有服务都在一台服务器上 性能问题现象以及处理措施 表现:早晨和下午访问高峰时,服务器频繁宕机,重启后的一段时间内能正常服务,过一会以后又变的响应缓慢,然后又宕机。 检查:发现宕机前系统负载高,内存基本耗尽,Apache httpd.conf 配置最大用户数为2000,并且开启了KeepAlive 处理:修改 httpd.conf 配置文件,降到最大 1500个用户数,仍然频繁宕机,又降到 1024个用户数,系统不宕机了,但是负载很高,站点访问极慢
  • 57. 动态内容为主的网站初次优化 既然是系统资源耗尽导致的网站服务失去响应,那么深入分析系统资源使用情况,通过uptime、vmstat、top、ps等命令联合使用 结论:通过uptime命令查看到系统load average值都是在10以上,CPU资源时常耗尽,这是造成响应缓慢或者长时间没有响应的主要原因,而导致系统资源消耗过道主要是用户进程消耗资源严重。 原因:通过top命令发现apache每个子进程消耗8M内存,正常是1M左右,观察apache日志,发现网站首页访问频率最高,网站首页是个PHP程序,图片很多,每次用户访问都要多次查询数据库,查询数据非常耗CPU,首页代码也没有用缓存机制,导致每个用户都要重新信息数据库查询操作,导致CPU资源耗尽 处理:改写网站首页、减少图片量,对部分频繁访问的程序增加cache机制,减少数据库访问。
  • 58. 动态内容为主的网站第二次优化 一段时间后,系统又开始不稳定,访问高峰时站点无法正常访问 分析系统资源使用状况,发现这次是系统内存资源消耗过大,并且有I/O问题。 原因:内存消耗过大,肯上是用户访问进程太多导致,上次优化前发现每个apache子进程消耗在8M,如果设置apache最大用户数为1024,内存耗尽是比如的,当物理内存耗尽,虚拟内存就会使用,频繁使用虚拟内存,肯定会造成I/O等待问题 处理:优化代码,使每个apache子进程占用的内存保持在1-2M左右,把Apache配置中的 KeepAlive 特性关闭,把apache最大用户数调成600,这样apache进程数大量减少,基本保持在500个左右,虽然还是会使用交换内存,但是服务正常了。
  • 59. 动态内容为主的网站第三次优化 一段时间后,系统又开始不稳定,访问高峰时站点无法正常访问 分析发现还是CPU资源耗尽导致的原因。 原因:程序频繁访问数据库,大量的SQL语句中有 where, order by 等子句,且大部分都是复制查询,需要便利全表,而大量的表没有建索引,导致MySQL数据库负荷过高,消耗CPU资源过高。 处理:优化程序中的SQL语句,where和order by子句上的字段建索引,程序增加Cache机制, 这样服务基本处于正常状态,再也没有出现宕机现象
  • 60. 动态内容为主的网站网站结构的优化 第3次优化后,网站在程序代码、操作系统、apache等方面优化的空间越来越小,为了避免以后出现服务器宕机问题,可以从网站结构进行优化 增加了一台专用数据库服务器,使应用于数据库分离 若单台数据库服务器仍然不满足性能要求,可以继续增加一条数据库服务器,将数据库进行读写分离(主库负责写,从库负责读),采用主从同步保证数据的一致性,并且采用冗余切换进行灾备 如果随着访问量的增加,前端应用无法满足性能要求,可以增加多台web服务器,web服务器之间进行负载均衡部署,解决前端性能瓶颈
  • 61. 结束语谢谢! 课件本身不外传,由于大家的多次要求. 此次特例,发一个剪切版!希望大家理解我们!