linux服务器性能分析与优化

本文涉及的产品
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
相关文章
|
5天前
|
消息中间件 安全 Linux
服务器(Linux)在线下载activeMQ以及配置打开
服务器(Linux)在线下载activeMQ以及配置打开
14 3
|
5天前
|
Java Linux
Linux(服务器) 装JDK
Linux(服务器) 装JDK
21 1
|
4天前
|
Linux 网络安全
linux/服务器使用scp将一个服务器文件转移到另一个服务器上
linux/服务器使用scp将一个服务器文件转移到另一个服务器上
32 3
|
5天前
|
监控 JavaScript 网络协议
Linux系统之安装uptime-kuma服务器监控面板
【5月更文挑战第12天】Linux系统之安装uptime-kuma服务器监控面板
18 0
|
5天前
|
关系型数据库 MySQL Linux
服务器Linux系统配置mysql数据库主从自动备份
这是一个基本的配置主从复制和设置自动备份的指南。具体的配置细节和命令可能因您的环境和需求而有所不同,因此建议在操作前详细阅读MySQL文档和相关资源,并谨慎操作以避免数据丢失或不一致。
20 3
|
5天前
|
Oracle Java 关系型数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
17 6
|
5天前
|
存储 弹性计算 监控
探索阿里云弹性计算:如何优化云服务器ECS的性能与成本
在云时代,【阿里云ECS】的性能优化与成本控制至关重要。利用实例规格选择、自动伸缩、网络和存储配置,可增强性能、减少成本。结合监控工具和优化建议,用户能解决性能问题,提升应用稳定性,实现高效且经济的云计算运营。
29 1
|
5天前
|
运维 监控 安全
2023年最详细的:本地Linux服务器安装宝塔面板,并内网穿透实现公网远程登录
2023年最详细的:本地Linux服务器安装宝塔面板,并内网穿透实现公网远程登录
|
5天前
|
缓存 安全 网络安全
Apache服务器配置与优化指南
【5月更文挑战第7天】Apache服务器配置与优化指南包括基础配置和性能优化。安装Apache后,编辑`httpd.conf`配置文件,设置`ServerRoot`、`Listen`、`ServerName`和`DocumentRoot`。启用虚拟主机以托管多个网站。性能优化涉及启用MPM模块(如worker或event),启用压缩功能,优化KeepAlive参数,配置缓存和限制并发连接数。安全配置包括禁用不必要的模块,设置目录权限,启用SSL/TLS及限制IP访问。通过这些措施,提升服务器性能和安全性。
|
5天前
|
缓存 负载均衡 安全
深入探索Nginx高性能Web服务器配置与优化
【5月更文挑战第7天】本文深入探讨了Nginx的配置与优化,重点介绍了基础配置参数如`worker_processes`、`worker_connections`和`keepalive_timeout`,以及优化策略,包括使用epoll事件驱动模型、开启gzip压缩、启用缓存、负载均衡和安全配置。此外,还提到了性能调优工具,如ab、nginx-stats和nmon,以助于提升Nginx的性能和稳定性。