秋色园引发CPU百分百命案的事件分析与总结

前几天写过一篇文章:秋色园CPU百分百的原因分析

由于上文有介绍了一些前因后果和中间过程及基础的内容,所以怎么发生的,中间大体做了什么检测,就不重复写了,下面写一些事情的后续发展。


在解决完上文说的,搜索引擎引发的命案后,有网友给秋色园做了下压力测试,链接数直上1-2千,导致CPU挂了。

一:URL缓存可能存在的攻击命案:

 

当时我一路正远程用SQL事件探查器和性能计数器观看着,发现IIS并发链接数直接上千,不停的产生SQL语句, 导致数据库占用CPU直接满了,网站挂了打不开。

从这里,我发现了系统上存在一些逻辑上的不和谐:

比如:http://www.cyqdata.com/tech/cate-19,秋色园网站的缓存,基本上是基于URL来缓存的。

而对方发起的压力测试,则并发产生了数百个: http://www.cyqdata.com/tech/cate-19-Nxxxxxxx这样的网址。

由于URL的变化,所以不停的产生新的页面查询,造成数据库不断的查询,持续的并发查询数据库CPU直接满了,挂了。

对于这个问题,我进行了全面的URL参数处理,在未读取数据库之前,就判断参数的合法性,和逻辑上的调整,把跳转检测的函数放在前面,其它读取的放后面,这样无效的地址也不会引发不必要的数据库语句查询或逻辑。(全站有好几个,都存在这种情况,都同样的方式处理了)。

根据这个规则,大伙就要注意了,根据URL地址缓存的逻辑,或动态生成静态页面逻辑的,还是要细心的检测一下。 

 

二:DZ论坛的小检查

 

现在有好多论坛,好多个人站都运行在VPS或虚拟机上,我跑过去看了下,试图想找到一些动态处理的页面,来进行下压力测试,结果发现除了登陆发贴等少数动态的,几乎全站静态。

通常的说,搜索这块,通常都是动态的,而且也比较消耗时间的,我一搜,发现,真聪明,DZ直接引用了Soso的搜索服务,把压力转移了。

 

 

三:网站并发压力测试工具

 

好多人问题是用的什么工具,网友用的是Apache自带的ab.exe,只要安装了Apache,目录下就有这工具了,一条简单的命令行就能简单的对某网址进行压力测试。

不过有个限制,一般最多是64个并发,比在线并发测试网站默认提供的15个免费并发好多了,Linux下有几篇文章有说修改并发数的,却没找到在windows下怎么修改并发数上限的方法,有知道的说一声。

 

 

四:一个未知的线程死锁:

 

这个问题,在本地时测试时出现过几次,出现的时候,我也很积极的Dump,通过processxp工具也能看到2个线程各占20%,持续时间长,就是不下来,然后没有更多信息了。

Dump是个悲催的事,真心不擅长,来来回回几个命令,就是不见啥信息,几年前我Dump过一次,几年后,还是Dump在那水平,悲催的岁月,发现不了问题所在。

折腾许久许久后,放弃了,后来一直在大力重构,好多代码逻辑删除了,重写了。

之后,这问题也失踪了,许久也没再出现过,不知道是不是意外的存在被我删除的代码中。

 

 

 

五:系统磁盘空间不足引发的命案:

 

刚刚有微博用户给我留言,说秋色园打开报错,提示硬盘空间不足,我赶紧远程登陆看了一下,C盘只剩下128K,-_-.....

先临时清了点东西,出了一百多M,恢复了系统运行,然后找是谁吃了硬盘空间:

不看不知道,一看吓一跳,原来是IIS日志吃了近7个G的日志(VPS上一般C盘就10G)

我打开日志,看都写了啥日志。。一看吓傻了,都是压力测试时产生的请求,一个日志近500M。

根据这个情况,我在想,对于小站点,不断用多线程发送请求,造成日志快速增长,把对方空间给挤死,哈哈,好邪恶!!!

人生有两出悲剧,一者执意寻死,一者无力求生,你全包了。

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2013/03/26/2981082.html

时间: 2024-11-06 07:48:57

秋色园引发CPU百分百命案的事件分析与总结的相关文章

秋色园CPU高温优化-两天两夜吐血失败经验总结

前言:   前N天,一直在优化 秋色园 ,仍然纠结于access数据库锁问题,因为一旦被锁,只在网站涉及到读取数据库,基本上就不用打开了,下场仅有重启IIS.   为了解决这个并发锁问题,我是用心良苦,频繁出招,这些留下到"秋色园技术原理解析 系列"里写了.   过程:   这几天,对 秋色园 首页进程了极致优化,完全避开了Access数据库操作,利用Cookie+文本外置+后台线程,完全可以不理会数据库打开首页了,首页不用担心锁问题了.   经过重重优化,这几天没再发access锁住

服务器内存太小,伤不起![异常与应用程序池引发的连锁命案]

最近都在写 秋色园技术原理解析 文章,今天就写一篇散文,简述一下服务器内存太小引发的命案.   以前写文都排版,这篇就当散文了...写完就这样了,当然加黑加红还是给加了.   首先,我先上2张秋色园服务器当前进程及内存的图片:   1:进程   2:物理内存剩余   看完这两张图片,啥感觉?内存穷紧张!!!!   穷紧张不打紧,打紧的是比紧张还紧张的情况发生了,什么情况?   出事故了,应用程序池要产生回收动作了!!!!   先看一下应用程序池什么情况会产生回收动作?   1:IIS应用程序池里

随说秋色园从Access升迁到MSSQL过程

秋色园的运行环境概况: 目前运行在国外godaddy的虚拟主机的一个子目录中,数据库为Access.   随说Access分页:   1:top max(id) 在CYQ.Data 数据框架支持上Access时,以top max(id)为分页方式. 在秋色园没有多少文章的情况下,基本上维持着正常的秩序. 直到秋色园在进化版本时,多字段排序的情况出现,如:order by 字段1,字段2. 原始的 top max(id)已无法正常的显示分页的数据了.   2:not in top max(id)只

秋色园网站转移过程记录篇

前言: 复制代码 昨夜断网了,早上把长宽的工作人员叫到家里来检测才发现,原来到期了,要续费交钱了. 昨夜断网时,无聊中就看了下某网友的给的DLL里的关于数据层多数据库的实现,看到一个槽点,本来想写写. 今天发现秋色园4号(明天)就要过期了,VPS商同时也要回收旧机器,所以必须转移VPS到另一台去. 所以从下午2点开始折腾到4点,2小时算是折腾完了,因为感觉有些步骤每次转移都重复的一样,特此记录下过程. 复制代码 网站转移过程,大体过程如下: 一:机器的基础设置: 1:VPS重装系统2003,速度

秋色园QBlog技术原理解析:Web之页面处理-内容填充(八)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建

秋色园QBlog技术原理解析:Module之页面基类-生命周期流程(六)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4:  秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5:  秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍

秋色园QBlog技术原理解析:系列终结篇:最后的AOP策略(十九)

开篇闲话: 好几个月没写文章了,从9月15号发布新浪"微博粉丝精灵"V1.0后,持续的几个月都在折腾它,现在都折腾到V3.4版本了. 因此,本篇迟来了三个月了,同时,本篇也是本系列的最后一篇了,也是秋色园最后杀手锏,霸气总该是要外露的.   上节回顾: 上节  秋色园QBlog技术原理解析:性能优化篇:读写分离与文本数据库(十八), 秋色园 QBlog 将一些简单频繁的数据,借用文本外储,来分减一些压力,从而为并发降温,保障网站的顺利运行.   本节概要: 文本外储,在一定程序上解决了

秋色园QBlog技术原理解析:页面Post提交机制(十一)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建

秋色园QBlog技术原理解析:性能优化篇:字节、缓存、并发(十二)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建