一口气说两个因为磁盘空间不足引发的应用故障。

作为拿起键盘一把梭的Coder, 开发--->部署-->收工--->心旷神怡,滋一口82年的可乐.

过了几个月,服务突然下线了!CTO又有杀程序员祭天的理由了!

事故1:Azure App Service

Azure App Service运行一段时间之后,你也许会遇到磁盘占满的错误, 表象如下:

  1. 应用程序触发System.Io.IOException:There is not enough space on the disk异常

  2. 你会在KUDU控制台发现磁盘错误(红色警告)

  3. 当你使用Visual Studio部署新的代码,你会得到失败结果。
    ERROR_NOT_ENOUGH_DISK_SPACE: Web deployment task failed. (Web Deploy detected insufficient space on disk)

每个App Service Plan只获得与定价层匹配的磁盘空间分配,故面向Azure App Service开发的应用需要关注空间消耗!

Shared Basic STANDARD PREMIUM
Disk Space 1G 10G 50G 250G

一个App Service Plan可支撑多个web应用共享付费套餐里面的所有资源,如果磁盘文件大小超过配额,你会看到上面的错误!

你可以在每个应用的[App Service Paln]--->[Quotas] 配置节下面发现当前应用占用的磁盘空间。

一个常规的Web应用包含如下内容:

--- --- 描述 转移方案
1 WebSite Content 刚需
2 App_Data 存储持久化数据/图片 尝试转移到Azure其他存储组件
3 Log Files 本地日志文件 尝试转移到Azure其他存储组件

Azure Storage Account为任意数据提供可扩展、持久化的云存储、备份和恢复解决方案,包括非结构化文本或二进制数据,如视频、音频和图像。

本文点到为止,演示将日志数据转移到Azure Storage Container (非结构化数据存储)。

# 还是以常见的NLog为蓝本:
# 引入`NLog.Extensions.AzureBlobStorage`库文件<target xsi:type="AzureBlobStorage"name="Cloud_applogs"layout="${format}"connectionString="********"container="actionlogs" blobName="applogs/applog-${date:format=yyyyMMdd}.log"  /># 其中的ConnectionString参见[Settings]-->[Access Keys]  <logger name ="LoggingActionFilter" minlevel="Info" writeTo="Cloud_applogs" />

事故2:  Docker

Docker默认以Json的形式将日志存储到/var/lib/docker/containers

使用 docker system df命令查看Docker磁盘占用

使用docker ps --size定位每个容器的磁盘占用

我手上的应用,部署了EFK采集数据,并为ES的索引指定了较充裕的独立磁盘, 但是对EFK本身却忘记了控制日志大小。

清理容器治标不治本,要从根本上解决问题,需要限制容器的日志大小上限。

  1. 配置每个容器的docker-compose中的max-size

 logging:driver: "json-file"options:max-size: 100kmax-file: "5"
  1. 全局设置
    新建/etc/docker/daemon.json,若有就不用新建了,添加log-dirver和log-opts参数

# vim /etc/docker/daemon.json{"log-driver":"json-file","log-opts": {"max-size":"500m", "max-file":"3"}
}

---------------------------------------------------------------

剖析以上事故,因为是我一个人开发+部署,考虑了一些事,也遗漏了一些事,凸显了职业运维的重要性。

开发和运维,相爱相杀!相辅相成!相得益彰!

临近年关,大家也检查一下部署的应用是否有此低级的风险, 不要像我一样晚节不保!

关注并星标我们
更多干货及最佳实践分享

临近年关,发生两起磁盘占满引发的服务下线故障相关推荐

  1. Linux磁盘占满,如何清理磁盘空间

    目录 解决思路:先查linux磁盘为什么占满了,是什么导致的,这样才好去定位目录,清楚空间 写者的问题是测试环境磁盘占满,原因是测试环境tomcat的日志都会保留,日志空间占用太大把linux磁盘占满 ...

  2. 【日常总结】Docker 磁盘占满解决方案

    目录 项目背景: 问题描述 原因分析: 解决方案: Step 1:查看硬盘使用情况 Step 2:安装crontab Step 3:编写清理脚本cleardockerlog.sh,并执行一次 Step ...

  3. java执行反射代码导致频繁创建奇怪的类从而发生元数据区被占满FUllGc案例

    查看 JVM GC 日志 没有一丝耽搁,老王立刻调出了线上GC日志,在日志里,看到了一个"Metadata GC Threshold"的字样,类似于如下日志: [Full GC(M ...

  4. 【举栗子】Docker 容器磁盘占满的几种情况 | CSDN博文精选

    戳蓝字"CSDN云计算"关注我们哦! 作者 |  isea533 转自 | CSDN博客 责编 | 阿秃 参考文档: https://docs.docker.com/engine/ ...

  5. Centos磁盘占满

    场景: 想拷贝一份表作为备份,出现错误语句: Create table/tablespace 'table_xx' faild,as disk is full disk 英[dɪsk] 磁盘; 磁碟; ...

  6. linux修改sda3时间,Linux服务器磁盘占满问题解决(/dev/sda3 满了)

    今天下班某电商技术部leader发现个问题,说他们服务器硬盘满了.把日志文件都删掉了,可硬盘空间依旧满.于是df -h查看了下各个挂载点的状况(如下图). /dev/sda3占用了100%,那么我们d ...

  7. linux 根目录磁盘占满,linux磁盘空间满,解决方法

    1.查看磁盘使用情况 [root@localhost ~]# df -h ?? 文件系统             容量  已用  可用 已用% 挂载点 /dev/mapper/cl-root   50 ...

  8. 【问题记录】 Linux分区磁盘占满,导致ssh登陆闪退

    问题描述 今天要去后台看日志查个问题,通过ssh登陆到服务器后准备用平时非常熟悉的less命令打开日志查看,突然xshell客户端就闪退了.一时感觉很蒙,怎么回事??由于之前有同事遇到类似的问题,提醒 ...

  9. 关于Linux服务器磁盘空间占满问题的解决方法

    下面给大家分享一篇关于Linux服务器磁盘占满问题解决方法(/dev/sda3 满了),需要的的朋友参考下吧 下面我们一起来看一篇关于Linux服务器磁盘占满问题解决(/dev/sda3 满了),希望 ...

最新文章

  1. 视觉直观感受7种常用的排序算法
  2. 2018年EC Final 校内选拔赛【解题报告】
  3. 前端学习(2658):vue3 computed
  4. 客户端通过网口启动可过去的ip_西安交通大学16年3月课程考试《网络组网技术综合训练》作业考核试题...
  5. DHCP服务器在企业里的各种应用方案
  6. python查找元素的下标 leetcode 392
  7. 10-10-009-简介-常用Message Queue对比
  8. 计算机系统结构自学试卷,全国2004年4月高等教育自学考试计算机系统结构试题...
  9. NumPy基础操作(1)
  10. rust笔记10 泛型处理
  11. 解决uni-app开发中iphoneX下背景不能全屏铺满的问题
  12. 上传图片至fastdfs显示连接超时
  13. BatchNormalization 优点
  14. vue.js2.0 新手开发_vue.js2.0实战(1):搭建开发环境及构建项目
  15. 数控技术 - 直线插补 - 数字积分法(DDA)
  16. 研究生软件测试项目答辩ppt,优秀硕士毕业论文答辩PPT.ppt
  17. activiti 流程设计模型(model) 和 部署(deployment)及流程定义(processDefinition)之间的关系;
  18. 树莓派屏幕显示No Signal
  19. u盘读不出来怎么修复?
  20. JavaScript--AJAX页面传值

热门文章

  1. 分层架构web容器的配置安全
  2. linux 下使用 curl post
  3. 最小生成树Prim算法和Kruskal算法
  4. ASP.NET登录以及注册
  5. 合肥工业大学计算机学院王院长,王青山(合肥工业大学教授)_百度百科
  6. mysql的concat函数_MySQL中concat函数(连接字符串)
  7. geek_How-To Geek正在寻找安全作家
  8. 限流算法(记录cyc大佬的专栏)
  9. Ubuntu安装Samba文件共享服务器(NAS)
  10. python模块之hashlib