知识大全 性能瓶颈诊断与初步调优

Posted

篇首语:你无法叫醒一个装睡的人,也无法感动一个不爱你的人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 性能瓶颈诊断与初步调优相关的知识,希望对你有一定的参考价值。

    服务端的要处理的请求越多 无疑服务端的压力也就越大 尤其是有些请求需要访问一些比较昂贵的资源 例如数据库 服务端的文件等 但是我们必须知道 在到达服务端的请求中 有些请求时我们希望的 例如网站的用户的请求 有些请求其实是不必要 甚至是我们不想要的 为此 我们要避免这样的请求 节省服务端的资源 从而提高性能     搜索引擎    首先来看看有关搜索引擎的问题     然后搜索引擎爬到我们的站点是一件好的事情 很多的SEO可以进行 推广站点 同时 在站点中 有些文件或者资源比较的私密 或者我们不希望被搜索引擎请求和收录的 因为每次搜索引擎在请求这些资源的时候 就是发送请求到我们的站点服务器 势必会加重服务器的负载     不需要被搜索引擎请求的文件一般如下            图片资源           Js脚本 css等           一些需要身份验证或者授权才能看的页面(如果页面需要验证之后才能看 搜索引擎收录了也作用不大)    我们可以设置一下 告诉搜索引擎的蜘蛛程序如何爬我们的站点     步骤如下            在站点的根目录下面 创建一个robots txt的文件            写入文件 如果我们希望阻止所有的搜索引擎来爬我们的站点的页面 那么就可以在文件中写入下面的配置     User agent: *    Disallow: /    如果希望阻止搜索引擎爬某个文件夹 可以配置如下     User agent: *    Disallow: /images/    Disallow: /js/    Disallow: /css/    Disallow: /private/    更有趣的是 对于某些搜索引擎 我们还可以改变他们的蜘蛛程序爬我们站点的频率 设置如下     User agent: *    Crawl delay:     大家可以去上网找下一些如何影响Google 百度等蜘蛛程序的设置     热链接问题    就是在A网站上面显示一个来自B网站的图片链接 例如我们在自己的站点上面有一个链接如下 <img src= /> 那么在别人在浏览我们的站点的时候 就回去别人的那个站点()去请求这个图片 那么势必会消耗他们的服务器的资源 发过来 如果别人在他们的站点上采用了我们的图片或者其他的链接资料 那么用户在浏览别人的站点的时候就会消耗我们站点的服务端资源和带宽     为一个组件就可以阻止这种情况的发生     aspx?tabid= &i= &g= 大家去看看     验证码(CAPTCHA)    我们常常在站点中加入一些验证码的功能来防止网络注册机 一般是生成一张有文字的图片 然后根据验证用户输入的文字和图片中的文字是否一样来判断此时的用户是人还是注册机     通过验证码阻止了注册机随意的消耗站点资源(如果没有验证码 注册机可以不断的注册信息 大小服务器和数据库资源 而且产生很多的垃圾数据)     我们自己写生成验证码的程序 一般通过GDI+来做 同时也可以采用一些第三方的库实现 例如 reCAPTCHA: 大家上网找下 很多的     网络刮刀(Scrapers)与Dos    这个问题必须引起重视 如果我们的站点上面有很多的有用的信息 那么别人可能就可能开发一个程序来到我们的站点抓取信息 然后把这些内容放到自己的站点上面 例如 很多的内容型的站点每天都从博客园的首页上面来抓取信息 然后放到他们的站点上 增加他们的访问量     本来站点被搜索引擎抓就有点消耗性能了 如果还被很多的这样的网络刮刀来抓内容 对站点的性能影响可想而知     如果那些网络刮刀程序的的IP地址变化不频繁 而且请求我们站点的频率比较的由规律 那么我们就可以采用一些代码的方式来防止这样的请求 例如 我们可以监测 同一个IP是否在 min之内发送了 个请求 如果是 我们就推测 可能是别人在抓我们的站点内容 我们就拒绝这个IP的请求     当然了 上面只是一些简单的方法 对于一些复杂的Dos攻击 上面的监测代码基本没有作用 因为Dos攻击中 攻击的IP地址是变化的     下面我们就写一些代码来防止简单的网络刮刀程序和简单的Dos攻击 基本的思想就是 如果在给定的时间段内 如果某个用户的请求很多 超过了一定的数量 那么我们就认为这个 用户 可能是网络刮刀程序 然后就拒绝下面的请求 一段时间之后 再次允许这个从这个IP发出的请求     下面的代码中 假设如果一个用户在 秒之内发出了 个请求 那么我们就认为这是网络刮刀程序或者是网站的攻击者 当然 我们还考虑这个发送请求的 用户 是否是搜索引擎的蜘蛛程序 (下面的代码只是简单作为演示 不是实际生产的代码 抛砖引玉)    private const int intervalSeconds = ;    private const int maxRequestsInInterval = ;    如果认为这个 用户 是攻击者 那么我们就阻止用户的请求 阻止时间是 秒    private const int blockedPeriodSeconds = ;    下面 我们创建一个类来描述一个访问者的信息 如下     代码    private class VisitorInfo        public int nbrHits;    public bool blocked;    public VisitorInfo()        nbrHits = ;    blocked = false;            在BotDefence类中加入一个方法IsBotAttach来判断一个请求是否是攻击性的请求 如下     代码    public static bool IsDosAttack()        string visitorIP = HttpContext Current Request UserHostAddress;    VisitorInfo visitorInfo = (VisitorInfo)HttpContext Current Cache[visitorIP];    if (visitorInfo == null)        HttpContext Current Cache Insert(    visitorIP new VisitorInfo() null     DateTime Now AddSeconds(intervalSeconds)     System Web Caching Cache NoSlidingExpiration)         else        if (visitorInfo blocked)        return true;        visitorInfo nbrHits++;    if (visitorInfo nbrHits > maxRequestsInInterval)        visitorInfo blocked = true;    HttpContext Current Cache Insert(    visitorIP visitorInfo null     DateTime Now AddSeconds(blockedPeriodSeconds)     System Web Caching Cache NoSlidingExpiration)     return true;            return false;        上面的代码都是自解释的 很容易看懂 就不赘述了     当然了 上面的代码很简单 我们可以保存每个请求IP的地址 然后分析 相关的方法网络上面有很多 大家自己找!    本篇就到这里了 下一章就详细的讲述如何解决内存的性能瓶颈 敬请关注 cha138/Article/program/net/201311/12823

相关参考

知识大全 Java程序性能优化-木桶原理与性能瓶颈

Java程序性能优化-木桶原理与性能瓶颈  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &nbs

知识大全 Hibernate性能调优

Hibernate性能调优  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  inverse=?  

知识大全 MySQL 性能调优

MySQL性能调优  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Hibernate性能调优[2]

Hibernate性能调优[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hibernat

知识大全 Hibernate性能调优[1]

Hibernate性能调优[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  inverse=

知识大全 Java程序性能优化-设计调优

Java程序性能优化-设计调优  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   性能调

知识大全 Oracle性能调优思路

Oracle性能调优思路  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  问oracle进程内存占

知识大全 struts2项目性能调优三步曲(一)

  前一段时间有反映说是一个使用了struts的生产系统的页面显示速度太慢登录后发现确实如此于是进行了一番性能调优的研究和测试  一根据struts官方的性能调优说明进行了一些参数的修改  //str

知识大全 Java程序性能优化-代码调优

Java程序性能优化-代码调优  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   代码调

知识大全 Java程序性能优化-JVM调优

Java程序性能优化-JVM调优  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   JV