阿里云 ECS Ubuntu 14.04 无法访问之磁盘 IO 跑满问题排查

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介:

1. 现象

服务器 ip 能 ping 通,但部署的两个网站都无法访问,ssh 也连接不上,打开阿里云手机监控看了下,磁盘读 IOPS 达到了 1000 次/秒,并持续了近半个小时,IO 跑满导致无法处理其他任何请求,只能将服务器重启。
PS:DigitalOcean 全固定硬盘,比起来阿里云的普通硬盘速度实在是渣到爆。

2. 排查

查看 syslog,看系统之前的运行情况

Java

1

sudo more /var/log/syslog

发现:

Java

1

2

3

Jan 15 22:32:30 codekk kernel: [792223.870307] Out of memory: Kill process 15506 (java) score 328 or sacrifice child

Jan 15 22:32:30 codekk kernel: [792223.871278] Killed process 15506 (java) total-vm:2006712kB, anon-rss:332960kB, file-rss:0kB

Jan 15 22:32:48 codekk kernel: [792242.290535] AliYunDun invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0

发现在 22:32 分时,系统内存不足,触发了 Linux 内核 Out Of Memory killer 的机制,根据计算选择一个得分最高的进程将其 kill,从上面可以看到,被 kill 的进程号为 15506,这个是 ElasticSearch 的进程(被 kill 时内存占用达到了 50%)。想到之前 ElasticSearch 总是莫名其妙崩溃,算是找到了原因。

至于内存不足为什么最终导致 IO 繁忙的原因尚未找到,初步估计跟 ElasticSearch 被 kill 后,其他几个占内存较大程序相继被 kill,如 nodejs、mysqld、memcached、mongodb,内存缓存、数据库相继失效等有关。

3. 更多排查

运行 top,M 之后,ElasticSearch 和 node 分别占据内存占用排行榜前二。

Java

1

2

3

4

5

6

7

8

9

10

11

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

9421 codekk 20 0 2000416 270664 5768 S 0.0 26.6 0:48.53 java

1524 codekk 20 0 1138920 164076 3480 S 0.0 16.1 2:49.59 nodejs

849 mysql 20 0 760472 82652 1100 S 0.3 8.1 3:09.70 mysqld

13367 codekk 20 0 1014872 68496 0 S 0.0 6.7 0:00.94 nodejs

973 memcache 20 0 389816 65756 0 S 0.0 6.5 0:45.35 memcached

788 mongodb 20 0 593720 58284 4636 S 0.0 5.7 6:27.31 mongod

8021 trinea 20 0 261200 54720 27444 S 3.7 5.4 1:21.41 php5-fpm

9086 trinea 20 0 238700 41664 26500 S 0.0 4.1 1:08.17 php5-fpm

9085 trinea 20 0 239860 39672 25080 S 0.0 3.9 1:09.73 php5-fpm

872 root 20 0 237760 9528 5568 S 0.0 0.9 0:06.10 php5-fpm

使用 free -h 查看内存使用情况:

Java

1

2

3

4

total used free shared buffers cached

Mem: 992M 907M 84M 32M 4.7M 93M

-/+ buffers/cache: 809M 182M

Swap: 0B 0B 0B

可以发现程序实际使用内存 809M,可用内存 182M,而 IO Cache 为 (907-809)M。

从阿里云手机监控(内存使用率监控图)也可看出,内存使用率基本一直在 80% 左右,白天访问量较多,基本三四个小时就会有一次(ElasticSearch 进程)Full GC 造成的抖动。

ElasticSearch 负责 codeKK 后台搜索,启动参数为 -Xms256m -Xmx1g,可通过添加环境变量 ES_HEAP_SIZE=”128m”,将最低内存设置为 128m,可运行会报错,没办法加内存吧。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
存储 数据挖掘 Windows
服务器数据恢复—V7000存储raid5故障导致LUN无法访问的数据恢复案例
服务器数据恢复环境: 三台V7000存储,共有64块SAS硬盘(其中有三块热备盘,其中一块已启用)组建了数组raid5阵列。分配若干LUN,上层安装Windows server操作系统,数据分区格式化为NTFS文件系统。 服务器故障: V7000存储中有多块硬盘出现故障离线,阵列失效,LUN无法访问。需要恢复卷中所有数据(主要为dcm文件)。
|
16天前
|
存储 算法 数据挖掘
服务器数据恢复—nas中raid6阵列失效,存储无法访问的数据恢复案例
一台nas上共有14块硬盘组建了一组raid6磁盘阵列。 该nas在工作过程中,raid6阵列中硬盘出现故障离线,导致raid6阵列失效,nas无法正常访问。
|
1月前
|
SQL
南大通用GBase 8a配置gcware日志等级,减少日志输出,节省磁盘IO
南大通用GBase 8a配置gcware日志等级,减少日志输出,节省磁盘IO
|
2月前
|
负载均衡 数据可视化 API
像素流送api ue多人访问需要什么显卡服务器
本文总结了关于像素流送技术的五大常见问题,包括是否支持Unity模型推流、UE多人访问的最大并发数、所需服务器配置、稳定性问题及API支持情况,旨在帮助开发者更好地理解和应用这一技术。
79 1
|
2月前
|
Ubuntu 网络协议 关系型数据库
超聚变服务器2288H V6使用 iBMC 安装 Ubuntu Server 24.04 LTS及后续系统配置
【11月更文挑战第15天】本文档详细介绍了如何使用iBMC在超聚变服务器2288H V6上安装Ubuntu Server 24.04 LTS,包括连接iBMC管理口、登录iBMC管理界面、配置RAID、安装系统以及后续系统配置等步骤。
341 4
|
2月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
1078 2
|
3月前
|
Ubuntu 应用服务中间件 开发工具
Ubuntu16.04搭建gitlab服务器,搭建pip源服务器(两种方式),搭建apt源服务器
这篇文章是关于如何在Ubuntu 16.04系统上搭建GitLab服务器、pip源服务器(使用pypiserver和NGINX两种方式),以及apt源服务器的详细教程。
54 0
Ubuntu16.04搭建gitlab服务器,搭建pip源服务器(两种方式),搭建apt源服务器
|
3月前
|
缓存 NoSQL Ubuntu
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
73 3
|
2月前
|
存储 弹性计算 固态存储
阿里云服务器ESSD Entry系统盘测评IOPS、IO读写和时延性能参数
ESSD Entry云盘是阿里云推出的新一代云盘,具备高IOPS、低延迟和企业级数据保护能力。适用于开发与测试场景,支持按量付费和包年包月计费模式。99元和199元的ECS经济型e实例和通用算力型u1实例均采用ESSD Entry系统盘,性价比高。详细性能参数和价格请参考阿里云官方页面。
119 0
|
3月前
|
Ubuntu API Python
Chat-TTS chat-tts-ui 实机部署上手测试!Ubuntu服务器实机 2070Super*2 8GB部署全流程
Chat-TTS chat-tts-ui 实机部署上手测试!Ubuntu服务器实机 2070Super*2 8GB部署全流程
100 1