linux服务器性能分析与优化

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
#1 查看硬件产品名称
dmidecode |grep 'Product Name'

#2 查看主板序列号
dmidecode |grep -i 'serial number' |grep CN

#3 查看CPU型号
grep name /proc/cpuinfo

#4 查看CPU个(核)数:
grep 'physical id' /proc/cpuinfo 

#5 查看cpu使用情况
top

#6 查看内存信息
grep MemTotal /proc/meminfo 
free -m
vmstat

#7 查看分区大小情况
fdisk -l

#8 查看分区使用情况
df -h
  
#9 查看内核版本
cat /etc/redhat-release 
cat /etc/issue
uname -rm

#10 查看系统启动信息
dmesg |grep sda

#11 查看各个设备中断请求(IRQ)
cat /proc/interrupts

#12 查看磁盘阵列级别

####################### 怎么找到性能瓶颈
操作系统完成一个任务是与系统自身设置、网络拓扑结构、路由设备、路由策略、
接入设备、物理线路等多个方面密切相关,当linux出现问题时,我们应当从
应用程序、操作系统、服务器硬件、网络环境综合排查,定位问题,然后解决。

<1> 操作系统当前运行状态: 系统负载、内存状态、进程状态、cpu负荷、
<2> 系统硬件信息: 磁盘IO、CUP型号、内存大小、网卡带宽
<3> 应用程序对系统资源的使用情况(DB/BUG/内存溢出)
<4> 接口程序的执行效率、慢查询语句、SQL优化、代码执行效率低.
例如问题:
CPU资源过度使用会造成系统中出现大量等待进程,导致应用程序响应缓慢.
进程大量增加会导致系统内存资源增加
物理内存耗尽,系统会使用虚拟内存,虚拟内存的使用会造成磁盘IO的增加并加大
CPU的开销。

解决问题遵循的流程:
   查看系统系统硬件、网络设备、操作系统配置、应用程序架构和程序代码

CPU瓶颈:应用邮件服务器、动态WEB服务器(CPU配置和性能)
         方案:运行SMP内核支持超线程,CPU数量越多,超线程性能提高越少,
              两个4核的CPU性能比8个单核的CPU性能低25%-30%

内存瓶颈: 打印服务器、数据库服务器、静态web服务器.(加大内存大小)
          方案:64位,开启linux大内存内核支持

磁盘IO瓶颈:raid0(不安全、至少2盘) raid1(安全 磁盘镜像 利用率50%) 
            raid5(奇偶效应) raid10(至少4块盘)
           方案: 根据业务选择合适的raid级别
                raid0: 对读写操作频繁并对数据安全性要求不高的应用
                raid1: 对读写没特殊要求,对数据安全要求较高的应用
                raid5: 对读要求高,对写要求不高,并保证数据安全的应用
                raid10: 对读写要求都很高,对数据安全性要求也高的应用

系统性能标准表:
             好               坏                         糟糕
CPU       user%+sys%<70%     user%+sys%=85%          user%+sys%>=90%      

内存      Swap In (si) =0    Per CPU with 0 page/s   More Swap In & Swap Out
          Swap Out (so)=0    

磁盘      iowait%<20%        iowait%=35%             iowait%>=50%

其中:  
    user%  表示CPU处于用户模式下时间百分比
    sys%   表示CPU处于系统模式下时间百分比
    iowait%表示CPU等待输入输出完成时间的百分比
    Swap In即 si 表示虚拟内存的页导入,从swap disk交换到ram
    Swap Out即 so 表示虚拟内存的页导出,从ram 交换到swap disk   

    

################---------------------- 性能分析工具

#1 vmstat 
[root@home-mysql1 ~]# vmstat 3 5
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      0 895504  12540  49092    0    0     3     3 1003   21  0  0 100  0  0
 0  0      0 895504  12548  49084    0    0     0    19  978   21  0  1 99  0  0
 0  0      0 895504  12548  49092    0    0     0     0  986   21  0  0 100  0  0
 0  0      0 895504  12548  49092    0    0     0     0  969   20  0  0 100  0  0

解释:
si 表示磁盘调入内存
so 表示内存调入磁盘
一般情况下si和so值都是0,如果长期不是,表示系统内存不足,需要增加系统内存.

bi 表示读磁盘(kb/s)
bo 表示写磁盘(kb/s)
bi+bo参考值100,如果超过1000,而且wa值较大 说明磁盘IO有问题.考虑磁盘读写性能

in 表示在某一时间间隔内观测到的每秒设备中断数
cs 表示上下文切换次数
in和cs 值越大,由内核消耗的CPU时间越多


us列显示用户进程消耗的CPU时间百分比,如果长期大于50%,就需要考虑优化程序或算法
sy列显示内核进程消耗的CPU时间百分比,sy值较高时,说明内核消耗的CPU资源很多。
us+sy参考值是80%,如果大于80%,说明可能存在CPU资源不足

id列显示了CPU处在空闲状态的时间百分比
wa列显示IO等待所占用的CPU时间百分比。
wa值越高,说明I/O等待越严重,根据经验,wa参考值是20%,超过说明I/O等待严重.
引起I/O等待原因可能是磁盘大量随机读写造成的,也可能是磁盘控制器的带宽瓶颈造成的.


#2 sar

#3 iostat

#4 free -m (以M为单位的使用情况)
[root@home-mysql1 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1000        127        873          0         12         47
-/+ buffers/cache:         66        934
Swap:         2047          0       2047

经验公式:
当应用程序可用内存/系统物理内存>70%时 表示系统内存资源严重不足,不影响系统性能。
当应用程序可用内存/系统物理内存<20%时 表示系统内存资源紧张,需要增加系统内存。
当20%< 应用程序可用内存/系统物理内存<70%时 表示系统内存资源基本满足应用需求,暂时不
影响系统性能.
不间断检测内存使用情况:free -b -s 5  

#5 uptime
[root@home-mysql1 ~]# uptime (1分钟 5分钟 15分钟)
 20:28:31 up 11:35,  1 user,  load average: 0.00, 0.00, 0.00
3个值大小不能大于系统CPU的个数,说明负载很高,可能影响系统性能,偶尔大于不担心,
如果出现值小于CPU个数,表示CPU有空闲时间片。

#6 netstat  显示本机网络链接、运行端口、路由表详情

netstat -a  显示本机所有连接和监听端口
netstat -n  显示当前建立的有效连接和端口
netstat -r  显示路由表信息
netstat -t  显示所有TCP连接
netstat -u  显示所有UTP连接
netstat -i  显示自动配置接口状态

[root@home-mysql1 ~]# netstat -i
Kernel Interface table
Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500   0     3634      0      0      0     1950      0      0      0 BMRU
lo        16436   0      172      0      0      0      172      0      0      0 LRU
Iface         表示接口名称
MTU           表示最大传输单元 单位字节
RX-OK/TX-OK   表示已经准确无误的接收/发送了多少数据包
RX-ERR/TX-ERR 表示接收/发送数据包时产生了多少错误
RX-DRP/TX-DRP 表示接收/发送数据包时丢弃了多少数据包
RX-OVR/TX-OVR 表示由于误差而遗失了多少数据包
正常情况下  RX-ERR/TX-ERR RX-DRP/TX-DRP RX-OVR/TX-OVR 值应该为0
如果不是,网络质量肯定有问题(检测网卡设备)

#7 top
top - 22:36:51 up 13:43,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  57 total,   2 running,  55 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1024932k total,   132320k used,   892612k free,    14056k buffers
Swap:  2096472k total,        0k used,  2096472k free,    49868k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                       

                                                                      
 3225 root      15   0 12632 1112  876 R  0.3  0.1   0:00.05 top                           

                                                                       
    1 root      18   0 10372  752  632 S  0.0  0.1   0:00.66 init                          
#8 Nginx php-cgi

开启10个Nginx进程消耗150MB内存(15MB*10=150MB)
开启64个php-cgi进程消耗120内存(20MB*64=1280MB)
加上系统自身消耗内存,总共消耗不到2G内存.

如果服务器内存较小,可以只开25个php-cgi进程  这样消耗php-cgi消耗总内存数才500MB
用Webbench做压力测试

同等硬件环境下,Nginx的处理能力相当于Apache的5到10倍。



本文转自cloves 51CTO博客,原文链接:http://blog.51cto.com/yeqing/1597040

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
运维 关系型数据库 MySQL
掌握taskset:优化你的Linux进程,提升系统性能
在多核处理器成为现代计算标准的今天,运维人员和性能调优人员面临着如何有效利用这些处理能力的挑战。优化进程运行的位置不仅可以提高性能,还能更好地管理和分配系统资源。 其中,taskset命令是一个强大的工具,它允许管理员将进程绑定到特定的CPU核心,减少上下文切换的开销,从而提升整体效率。
|
2天前
|
监控 网络协议 Linux
Linux系统管理与优化技巧:提升性能与效率的深度探索
【7月更文挑战第24天】Linux系统管理与优化是一个持续的过程,需要管理员和开发者不断地学习和实践。通过合理的系统监控、内存管理、文件系统优化、进程与任务管理、网络优化以及软件与包管理,可以显著提升Linux系统的性能和效率,确保业务的稳定运行。希望本文的技巧能为广大Linux用户带来帮助,共同推动Linux生态的繁荣发展。
|
7天前
|
Java Linux 应用服务中间件
Windows和Linux的最佳Web服务器
【7月更文挑战第20天】Windows和Linux的最佳Web服务器
20 3
|
11天前
|
运维 监控 Ubuntu
怎样配置Linux分析工具:atop篇
在管理Linux系统时,了解系统级监控工具是至关重要的。其中,atop是一种功能强大的工具,它允许运维人员以实时的方式监控系统运行状态,包括进程活动、内存使用、磁盘I/O以及网络负载等。atop提供了一种简洁而全面的方式来追踪系统表现和资源消耗情况,使得性能分析变得简单而直观。
|
16天前
|
监控 数据挖掘 Linux
探索Linux中的`sort`命令:数据处理与分析的得力助手
`sort`命令是Linux下文本数据排序利器,用于按字典、数字顺序等对行排序。关键参数有:-n(数字排序),-r(逆序),-u(去重),-k(指定字段),-t(字段分隔符)和-o(输出到文件)。在处理大文件时注意内存使用,确保字符编码一致,灵活运用管道和重定向。通过熟练使用`sort`,能提升数据分析效率。
|
2天前
|
Linux 网络安全 Android开发
Termux-远程管理Linux服务器
在手机上通过termux管理Linux服务器
|
10天前
|
存储 运维 监控
怎样配置Linux分析工具:kdump篇
在运维的世界里,服务器的稳定运行是生命的灯塔,一旦遭遇异常重启,便是暴风雨来临的预兆。作为一名运维工程师,深知在这场与故障斗争的战役中,武器的锋利至关重要。今天,我要介绍的主角/工具——kdump,正是这样一款能在风雨来临之际,为我们捕获那一闪而过的真相的工具。
|
21天前
|
网络协议 Linux
云服务器内部端口占用,9090端口已经存在了,如何关闭,Linux查询端口,查看端口,端口查询,关闭端口写法-netstat -tuln,​fuser -k 3306/tcp​
云服务器内部端口占用,9090端口已经存在了,如何关闭,Linux查询端口,查看端口,端口查询,关闭端口写法-netstat -tuln,​fuser -k 3306/tcp​
|
21天前
|
大数据 Linux 程序员
软件开发常见流程之服务器+Linux部署项目,会用服务器+Linux部署项目资料
软件开发常见流程之服务器+Linux部署项目,会用服务器+Linux部署项目资料
|
22天前
|
负载均衡 Java Linux
黑马头条01,环境搭建,今日头条的介绍,今日头条的功能架构图,技术栈的说明,服务层,nacos(奶靠丝)安装,安装在Linux服务器上环境准备,
黑马头条01,环境搭建,今日头条的介绍,今日头条的功能架构图,技术栈的说明,服务层,nacos(奶靠丝)安装,安装在Linux服务器上环境准备,

热门文章

最新文章