服务器为什么这么慢?


耗尽了CPU、RAM和磁盘I/O资源


# uptime
17:47:51 up 362 days, 23:56,  2 users,  load average: 0.31, 0.44, 0.63
load average后面3个数字0.31、0.44和0.63分别代表了1分钟、5分钟和15分钟内机器的平均负载。

# top
这些数据会不断更新,所以可以看到系统实时信息,包括系统启动了多久、负载平均值、共有多少进程在运行、总共有多少内存、使用了多少内存、还剩多少内存,系统的进程列表以及他们占用的资源数量。
如果发现一个进程占用了全部CPU资源,想要终止这个进程,按下K键,然后输入想要终止的进程PID,系统提示该进程将会终止,按下Enter键。
# top         -b    开启批处理模式
                 -n    控制退出top命令之前,刷新几次
例子:
    1.想看到完整输出:
    $ top -b -n 1
    2.存入top_output文件中:
    $ top -b -n 1 > top_output
    3.查看top输出,同时写入文件:
    $ top -b -n 1 | tee top_output

Cpu(s):  1.8%us,  0.2%sy,  0.0%ni, 97.7%id,  0.3%wa,  0.0%hi,  0.0%si,  0.0%st
    us:用户CPU时间
    运行非优雅的用户进程所占CPU时间的百分比(优雅,英文“nicing”,是指一个进程允许你根据其他进程更改优先级)。
    sy:系统CPU时间
    运行内核和内核进程所占CPU时间的百分比。
    ni:优雅CPU时间
    如果更改过一些进程的优先级,这个指标能够告诉你它们所占CPU时间的百分比。
    id:CPU空闲时间
    如果系统运行缓慢,但是这个指标特别高,那么你就可以确定问题的原因不是高CPU负载。
    wa:I/O等待
    代表CPU时间用在等待执行I/O操作所占的百分比。如果这个值很低,那么就能排除磁盘或者网络I/O的问题。
    hi:硬件中断
    CPU用于处理硬件中断所占时间的百分比。
    si:软件中断
    CPU用于处理软件中断所占时间的百分比。
    st:流逝的时间
    如果你正在运行虚拟机,这个度量指标会告诉你虚拟机中执行的其他任务所占CPU时间的百分比。

当系统运行缓慢的时候:
    首先要观察的是I/O等待时间,排除磁盘I/O问题。如果I/O等待时间很高,那么去找I/O等待时间高的原因; 如果I/O等待时间很低,那么看CPU空闲时间百分比;
    如果I/O等待和CPU空闲时间百分比都低,那么就会看到用户时间百分比非常高,确定导致用户时间百分比高的原因。
    如果I/O等待时间百分比低,CPU空闲时间百分比高,那么系统缓慢就不是CPU资源的原因,可能意味着应该查看网络问题或者web服务器的问题,再或者查看MySQL查询缓慢的问题等。

1.解决高用户时间问题:
   top命令查看,终止大量使用CPU资源进程(按下K键,输入对应进程PID)。
2.解决内存不足的问题:
    保持top的打开状态,然后按下M 键,会让所有进程按照RAM的使用率来排序。
    注意%MEM这一列,前几个进程占用了大量RAM,可以终止它们,或者根据程序,通过专门的故障排除法来寻找是什么原因导致这些进程占用了大量RAM。

注意:top命令开启下,按f键进入选择排序类的界面

3.解决高I/O等待问题:
    当I/O等待时间百分比很高时,首先查看机器是否在大量使用交换空间。硬盘操作速度远远低于RAM,所以当系统内存耗尽,开始使用交换空间的时候,系统性能会受到严重影响。
    所以第一步检查内存是否耗尽,如果是,则先解决这个问题。 如果还有大量可用的RAM,则要寻找是哪个进程占用了大部分I/O操作。
    使用iostat

  tps
    这个值列出了设备每秒的传输量。“传输”(Transfer)是向设备发送I/O请求的另一种表达方式。
    Blk_read/s
    表示每秒从设备读取的数据量。
    Blk_wrtn/s
    表示每秒向设备写入的数据量。
    Blk_read
    表示从设备读取的数据总量。
    Blk_wrtn
    表示写入设备的数据总量








你可能感兴趣的:(服务器为什么这么慢?)