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

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

  1. 阿里云ECS Ubuntu 实例开放防火墙端口仍无法访问问题解决(安全组规则应用)...

    最近开通了一个阿里云ECS Ubuntu实例,通过 python -m SimpleHTTPServer 简单的测试HTTP访问,但是通过终端可以远程登录 ssh root@39.107.109.xx ...

  2. 阿里云服务器[Ubuntu 20.04]配置MySQL并实现远程连接

    阿里云服务器[Ubuntu 20.04]配置MySQL并实现远程连接 一次小小的尝试 操作系统与使用软件 连接云服务器 云服务器下载MySQL 更新MySQL用户权限 修改阿里云安全组 修改系统中配置 ...

  3. 阿里云ECS服务器自定义端口无法访问问题记录

    记住阿里云ECS服务器有个安全组!!! 购买了阿里云服务器的时候,购买界面那里是可以勾选默认的几个端口是否开启的,服务器默认勾了22端口,使用户能登录服务器. 当我们在服务器里面配置nginx,开启自 ...

  4. 阿里云ecs服务器如何设置实现访问互联网

    概述: 阿里云上新开了一台ecs服务器,想访问外网下载或安装一些源依赖或者应用,我们如何设置安全组实现访问外网? 首先我们先要了解rfc1918. 什么是rfc1918? 本段转载自:What is ...

  5. 阿里云ECS部署Nginx配置域名访问

    目录 前言 环境 具体步骤 服务器 域名 SSL证书 Nginx配置 前言 记录下阿里云服务器建站的过程(回回建,回回忘,尴尬...) 环境 ECS(Centos7.6)+ Nginx 具体步骤 服务 ...

  6. 阿里云ECS代理访问阿里云RDS MySQL数据库

    一.前言 阿里云RDS数据白名单一般只对内部的服务器开放,一般不会开放给外网直接访问,有时开发需要直接访问RDS数据库,平时我们使用的网络都是动态公网IP,经常会变化,设置白名单相对繁琐一点.想了一个 ...

  7. 阿里云ECS服务器环境搭建(2) —— ubuntu 16.04 安装中文输入法(搜狗输入法)

    阿里云ECS服务器环境搭建(2) -- ubuntu 16.04 安装中文输入法(搜狗输入法) 1. 环境 阿里云 ECS服务器 (4核 8G 4M) Ubuntu16.04-64-bit 图形界面 ...

  8. 使用VNC远程连接阿里云ECS实例的Ubuntu系统

    使用VNC远程连接阿里云ECS实例的Ubuntu系统 文章目录 使用VNC远程连接阿里云ECS实例的Ubuntu系统 前言 配置详细流程 Ubuntu配置VNCServer 配置gnome桌面环境 管 ...

  9. 搭建以太坊私有链(PoA)--CentOS7.6 on 阿里云ECS、macOS Catalina on Mac、Ubuntu20.04 on Raspberry Pi 4B

    使用Geth搭建以太坊PoA私有链 搭建以太坊私有链(PoA) 1 阿里云ECS上的操作步骤 1.1 准备环境 1.2 安装Geth及Tools 1.3 创建以太坊私有链的数据文件夹 1.4 用pup ...

  10. 阿里云ECS主机 Ubuntu下设置Mysql 5.7.17为远程访问

    2019独角兽企业重金招聘Python工程师标准>>> 阿里云ECS主机 Ubuntu下设置Mysql 5.7.17为远程访问 进入mysql mysql -uroot -p 选择数 ...

最新文章

  1. 解决vc6.0卡死的方法
  2. 用Eclipse进行远程Debug代码
  3. Linux之Redis的启动、使用和停止
  4. ThreadLocal的意义和实现
  5. 方差、标准差、均方根误差
  6. 【已解决】清除linux系统的多余引导
  7. [UE4]把枪抽象为一个类
  8. sql server动态分页
  9. Docker Compose 笔记
  10. Suse Enterprise Server 11的安装
  11. 如何学习嵌入式Linux_韦东山
  12. Python 人脸表情识别
  13. TCP/IP协议族在异构网络互联中的作用
  14. 云服务器系统一键安装,一键安装服务器系统
  15. Python-property
  16. 工程经济学复习2.0
  17. 循环视图——RecycleView
  18. 【数学与算法】向量内积(点乘)和外积(叉乘)概念及几何意义
  19. SpringBoot(5)响应式编程WebFlux
  20. 总结一些网站加密和混淆技术

热门文章

  1. atitit.提取zip rar文件列表 java php c# 的原理与设计
  2. Atitit. .net c# web 跟客户端winform 的ui控件结构比较
  3. paip.日志中文编码原理问题本质解决python
  4. 如何做好一个技术 TL
  5. 凌云一周看点 | 从运维和SRE角度看监控分析平台建设;从操作系统层面分析Java IO演进之路;机器学习落地的五个阶段...
  6. 【图像修复】基于matlab GUI维纳滤波图像复原【含Matlab源码 851期】
  7. 【优化算法】符号LMS算法【含Matlab源码 697期】
  8. 计算机英语会话实用电脑英语,计算机英语会话(MP3+中英字幕) 第41期:实用电脑英语...
  9. python exception最简单的应用(基本可以满足大部分需求)(异常、raise的使用)
  10. 云服务器机型系统选择,云服务器机型选择操作系统