IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

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

    Trinea发表于 2016-01-18 00:30:14
    love 0

    前天晚上 10 点多收到 DNSPOD 的监控报警,服务器挂了。这已经是迁移到阿里云后的第二次了。

     

    1. 现象

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

     

    2. 排查

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

    [crayon-569c4f3523c96432032909/]

    发现:

    [crayon-569c4f3523ca3033923679/]

    发现在 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 分别占据内存占用排行榜前二。

    [crayon-569c4f3523caa678338903/]

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

    [crayon-569c4f3523cb0659042999/]

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

     

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

     

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

    相关文章:

    • WordPress 博客速度优化,欢迎大家反馈访问速度
    • 博客被攻击闲聊
    • 国内四个不错的技术团体博客
    • Andriod 开源项目源码解析第一期发布
    • 博客服务器迁移,欢迎大家反馈访问速度和 Bug


沪ICP备19023445号-2号
友情链接