linux服务器性能分析与优化

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:
#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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
20 7
|
6天前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
|
1天前
|
运维 监控 Linux
推荐几个不错的 Linux 服务器管理工具
推荐几个不错的 Linux 服务器管理工具
|
24天前
|
存储 缓存 网络协议
Linux操作系统的内核优化与性能调优####
本文深入探讨了Linux操作系统内核的优化策略与性能调优方法,旨在为系统管理员和高级用户提供一套实用的指南。通过分析内核参数调整、文件系统选择、内存管理及网络配置等关键方面,本文揭示了如何有效提升Linux系统的稳定性和运行效率。不同于常规摘要仅概述内容的做法,本摘要直接指出文章的核心价值——提供具体可行的优化措施,助力读者实现系统性能的飞跃。 ####
|
25天前
|
监控 算法 Linux
Linux内核锁机制深度剖析与实践优化####
本文作为一篇技术性文章,深入探讨了Linux操作系统内核中锁机制的工作原理、类型及其在并发控制中的应用,旨在为开发者提供关于如何有效利用这些工具来提升系统性能和稳定性的见解。不同于常规摘要的概述性质,本文将直接通过具体案例分析,展示在不同场景下选择合适的锁策略对于解决竞争条件、死锁问题的重要性,以及如何根据实际需求调整锁的粒度以达到最佳效果,为读者呈现一份实用性强的实践指南。 ####
|
25天前
|
缓存 监控 网络协议
Linux操作系统的内核优化与实践####
本文旨在探讨Linux操作系统内核的优化策略与实际应用案例,深入分析内核参数调优、编译选项配置及实时性能监控的方法。通过具体实例讲解如何根据不同应用场景调整内核设置,以提升系统性能和稳定性,为系统管理员和技术爱好者提供实用的优化指南。 ####
|
1月前
|
缓存 并行计算 Linux
深入解析Linux操作系统的内核优化策略
本文旨在探讨Linux操作系统内核的优化策略,包括内核参数调整、内存管理、CPU调度以及文件系统性能提升等方面。通过对这些关键领域的分析,我们可以理解如何有效地提高Linux系统的性能和稳定性,从而为用户提供更加流畅和高效的计算体验。
32 2
|
1月前
|
缓存 网络协议 Linux
深入探索Linux操作系统的内核优化策略####
本文旨在探讨Linux操作系统内核的优化方法,通过分析当前主流的几种内核优化技术,结合具体案例,阐述如何有效提升系统性能与稳定性。文章首先概述了Linux内核的基本结构,随后详细解析了内核优化的必要性及常用手段,包括编译优化、内核参数调整、内存管理优化等,最后通过实例展示了这些优化技巧在实际场景中的应用效果,为读者提供了一套实用的Linux内核优化指南。 ####
47 1
W9
|
1月前
|
运维 关系型数据库 MySQL
轻松管理Linux服务器的5个优秀管理面板
Websoft9 应用管理平台,github 2k star 开源软件,既有200+的优秀开源软件商店,一键安装。又有可视化的Linux管理面板,文件、数据库、ssl证书方便快捷管理。
W9
102 1
|
24天前
|
存储 Oracle 安全
服务器数据恢复—LINUX系统删除/格式化的数据恢复流程
Linux操作系统是世界上流行的操作系统之一,被广泛用于服务器、个人电脑、移动设备和嵌入式系统。Linux系统下数据被误删除或者误格式化的问题非常普遍。下面北亚企安数据恢复工程师简单聊一下基于linux的文件系统(EXT2/EXT3/EXT4/Reiserfs/Xfs) 下删除或者格式化的数据恢复流程和可行性。