Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux内存不足服务崩溃

Linux系统内存不足导致服务崩溃的排查方法

作者:网硕互联的小客服

Linux 系统内存不足会导致服务崩溃、系统变慢甚至无法正常运行,以下是内存不足问题的详细排查方法,包括问题症状、原因分析及解决步骤,

1. 内存不足的常见症状

服务崩溃

系统性能下降

高 Swap 使用

内存不足的系统日志

Out of memory: Kill process 12345 (my_service) score 1234 or sacrifice child
Killed process 12345 (my_service) total-vm:123456kB, anon-rss:12345kB

2. 排查内存不足的原因

2.1 检查系统内存使用情况

查看内存和 Swap 使用情况

运行以下命令:

free -h 

输出示例:

              total        used        free      shared  buff/cache   available
Mem:           8.0G        7.5G        100M        300M        400M        150M
Swap:          2.0G        1.8G        200M

分析内存分配

2.2 找出内存占用高的进程

使用 top 命令

运行以下命令:

top 

M 键,按照内存占用排序:

使用 ps 命令

按内存排序列出进程:

ps aux --sort=-%mem | head -n 10 

输出示例:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     12345  5.0 75.6 123456 654321 ?       S    10:00   5:00 java -Xmx4G myapp.jar

使用 smem 工具(更详细的内存分析)

如果未安装,可以通过以下命令安装:

sudo apt install smem       # Ubuntu/Debian
sudo yum install smem       # CentOS/RHEL

查看实际内存占用:

smem -tk 

2.3 检查系统日志

查看 OOM(Out of Memory)日志

检查 /var/log/messages/var/log/syslog 中是否有 OOM 相关记录:

grep -i "Out of memory" /var/log/messages
grep -i "Out of memory" /var/log/syslog

查看被杀死的进程

2.4 检查系统内存泄漏

查找内存泄漏的进程

检查内核内存泄漏

slabtop 

2.5 检查缓存和缓冲

查看缓存占用情况

清理缓存

sudo sync
sudo echo 3 > /proc/sys/vm/drop_caches

2.6 检查 Swap 使用

查看 Swap 使用情况

swapon --show 

增加 Swap 空间

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

3. 解决内存不足问题的方法

3.1 优化服务配置

调整服务的内存限制

java -Xmx2G -Xms1G -jar myapp.jar

限制进程的内存使用

ulimit -v [memory_limit_in_kb] 

3.2 增加系统内存

3.3 优化系统配置

调整 OOM Killer 优先级

echo -17 > /proc/<PID>/oom_score_adj 

优化内存管理参数

sysctl vm.swappiness=10 

3.4 清理系统资源

清理无用的进程

kill -9 <PID> 

卸载无用服务

systemctl stop [service_name]
systemctl disable [service_name]

3.5 使用监控工具

实时监控内存使用

设置报警机制

4. 总结

排查 Linux 系统内存不足的流程如下:

  1. 检查内存和 Swap 使用情况:使用 freetop 查找问题根源。
  2. 定位占用内存的进程:使用 pssmem 找出高内存占用进程。
  3. 分析日志信息:检查 OOM Killer 是否终止了关键服务。
  4. 优化系统和服务:调整服务配置、增加内存或清理无用进程。
  5. 部署监控工具:持续监控和优化系统资源使用。

通过合理的排查和优化,可以有效解决内存不足导致的服务崩溃问题,并提升系统稳定性和性能。

以上就是Linux系统内存不足导致服务崩溃的排查方法的详细内容,更多关于Linux内存不足服务崩溃的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文