Base64编码导致服务器崩溃


  我之前提到:“使用了文本来替代二进制的协议,其中就用了base64对文本进行编码。在《一个更加的KISS设计》一文中谈到。

  结果,这个base64编码的代码在Redhat平台上测试正常,服务器正式上线的时候却崩溃了。很是郁闷~,,大家都抱怨我所谓KISS的设计。先写这么多,清醒点,再写这个话题,

  续....,在我的设计中使用文本协议来取代二进制协议,并将敏感信息进行Base64编码,尽量将协议的结构扁平化,则无疑是最符合

KISS的设计原则的。服务器崩溃的原因是,我们使用了一套不标准的手工打造的Base64加解码函,而手工打造的加解码函数虽然在windows,Redhat Linux平台下测试成功。但是却没有在Solarix平台下测试过。

  根据我们的跟踪崩溃代码函数

int CBase64::Base64Encode(char * base64code, const char * src, int src_len)

  中发现,崩溃的地方定位到char类型到unsigned long*类型的强转和位移操作,估计是Sun的CPU和Intel的CPU的高端序和低端序CPU字节转换的问题导致崩溃。之后我们再也没有继续跟踪下去。

  我上网找了一份标准的Base64编码函数取代了Base64Encode从而解决了问题。既然问题出现了。那么该总结一下问题出现的原因来杜绝以后发生类似的问题。如果我们的服务器老是崩溃,那么谁还会使用我们的服务呢?

  首先,从技术层面来说,我的设计是没有任何问题的,这是一个相当简洁而干净的设计。从软件工程上看来,是由于我们的测试没有做到位。换句话也不是我们的测试没有做到位,而是我们没有条件去做测试(我们的测试和开发机器是Linux,我们没有Solarix的测试环境,而我们的服务器上线的环境是Solarix)。

  由于没有这种环境,所以,同事都倾向于使用一些,目前已经运行良好的设计,比如之前的二进制协议。虽然它设计得很复杂,很难维护,至少它工作得很好。从某种它也符合KISS的设计原则。KISS中有一条原则:“不要优化一个正在工作的系统”。

  对比,同样是UNIX之父Ken设计的两个操作系统:UNIX和Plan9,UNIX取得了巨大的成功,UNIX系统为Ken赢得了计算机中的诺贝尔奖——图灵奖。但是Plan9系统确就显得默默无闻了。但从设计来说,Plan9比UNIX更加UNIX,设计更为KISS和优雅。Plan9的特性和能力纷纷被UNIX和UNIX的各种分支,Linux,FreeBSD模仿。那为什么Plan9没有取得成功?

  《Unix编程艺术》已经给出了答案:

  当软件设计师雄心勃勃的想要设计一个更加强大和优秀的项目的时候:不要忘了,市场会偏好目前已经运行良好的系统,虽然它嘎嘎作响。

  所以,总的来说,并不是因为我遵守KISS而导致服务器崩溃。也许导致服务器崩溃的原因并不是我遵守了KISS,恰恰相反,也许原因是我做得还不够KISS!




Base64编码导致服务器崩溃相关推荐

  1. 速修复!OpenSSL 披露DoS 和证书验证高危漏洞,可导致服务器崩溃

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 刚刚,OpenSSL 项目发布安全公告指出,OpenSSL 产品中存在两个漏洞(CVE-2021-3449和CVE-2021-3450 ...

  2. 最新pvz服务器补偿码,阴阳师:补偿来了!大量活动导致服务器崩溃,现已修复且下发补偿...

    原标题:阴阳师:补偿来了!大量活动导致服务器崩溃,现已修复且下发补偿 阴阳师每周三的日常更新可以说玩家们最为期待的,毕竟所有的活动都是在周三更新日上新,而本周三上线的新活动可以说是非常多的,新SP降临 ...

  3. 【北亚数据恢复案例】raid0硬盘故障导致服务器崩溃的数据恢复

    服务器数据恢复环境: 2块硬盘 raid0 故障: 其中一块硬盘出现故障导致服务器崩溃,管理员联系北亚数据恢复中心进行数据恢复. 服务器数据恢复分析: 通过服务器管理员的简单介绍,北亚数据恢复工程师初 ...

  4. 爬虫 网站服务器瘫痪,如何解决搜索爬虫高频次抓取导致服务器崩溃的问题

    如何解决搜索爬虫高频次抓取导致服务器崩溃的问题 首先声明一点,如果网站能够承受爬虫的高频次访问,那是一件好事,这样有利于网站页面收录,提升网站来自搜索的访问量.但一旦承受不了,我们可以进行如下的操作. ...

  5. 【北亚数据恢复】infortrend服务器raid6硬盘离线后进行上线操作导致服务器崩溃的数据恢复

    环境: 服务器型号:infortrend ESDS-S12F-G1440: 12块单盘容量为2TB的硬盘组成raid6磁盘阵列: 阵列上有一个lun,映射到WINDOWS系统上使用: 在WINDOWS ...

  6. 导致服务器崩溃的原因有哪些

    1.访问峰值或请求超过服务器的承受力 企业平时租用和托管的服务器是有峰值承受限制的,一旦超过了该承受能力,就会导致服务器瘫痪,网站访问不了.而出现这样的直接原因就是在一段时间内,网站的访问量巨大,已经 ...

  7. 阴阳师服务器异常修复,阴阳师大量活动导致服务器崩溃 现已修复且下发补偿...

    阴阳师每周三的日常更新可以说玩家们最为期待的,毕竟所有的活动都是在周三更新日上新,而本周三上线的新活动可以说是非常多的,新SP降临.绘卷开启.万事屋活动开启等等活动,由于种种原因,导致了游戏的崩溃. ...

  8. 【服务器数据恢复】硬盘坏道和不稳定扇区导致服务器崩溃的数据恢复案例

    服务器故障: 一台装有20块硬盘的服务器在运行过程中上层业务突然崩溃,服务器管理员检查服务器发现服务器崩溃的原因是3个硬盘离线.服务器管理员将服务器内的所有硬盘按照现有盘序从槽位取出后携带硬盘来到我们 ...

  9. 上古世纪服务器不稳定,《上古世纪》经典服火爆开服,玩家过多竟导致服务器崩溃!...

    当初<魔兽世界>上线之时,官方明显错估了玩家的热情,蜂拥而至的玩家,直接导致了服务器的雪崩,引发过不少玩家的吐槽.但吐槽归吐槽,游戏还是要玩的.这种情况正如现在的<上古世纪>. ...

最新文章

  1. 浅谈ARP病毒的清除与预防
  2. 性能调优某大型银行的一个系统过程跟踪和记录
  3. 除了Kaggle,还有哪些高质量的数据科学竞赛平台?
  4. awk的sub函数和gsub函数的用法
  5. python抽卡游戏_【python爬虫】原神公测预抽卡活动自动化抽卡脚本(一小时免登陆)...
  6. 大数——大数阶乘(hdu1042)
  7. 插入数据前查询是否存在_异步检测数据是否存在的修订
  8. springboot事物注解不生效_springboot事务不生效的几种解决方案
  9. 【十六】Jmeter:目录介绍
  10. java ssh环境 eclipse_SSH在eclipse中环境搭建
  11. 人工智能时代,语音识别领域前景广阔
  12. 淘宝开源的代码质量检测工具,太强大了!!
  13. zbar扫描无法近距离扫码_云值守:扫码购使用流程是怎样的?带来怎样的影响?...
  14. ddrelease64 黑苹果_GitHub - wangtufly/Precision5510-High-Sierra: DELL Precision5510 10.13.X 黑苹果教程...
  15. 动软代码生成器-模板修改,模型修改
  16. 遗传算法的基本原理和matlab实现
  17. Gradle基础教程
  18. qt:cannot open C:\Users\某某某\AppData\Local\Temp\main.obj.15576.16.jom for write
  19. vue中使用vue-waterfall2来实现瀑布流
  20. it行业计算机考试认证全集

热门文章

  1. [WOJ4379] 飘雪圣域 [主席树]
  2. vue3.0 创建 乾坤qiankun 微前端
  3. springmvc03
  4. (转帖)HashMap循环遍历的方式
  5. 【转】IE主页无法修改,IE设置无法保存解决方案
  6. QQ、MSN签名精选
  7. 风月几曾冷去   文 / 柳低金缕
  8. 行业风向:国产新能源汽车如何“扬帆起航”闯世界?
  9. 华为计算机怎么恢复出厂设置密码,华为手机怎么恢复出厂设置?华为手机出厂设置密码是多少【图解】...
  10. linux服务器下宝塔面板的卸载