我们有一台服务器提供的服务主要是以动态页面为主,静态页面都是固定的内容平时更新的很少,最近这台服务器的应用升级到了新版本访问量增大了不少,随之的问题就来了,最近每天一到9点负载就超过警戒值,然后负载持续升高,load的值最高到100左右,这种情况一直会持续到12点,一过12点负载马上降低到5以下。
  
   通过分析网络连接发现并没有攻击的迹象,基本都是正常的访问。后来开始考虑是否是硬件性能造成的,查看 cpu 内存和磁盘io的问题,观察了一段时间后发现这几个设备的压力确实增大了,但却没到不能承受的地步。后来我开始对nginx的访问日志开始分析,集中分析9~12点的访问情况。
   
   经过分析发现有10多个ip的请求量在9点突然增加,到11点半以后请求数就将的很低了。而且他们的请求基本都是静态请求。我开始的时候怀疑是攻击但是又一想,会不会这几个ip是我们的CDN提供商的地址,于是马上联系CDN的技术支持,一查果然这几个ip都是他们分布在全国各地的服务器的ip,仔细询问后才知道。
  
  他们现在服务器的回源机制是分散回源,也就是说全国各地的服务器每隔一段时间后会自己去我们的服务器上检查更新。可能最近有过改动所以这些服务器都在9点到10点之间一起去那台服务器上检查更新。结果就是那些ip访问量激增... 我又询问了下他们回源的间隔时间,工程师跟我说现在是定在3小时。我当时一愣 每隔三小时全国几十台服务器都去我们那台服务器上查一遍,负载能不高么...
  
  立即让他们修改回源策略,因为我们的静态内容很久才会更新一次,而且每次更新都是手动更新,平时基本用不着更新,所以也用不着cdn的服务器总是去检查。
  
  开始对回源的时间和回源方式与CDN的工程师讨论,最后的解决方法是,在所有CDN的服务器里找出三台来做回源点,其他的机器都去这三台服务器上去检查更新,
而这三台服务器每隔三天会到我们的服务器上检查更新。确定了之后,就让他们的工程师去改策略了。不一会儿他们说改好了,但要等第二天才能生效,让我等到时候看效果。
  
  到了第二天9点,果然Nagios 没有报警,系统load值正常直到每天中午 访问最高的时候才有一点高,看来新改的策略生效了。从日志上看 CDN的那几个地址的访问量也不那么高了。
  
  CDN本来是给我们的网站加速的,但是有时会因为不合适的回源策略给服务器带来负担,只有选择正确的策略才能给自己的网站带来更高的访问效率!
希望这篇文章对大家有所帮助  ^_^

https://blog.csdn.net/longxingzhiwen/article/details/55520639

别让CDN的回源把你的服务器拖垮,采用正确的回源策略的更多相关文章

  1. Java并发包源码学习之线程池(一)ThreadPoolExecutor源码分析

    Java中使用线程池技术一般都是使用Executors这个工厂类,它提供了非常简单方法来创建各种类型的线程池: public static ExecutorService newFixedThread ...

  2. Java并发包源码学习之AQS框架(四)AbstractQueuedSynchronizer源码分析

    经过前面几篇文章的铺垫,今天我们终于要看看AQS的庐山真面目了,建议第一次看AbstractQueuedSynchronizer 类源码的朋友可以先看下我前面几篇文章: <Java并发包源码学习 ...

  3. 为SRS流媒体服务器添加HLS加密功能(附源码)

    为SRS流媒体服务器添加HLS加密功能(附源码) 之前测试使用过nginx的HLS加密功能,会使用到一个叫做nginx-rtmp-module的插件,但此插件很久不更新了,网上搜索到一个中国制造的叫做 ...

  4. [源码]一键获取windows系统登陆密码vc6版源码

    [源码]一键获取windows系统登陆密码vc6版源码支持:XP/2000/2003/WIN7/2008等 此版本编译出来的程序体积较小几十KB... 而vs版则1点几M,体积整整大了2-30倍对某些 ...

  5. 查看和调试Qt源码(动态编译的QT也可进入源码)good

    简述 在调试程序的时候,有时需要调试进入 Qt 源码,这不仅有利于我们了解内部实现机制,而且对于解决一些隐蔽性问题很有帮助. 都知道 F11 是“单步进入”,可是在调试的过程中,按下 F11 却无法进 ...

  6. pdb 源码索引符号服务器创建过程

    pdb是调试程序必不可少的东西,它保存着一个exe或dll的调试信息,对pdb进行源码索引可以快速找到软件对应该版本的代码,本文以subversion版本控制服务器进行介绍 一.需要安装的软件 win ...

  7. 如何发布二次开发后的openfire源码到linux服务器中

    这篇文章是在你已经down了openfire的源码,然后在本地跑起来了,再然后开发了一个自己的插件,想要发布到服务器上.ok这时候出现了一个问题,怎么才能发布到服务器上呢?别急往下看: 1.运行ant ...

  8. P1217 [USACO1.5]回文质数 Prime Palindromes(求100000000内的回文素数)

    P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找 ...

  9. Spring源码分析之IOC的三种常见用法及源码实现(二)

    Spring源码分析之IOC的三种常见用法及源码实现(二) 回顾上文 我们研究的是 AnnotationConfigApplicationContext annotationConfigApplica ...

随机推荐

  1. APTM敏捷性能测试模型

    随着应用系统的日趋复杂,仅在系统测试和验收测试阶段执行性能测试已经不能满足迟早发现和解决系统性能瓶颈的要求,Connie Smith博士和Lloyd Winlliams博士在他们提出 的软件性能工程( ...

  2. WebApi发送HTML表单数据:文件上传与多部分MIME

    5.3 Sending HTML Form Data5.3 发送HTML表单数据(2) 本文引自:http://www.cnblogs.com/r01cn/archive/2012/12/20/282 ...

  3. netty学习2

    一.Netty分层设计 Netty 采用了比较典型的三层网络架构进行设计,逻辑架构图如下所示: #第一层,Reactor 通信调度层,它由一系列辅助类完成,包括 Reactor 线程 NioEvent ...

  4. SQL Server中误删除数据的恢复

    SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可.但是,这个恢复需要有两个前提条件: 1. 至少有一个误删除之前的数据库完全备份. 2. 数据库的恢复模式(Recovery m ...

  5. 使用Axis2创建Web Service

    Axis2是新一代Web Service开发工具,目前最新版本是1.5.本文主要介绍如何用Axis2创建Web Service. 首先下载二进制包和war包,将war包复制到Tomcat的webapp ...

  6. 全民nib

    1.为任何组件创建nib文件 那么如何通过XIB来创建自己的个性化的class呢. 1.Add----New Filss---Cocoa Touch Classes---Object-C  Class ...

  7. hibernate 学习 一 基本概念

    1: Hibernate对JDBC进行封装,以面向对象的方式对关系型数据库进行操作. 2:  Hibernate的配置文件: hibernate.properties  或者  hibernate.c ...

  8. linux命令:wc命令

    Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...

  9. 【223】◀▶ IDL HDF 文件操作说明

    参考:I/O - HDF Routines —— HDF 操作函数 01   HDF_SD_START 打开一个 SDS 模式的 HDF 文件. 02   HDF_SD_END 关闭一个 SDS 模式 ...

  10. 20个Flutter实例视频教程-第04节: 不规则底部工具栏制作-2

    视频地址: https://www.bilibili.com/video/av39709290/?p=4 博客地址: https://jspang.com/post/flutterDemo.html# ...