Linux服务器性能分析与优化
影响服务器性能的因素:
CPU :大部分cpu在同一时间只能运行一个线程,超线程的处理器可以在同一时间处理多个线程,因此可以利用超线程特性提高系统性能。
在linux系统下,只有运行SMP内核才能支持超线程,但是安装的CPU数量越多,从超线程获得的性能提升越少。
linux内核会将多核的处理器当个多个单独的CPU来识别。例如,2个4核的cpu会被当做8个单个的cpu,从性能角度来讲,两个4核的cpu整体要比8个单核cpu低25%-30%。
可能出现瓶颈的应用有:邮件服务器,动态web服务器等。
内存 :内存太小,系统进程会被阻塞,应用也会变得缓慢,甚至失去响应,内存太大导致浪费。
虚拟内存可以缓解物理内存的不足,但是虚拟内存的过多占用会导致应用程序的性能明显下降。
在一个32位处理器的linux系统中超过8GB的物理内存都将被浪费,因此要使用更大的内存,建议安装64位的操作系统,同时开启linux的大内存内核支持。
由于处理器寻址范围的限制,在32位linux操作系统上,应用程序单个进程最大只能使用2GB的内存。
可能出现的内存瓶颈有:数据库服务器、静态web网站
磁盘I/O性能
网络带宽
性能分析工具
1、系统整体性能评估(uptime命令)
[root@web1 ~]# uptime
16:38:00 up 118 days,3:01, 5 users, load average: 1.22, 1.02, 0.91
当前时间 04:03:58 系统已运行时间 当前在线用户 平均负载 最近1 分钟 5分钟 15分钟
注意:load average 输出的这三个值不等大于系统cpu的个数,本输出中系统有8个CPU,如果load average的三个值长期大于8时,说明CPU很繁忙,负载很高,可能会影响系统性能。小于时则相反,有空余的时间片。
2、CPU性能评估
2.1、利用vmstat命令监控系统cpu
[root@pc2 local]# vmstat 2 3 #每两秒采集一次,共采集两次
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 1504 62092 161848 409792 0 0 7 6 38 75 0 0 100 0 0
1 0 1504 62084 161848 409792 0 0 0 0 138 517 3 1 97 0 0
0 0 1504 62084 161856 409792 0 0 0 6 90 255 2 1 97 0 0
r :表示运行队列(多少个进程分配到cpu),当这个值超过了cpu数目,就会出现cpu瓶颈
b :堵塞的进程(等待资源的进程数,比如等待I/O,内存交换)
swpd :虚拟内存已使用的大小,若大于零,若大于0则表示你内存不足。
free :空闲的物理内存大小,这个值除以1024得出来的值为m
buff :linux系统中权限、目录里有什么内容、存储等的缓存。
cache :直接用来记忆我们打开的文件,给文件做缓冲。
si :每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了
so :每秒虚拟内存写入磁盘的大小,若大于0,同上。
bi :块设备每秒接收的块数量
bo :块设备每秒发送的块数量
in :每秒cpu的中断次数
cs :是CPU每秒发生的上下文切换次数
us :是用户进程消耗CPU时间的百分比。如果长期大于50%,就需要考虑优化程序或算法
sy :显示了内核进程消耗的CPU时间百分比。Sy的值较高时,说明内核消耗的CPU资源很多。
id :空闲cpu时间
wt :等待IO CPU时间。
注意:us+sy的参考值为80%,如果us+sy大于 80%说明可能存在CPU资源不足。
一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足。需要增加系统内存。
swpd列表示切换到内存交换区的内存数量(以k为单位)。如果swpd的值不为0,或者比较大,只要si、so的值长期为0,这种情况下一般不用担心,不会影响系统性能
2.2、利用sar命令监控系统cpu
sar 选项 [-o file] 采样间隔 采样次数
-A : 所有报告的总和
-o file 命令结果将以二进制文件格式存放至文件中
-u :输出cpu使用情况的统计信息
-a :文件读写情况
-c :输出进程统计信息
-R :输出内存页面统计信息
-y :终端设备活动情况
-r :输出内存和交换空间的统计信息
[root@pc2 local]# sar -u 3 3 #
Linux 2.6.32-642.3.1.el6.i686 (pc2) 2016年09月21日 _i686_ (1 CPU)
22时15分21秒 CPU %user %nice %system %iowait %steal %idle
22时15分24秒 all 1.03 0.00 0.34 0.00 0.00 98.63
22时15分27秒 all 0.33 0.00 0.33 0.00 0.00 99.33
22时15分30秒 all 0.34 0.00 0.00 0.00 0.00 99.66
平均时间: all 0.56 0.00 0.22 0.00 0.00 99.21
%user:显示在用户级别(application)运行使用 CPU 总时间的百分比。
%nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。
%system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。
%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。
%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。
注意:若 %iowait 的值过高,表示硬盘存在I/O瓶颈,若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量,若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU
3、内存性能评估
3.1、利用free指令监控内存
[root@pc2 local]# free -m #以m为单位
total used free shared buffers cached
Mem: 1006 947 58 5 158 400
-/+ buffers/cache : 387 618
Swap: 2015 1 2014
total :内存总数
used :已经使用的内存数
free :空闲的内存数
shared:多个进程共享的内存总额
shared 、buffers 、cached:磁盘缓存的大小
-/+ buffers/cache: (已用的内存数),公式:used-buffers-cached(得出的结果除以1021,结果的单位就为m)
-/+ buffers/cache: (可用的内存数),公式:free+buffers+cached
注意:我们在观察 linux系统的内存使用情况时! 只要没发现用 linux系统的交换空间! 就不用担心自己的内存太小" 如果常常看到swap空间用
了很多! 你可能就要考虑增加物理内存了" 这也是在linux服务器上看内存是否够用的标准"
4、磁盘I/O性能评估(df)
4.1、利用iostat评估磁盘性能
[root@pc2 local]# iostat -d
Linux 2.6.32-642.3.1.el6.i686 (pc2) 2016年09月21日 _i686_ (1 CPU)
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.57 13.93 11.28 3727540 3016812
tps:该设备每秒的传输次数
Blk_read/s表示每秒读取的数据块数。
Blk_wrtn/s表示每秒写入的数据块数。
Blk_read表示读取的所有块数。
Blk_wrtn表示写入的所有块数。
注意! 如果Blk_wrtn/s值很大,表示磁盘的写操作很频繁,可以考虑优化磁盘或者优化程序,如果Blk_read/s值很大,表示磁盘直接读取操作很多,可以将读取的数据放入内存中进行操作。
4.2、利用sar -d 评估磁盘性能
[root@pc2 local]# sar -d 2 3
Linux 2.6.32-642.3.1.el6.i686 (pc2) 2016年09月21日 _i686_ (1 CPU)
22时47分31秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
22时47分33秒 dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
await表示平均每次设备I/O操作的等待时间(以毫秒为单位)。
svctm表示平均每次设备I/O操作的服务时间(以毫秒为单位)。
%util表示一秒中有百分之几的时间用于I/O操作。
5、网络性能评估
(1)通过ping命令检测网络的连通性
(2)通过netstat –i组合检测网络接口状况
(3)通过netstat –r组合检测系统的路由表信息
(4)通过sar –n组合显示系统的网络运行状态 sar -n DEV 5 3
6、shell分析nginx日志
分析日志中的UserAgent
cat access_20130704.log | awk -F "\"" '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -20
分析日志中那些IP访问最多
cat access_20130704.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20
分析日志中那些Url请求访问次数最多
cat access_20130704.log | awk -F "\"" '{print $(NF-5)}' | sort | uniq -c | sort -nr | head -20
7、图形化检测工具
dstat 是一个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品
安装方法
1. 在centos下 可以 yum -y instatll dstat
2. 下载rpm包进行安装
wget http://packages.sw.be/dstat/dstat-0.7.2-1.el5.rfx.noarch.rpm
rpm -ivh dstat-0.7.2-1.el5.rfx.noarch.rpm
Linux服务器性能分析与优化的更多相关文章
- [转载]Linux服务器性能评估与优化
转载自:Linux服务器性能评估与优化 一.影响Linux服务器性能的因素 1. 操作系统级 CPU 内存 磁盘I/O带宽 网络I/O带宽 2. 程序应用级 二.系统性能评估标准 影响性 ...
- Linux服务器性能评估与优化
一.影响务器性能因素 影响企业生产环境Linux服务器性能的因素有很多,一般分为两大类,分别为操作系统层级和应用程序级别.如下为各级别影响性能的具体项及性能评估的标准: (1)操作系统级别 内存: C ...
- Linux服务器性能分析与调优
一 linux服务器性能查看 1.1 cpu性能查看 1.查看物理cpu个数: cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc ...
- Linux服务器性能评估与优化(一)
网络内容总结(感谢原创) 1.前言简介 一.影响Linux服务器性能的因素 1. 操作系统级 性能调优是找出系统瓶颈并消除这些瓶颈的过程. 很多系统管理员认为性能调优仅仅是调整一下 ...
- Linux服务器性能评估与优化--转
http://www.itlearner.com/article/4553 一.影响Linux服务器性能的因素 1. 操作系统级 Ø CPU Ø 内存 Ø 磁盘I/ ...
- linux服务器性能分析只需1分钟
背景: 现在的互联网公司,大多数时候应用服务都是部署在linux服务器上,那么当你的服务运行过程中出现了一些响应慢,资源瓶颈等疑似性能问题时,给你60秒,如何快速完成初步检测? 肯定有人会说用工具,公 ...
- Linux服务器性能评估与优化(二)
网络内容总结(感谢原创) 1.Linux内核参数优化 内核参数是用户和系统内核之间交互的一个接口,通过这个接口,用户可以在系统运行的同时动态更新内核配置,而这些内核参数是通过Linux Proc文件系 ...
- 1.linux服务器的性能分析与优化
[教程主题]:1.linux服务器的性能分析与优化 [课程录制]: 创E [主要内容] [1]影响Linux服务器性能的因素 操作系统级 CPU 目前大部分CPU在同一时间只能运行一个线程,超线程的处 ...
- 高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化
高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等 ...
随机推荐
- 第02组Beta冲刺(3/4)
队名:十一个憨批 组长博客 作业博客 组长黄智 过去两天完成的任务:了解整个游戏的流程 GitHub签入记录 接下来的计划:继续完成游戏 还剩下哪些任务:完成游戏 燃尽图 遇到的困难:没有美术比较好的 ...
- 复旦大学2018--2019学年第二学期(18级)高等代数II期末考试第六大题解答
六.(本题10分) 设 $A$ 为 $n$ 阶实对称阵, 证明: $A$ 有 $n$ 个不同的特征值当且仅当对 $A$ 的任一特征值 $\lambda_0$ 及对应的特征向量 $\alpha$, 矩 ...
- nRF51822 看门狗和OTA (无线升级功能)的尴尬笔记
很久没有记笔记了.今天要记点东西,不然以后又忘记了. 随着时代的发展,现在的SDK已经是13.0了.蓝牙5.0也就来了.废话就少说了,记笔记吧. 两年前搞过nRF51822 的无线升级功能,那时候用的 ...
- javascript 检测浏览类型和版本
废话不多说了,直接就上代码吧,因为IE11以后的版本和之前的不一样了,所以有些关键字还需要注意.这里面判断IE的时候需要多注意.function getBrowserInfo(){ var ua = ...
- 《Linux就该这么学》培训笔记_ch20使用LNMP架构部署动态网站环境
<Linux就该这么学>培训笔记_ch20使用LNMP架构部署动态网站环境 文章最后会post上书本的笔记照片. 文章主要内容: 源码包程序 LNMP动态网站架构 配置Mysql服务 配置 ...
- SyntaxError: Non-ASCII character ‘\xe5’ in file 的解决办法
在Python脚本中包含中文的时候,会遇到编码错误.例如: 出现SyntaxError: Non-ASCII character ‘\xe5’ in file 的错误. 解决办法:是因为编码有问题,所 ...
- winform 通用自动更新程序
通用自动更新程序 主要功能: 1. 可用于 C/S 程序的更新,集成到宿主主程序非常简单和配置非常简单,或不集成到主程序独立运行. 2. 支持 HTTP.FTP.WebService等多种更新下载方式 ...
- 分布式系统根基:物理时钟和Lamport逻辑时钟
分布式系统解决了传统单体架构的单点问题和性能容量问题,另一方面也带来了很多的问题,其中一个问题就是多节点的时间同步问题:不同机器上的物理时钟难以同步,导致无法区分在分布式系统中多个节点的事件时序.19 ...
- mybatis使用用stdout-logging日志显示sql语句
在开发中,我们很多时候需要知道当前执行的sql语句是什么样的,但是默认mybatis是不显示sql的,此时我们就可以使用stdout-logging了.1.创建mybatis-config.xml文件 ...
- 换个语言学一下 Golang(14) ——fmt包
Print() 函数将参数列表 a 中的各个参数转换为字符串并写入到标准输出中. 非字符串参数之间会添加空格,返回写入的字节数. func Print(a ...interface{}) (n int ...