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

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

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,可运行会报错,没办法加内存吧。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5天前
|
运维 Kubernetes Java
阿里云云效操作报错合集之npm包已经发布到了制品仓库,但流水线中拉取依赖时出现404错误,该如何排查
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
阿里云云效操作报错合集之npm包已经发布到了制品仓库,但流水线中拉取依赖时出现404错误,该如何排查
|
15小时前
|
弹性计算 运维 安全
阿里云ecs使用体验
整了台服务器部署项目上线
|
1天前
|
弹性计算 开发者
阿里云2核4G云服务器租用费用,轻量和ECS实例规格整理
阿里云2核4G服务器概览: - ECS u1企业专享:2核4G,5M带宽,80G ESSD盘,199元/年,续费同价。 - 轻量应用:2核4G,4M带宽,60GB ESSD,298元/年,新人特惠。 - ECS u1实例基于Intel Xeon Platinum处理器,提供稳定算力。 - **注意:** 企业用户优先选择199元方案,个人开发者适合轻量应用服务器。
20 5
|
1天前
|
弹性计算
阿里云ECS的使用心得
本文主要讲述了我是如何了解到ECS,使用ECS的一些经验,以及自己的感悟心得
|
1天前
|
弹性计算
阿里云2核2G服务器租用费用,轻量和ECS服务器价格对比
阿里云2核2G服务器,ECS经济型e实例99元/年,轻量应用服务器则为82元/年。ECS还提供其他类型如u1和t6实例。99元的ecs.e-c1m1.large适合新老用户,具有2核2G内存,基础带宽0.2Gbps,最高可达2Gbps。
19 3
|
1天前
|
弹性计算
阿里云ECS使用体验
在申请高校学生免费体验阿里云ECS云服务器后的一些使用体验和感受。
|
2天前
|
弹性计算 运维 安全
阿里云ecs使用体验
整了台服务器部署项目上线
|
1天前
|
缓存 运维 安全
阿里云轻量应用服务器82元和298元与云服务器99元和199元介绍与选择参考
目前阿里云有几款价格比较实惠的轻量应用服务器和云服务器产品,轻量应用服务器有2核2G3M 50GB高效云盘,价格为82元1年;2核4G4M 60GB高效云盘,价格为298元1年;经济型e实例2核2G,40G ESSD Entry盘,3M带宽,价格为99元1年;通用算力型u1实例2核4G,80G ESSD Entry盘,5M带宽,价格为199元1年。对于有些新手用户来说,这些产品究竟如何,选购时应该如何选择,是大家比较关注的问题,本文将为您进行详细分析,以供参考和选择。
阿里云轻量应用服务器82元和298元与云服务器99元和199元介绍与选择参考
|
4天前
|
弹性计算 小程序
阿里云服务器4核16G配置租赁价格表,多种ECS实例规格可选
阿里云提供多种4核16G服务器实例,如ECS经济型e、高主频hfg8i、通用型g7/u1/g8i/g8ae等。ECS经济型e实例ecs.e-c1m4.xlarge每月低至70元,适用于游戏、Web、小程序后端等场景
23 1
|
2天前
|
存储 Unix API
iSCSI SAN环境中的服务器如何获得新分配的磁盘卷
iSCSI SAN环境中的服务器如何获得新分配的磁盘卷