linux系统很卡的基本排查方法
服务器面板 2018-11-27 15:15:37

 1. 查看内存使用情况

free -g

QQ截图20181127151609.png

当观察到free栏已为0的时候,表示内存基本被吃完了,那就释放内存吧

 

手动释放Linux内存 

查看/proc/sys/vm/drop_caches的值

C/C++ Code复制内容到剪贴板
  1. cat /proc/sys/vm/drop_caches  

值默认为0

然后,运行sync命令

C/C++ Code复制内容到剪贴板
  1. sync  

手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)

最后,输入手动释放内存的命令(3是释放所有缓存)

C/C++ Code复制内容到剪贴板
  1. echo 3 > /proc/sys/vm/drop_caches  

sync表示将内存缓存区内容立即同步到磁盘,为了保证安全可以多执行几次。

 

drop_caches的值可以是0-3之间的数字,代表不同的含义:

0:不释放(系统默认值)

1:释放页缓存

2:释放dentries和inodes

3:释放所有缓存

 

释放完内存后改回去让系统重新自动分配内存

C/C++ Code复制内容到剪贴板
  1. echo 0 >/proc/sys/vm/drop_caches  

free -m #看内存是否已经释放掉了。

 

2. 查看磁盘使用情况

df -h

QQ截图20181127151800.png

当发现磁盘使用率很高时,那就要释放磁盘空间了,删除一些不必要的文件

 

3. 查看磁盘IO使用情况

iostat -x 1

1表示1秒刷新一次

QQ截图20181127152027.png

当发现最右侧%util很高时,表示IO就很高了,若想看哪个进程占用IO,执行iotop命令查看

 

4.查看cpu使用情况

top

20170309144802605.png

下图中红框里表是cpu使用情况,最右侧的%id表示剩余,若很低,则表示cpu被吃完了,在top界面按shift+p对进程使用cpu排序,能看到哪些进程占用cpu较多

当然,top命令也能查看内存等信息,比较强大

 

 

5、 按内存升序排列;

ps aux --sort=+rss

 

按内存降序排列;

ps aux --sort=-rss

 

按cpu升序排列;

ps aux --sort=+%cpu

 

为按cpu降序排列。

ps aux --sort=-%cpu

 

6、 进入mysql 查看进程

mysql -r root -p;

show full processlist;

查看慢查询日志是否开启:

C/C++ Code复制内容到剪贴板
  1. show variables like '%slow_query_log%';  

 

参数说明:

slow_query_log : 是否已经开启慢查询

slow_query_log_file : 慢查询日志文件路径

long_query_time :  超过多少秒的查询就写入日志 

log_queries_not_using_indexes 如果值设置为ON,则会记录所有没有利用索引的查询(性能优化时开启此项,平时不要开启)
 

测试

1.执行一条慢查询SQL语句

复制内容到剪贴板
  1. mysql> select sleep(2);  

 

 

 

 

本文来自于:http://www.yoyo88.cn/study/control/383.html

Powered by yoyo苏ICP备15045725号