炸弹人 炸弹爆炸 c语言

基于我在JavaOne上关于在我们的开发生涯中犯了严重错误的会议的想法,我考虑编写其中一些故事。 我将从最喜欢的一个开始:生成超过2300万封电子邮件后,使客户的邮件服务器崩溃! 是的,没错, 两千三百万!

历史

几年前,我加入了一个开发了几个月的项目,但尚未发布任何产品。 实际上,该项目计划在接下来的几周内替换现有的应用程序。 我在项目中的第一个任务是弄清楚在生产环境中部署应用程序并替换旧应用程序所需的内容。

该应用程序具有大量用户(大约50 k),但并非所有用户都处于活动状态。 新应用程序具有一项新功能,可以排除最近几个月未登录该应用程序的用户。 这被实现为计时器(每天执行),并且向该用户发送了一封电子邮件通知,警告他被排除在应用程序之外。

问题

该版本安装在星期五(是的,星期五!)上,每个人都去休息了。 星期一早上,所有地狱都松散了! 客户邮件服务器已关闭,并且没人知道原因。

最初的报告表明邮件服务器的磁盘空间不足,因为它有大约200万封电子邮件等待发送,并且还有更多的传入邮件。 到底发生了什么?

原因

即使服务器关闭,支持人员仍可以向我们显示服务器中滞留的电子邮件副本。 这与排除用户时发送的电子邮件一致。 这没有任何意义,因为我们计算了要排除的用户数量,它们大约为28 k,因此应该只发送了28 k电子邮件。 即使排除所有用户,该数字也不能超过50 k(用户总数)。

不合规电邮

查看代码,我们发现了一个错误,如果该用户的电子邮件无效,该错误将导致该用户不被排除在外。 结果,这些用户在每次执行计时器时都被捕获。 在要排除的28k用户中,大约有26k拥有无效电子邮件。 从星期五到星期一,我们计算3次执行* 26 k用户,因此78 k k电子邮件。 好的,现在我们的电子邮件数量有所增加,但距离报告的数字还不够。

计时器错误

实际上计时器也有一个错误。 它不是计划每天执行一次,而是每8小时执​​行一次。 让我们调整数字:3天*每天3次执行* 26,000个用户,使电子邮件总数达到234 k。 大幅增加,但仍远未达到很大的数目。

附加节点

这些操作将应用程序安装在第二个节点中,并且在两个节点中都执行了计时器。 因此增加了一倍。 让我们更新一下:2 * 234 k电子邮件,使总数达到468 k电子邮件。

无回复地址

由于电子邮件是自动化的,因此通常将不答复电子邮件设置为电子邮件发件人。 现在的问题是无回复地址的域无效。 结合用户无效电子邮件,邮件服务器进入循环状态。 每个无效的用户电子邮件都会生成一个错误电子邮件,该电子邮件将发送到无回复地址,该电子邮件也同样无效,这会导致再次向服务器返回一封电子邮件。 超过最大跳数时,循环结束。 在本例中为50。现在一切都变得有意义了! 让我们更新数字:

2万6千名用户* 3天* 3次执行* 2台服务器* 50跳,总计2340万封电子邮件!

后果

客户从星期五到星期一丢失了所有电子邮件,但是可以恢复邮件服务器。 问题已解决,以后再也没有发生。 我记得那些日子,压力很大,但今天我们所有人都参与其中,为之大笑!

切记:请务必检查不答复的地址!

翻译自: https://www.javacodegeeks.com/2014/11/development-horror-story-mail-bomb.html

炸弹人 炸弹爆炸 c语言

炸弹人 炸弹爆炸 c语言_发展恐怖故事–邮件炸弹相关推荐

  1. C语言奇妙之旅_发展历史

    C语言的发展历史(简化) 1972年 -> 在B语言的基础上设计出了一种新的语言, 没错, 就是我们讲的C语言 1973年(初) -> C语言主体完成, 重写了UNIX操作系统, 随着UN ...

  2. 【面向对象】面向对象程序设计测试题1-Java语言的发展与特性测试题

    Test1:Java语言的发展与特性测试题 问题 1 Java 是由 Sun Microsystems 公司于 1995 年推出的一门面向对象程序设计语言. 答案: 对 问题 2 自2010年Orac ...

  3. iar环境下c语言编程,c语言_源代码-iar环境配置.pdf

    c语言_源代码-iar环境配置 欢迎光临我的博客:/mikehendry 其实,IAR 编译环境的配置是相当重要的,没配置正确或者不符合自己的习惯的话,使用起来就会很麻烦.下面 我根据网上的经验和资料 ...

  4. c语言while求a和b的和程序,数据结构实验1_C语言_输入集合A和B求并集、交集、差集(while +...

    数据结构实验1_C语言_输入集合A和B求并集.交集.差集(while + 数据结构实验1_C语言_输入集合A和B求并集.交集.差集(while + switch + 功能函数)) 实验1 (1)实验目 ...

  5. python百度百科-Python语言的发展简史

    本文主要向大家介绍了Python语言的发展简史,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. Python是我喜欢的语言,简洁.优美.易用.前两天,我很激昂地向朋友宣传Pytho ...

  6. c语言考试排座位系统源程序,c语言_排考场座位问题:.doc

    c语言_排考场座位问题: ④排考场座位问题:假设考场有8×8的座位,每当一个考生进入考场就为他安排座位.主界面如下:请输入选项(1-4)1?设定考场座位2?取消考场座位3?显示某座位考生信息4?查找学 ...

  7. c语言游戏经典案例,C语言_编游戏案例精编.doc

    C语言_编游戏案例精编 C语言_编游戏案例精编 C语言 编游戏案例精编 案例一 贪吃蛇游戏 案例二 计算器 案例三 黑白棋游戏 案例四 迷宫问题 案例五 扫地雷游戏 案例六 速算24 案例七 数据结构 ...

  8. 不足100克按100克C语言,C语言_第3章.ppt

    C语言_第3章 C语言的语句可分为以下四类: 简单语句 空语句 复合语句 流程控制语句 三.复合语句用一对花括号,把若干条语句括起来,就形成了一条复合语句.形式如下: {[内部数据描述语句] 语句1: ...

  9. C语言的发展及其特点

    C语言是国际上广泛流行的计算机高级语言. C语言的祖先是BCPL语言.1967年英国剑桥大学的Martin Richards推出了没有类型的BCPL(Basic Combined Programmin ...

  10. C++的特点,及对C语言的发展

    一.C++的特点,及对C语言的发展 1.保留了C语言原有的优点,与C语言兼容: 2.增加了面向对象的机制"类class",类(calss)为C++重要的数据类型,可以实现面向对象时 ...

最新文章

  1. Linux之SSH协议知识点总结
  2. 如何在VB例程中接收自定义消息
  3. 成功解决利用pandas的read_csv函数读取csv文件的时候出现中文乱码问题
  4. 比较全的 POM.xml
  5. linux中重定向学习总结
  6. 阅读“CodeIgniter中国》文档首页》常规主题》安全”之抄录
  7. linux 7修改yum源,CentOS 7修改yum源为阿里源
  8. orm设置bool型 python_Python SQLAlchemy入门教程
  9. mysql 5.7.24没有my.cnf_Linux上安装设置mysql 5.7.24 無玑小姐
  10. 1.6_quick_sort_快速排序
  11. 金融评分卡项目—9.违约预测模型的后续工作
  12. 2022-2028全球民宿行业调研及趋势分析报告
  13. golang对接paypal支付
  14. 苹果系统中国日历服务器,ios日历中国节日不见了(2021年苹果日历订阅地址)...
  15. MySQL 自联结 自连接
  16. idea 流程图出现 Condition \n
  17. 计算机类部分核心期刊投稿经验
  18. PyTorch安装教程(最简单方法)
  19. 2021年河南高考--各高校在河南录取分数线预测(本科一批——文科)
  20. 就大学生对网络舆情态度的调查

热门文章

  1. 微波雷达感应开关,雷达感应智能模块,照明节能环保技术应用
  2. T1-商贸宝 将辅助单位零售价更新为基本单位零售价*换算率
  3. 微信小程序怎么开店?怎么开一个小程序店铺
  4. java application.doevents_Application.DoEvents的用法
  5. 介绍html5ppt模板,html5简单介绍.ppt
  6. 网络广告的发布渠道和方式
  7. 如何用python计算年龄_python根据出生日期计算年龄的代码
  8. 【snipaste下载和快捷键的修改】
  9. snipaste截图软件安装各种问题解决办法
  10. 2018年湘潭大学程序设计竞赛 E 吃货