好久不写技术文章了,越发的认为单纯的讲技术没啥意思。怪不得知乎越来越火。由于大家都喜欢看故事。不喜欢硬生生的技术文章。笔者今天就来就给大家讲故事:)

近期站点压力突然增大,把带宽都占满了,訪问网页发现非常的慢。打开页面的速度也奇慢大概要十几秒。

这样的情况还是第一次遇到。感觉不是被攻击了就是被攻击了!以下是站点的流量截图,一共1M的带宽在15点左右的时候瞬间慢了。然后就是持续的在峰值左右徘徊。

当时的想法是莫非站点的訪问量到达了一定程度要添加带宽了?可是通过看站点的统计数据,訪问的人数并没有明显的添加。这时自己更加坚定一定是被攻击了!

SSH连上server查看日志,竟然连SSH都特别慢。这让我更加坚定自己的推断,妈蛋绝对被攻击了。可是后台日志没有什么明显的错误信息。可是站点还是特别卡,一直持续了两个小时。一定是自己忽略了什么东西。既然是变慢。首先看CPU,内存啥的。于是查看了一下server的CPU和内存,没有啥问题,就是带宽变满了。

看来是大量的訪问造成的。重新认真的查看了日志,这次看的是tomcat的access日志,这下发现了问题。非常多页面在同一时间。或者说基本上在同一时间被訪问了多次。

假设说整个日志中有那么几条是这样的反复的倒还能够理解,可能是用户打不开页面触发了浏览器的刷新操作,可是大面积的都是这样的反复的訪问请求肯定就不正常了。

检查了一下自己的前台代码看看是否是自己的JS写错了,导致client同一时间发起多次请求。

检查了半天未果。

到这里问题算是找到了:多次请求导致带宽不够用。可是原因是什么呢?继续讲故事……

想到自己在配置站点的时候用到了Nginx做反向代理,突然就感觉会不会是Nginx的配置有什么问题呢?检查了一遍Nginx的配置,没发现啥问题。简单的转向再写错就不活了。莫非反复的请求本身不是server配置的问题?于是检查了Nginx的accesslog,令人吃惊的是在Nginx的log其中相同的是反复的訪问情况。

这就证明了不是我配置的问题,由于Access log足以证明在请求到达server之前就是多次请求。难道真的有人攻击?于是開始查找Nginx的log其中反复的IP。果然让我找到了一些反复的IP,这些IP都是72.21.217.*这个网段的。到这里我知道真相距离我越来越近了。去网上搜索的了一下这个网段的IP更是让我大吃一惊。

原来这些IP都是来自于亚马逊的爬虫,顿时恍然大悟,这一切都是由于前几天在网页上加上了亚马逊的广告。联系了亚马逊的客服人员,细致询问了亚马逊是否会索引广告所在的页面,得到的回答是肯定的。到此为止一切真相大白。

原来亚马逊为了提供更好的广告质量。索引了有广告的页面,造成的后果就是每当用户訪问一个带有广告的页面他的蜘蛛就会爬取这个页面,所以站点压力肯定增大喽。

知道了原因以下就是採取措施来避免了。改动Nginx配置非常轻松的屏蔽掉亚马逊的IP。

location /{
if ($http_x_forwarded_for ~ "72.21.217.*"){
return 503;
}
index index.jsp;
proxy_pass http://127.0.0.1:8080;
}

然后reload Nginx的配置,站点一切恢复如初。

总结:一切都有因果,不论什么事情绝不是凭空产生的,仅仅要追根溯源耐心寻找就一定能找出事实的真相。

nginx+tomcat反复请求的更多相关文章

  1. 通过Nginx+tomcat+redis实现反向代理 、负载均衡及session同步

    一直对于负载均衡比较陌生,今天尝试着去了解了一下,并做了一个小的实验,对于这个概念有一些认识,在此做一个简单的总结 什么是负载均衡 负载均衡,英文 名称为Load Balance,指由多台服务器以对称 ...

  2. 【转】Nginx+Tomcat+Memcached集群Session共享

    cookie是怎样工作的? 例 如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名 是“Michael J ...

  3. nginx之 nginx + tomcat + redis 负载均衡且session一致性

    说明: 本文描述的是 nginx + tomcat + redis 实现应用负载均衡且满足session一致性,从安装到配置的全部过程,供大家学习!nginx 代理服务器ip: 10.219.24.2 ...

  4. Redhat/CentOS7-环境虚拟机简单搭建Nginx+Tomcat负载均衡集群

    Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,是开发和调试JSP程序的首选.由于Tomcat处理静态HTML的能力运不及Apache或者Nginx,所以Tomcat ...

  5. Nginx + Tomcat Windows下的负载均衡配置

     Nginx + Tomcat Windows下的负载均衡配置 一.为什么需要对Tomcat服务器做负载均衡?    Tomcat服务器作为一个Web服务器,其并发数在300-500之间,如果超过50 ...

  6. HappyAA服务器部署笔记1(nginx+tomcat的安装与配置)

    这是本人的服务器部署笔记.文章名称叫"部署笔记1"的原因是之后我对这个进行了改进之后,会有"部署笔记2","部署笔记3"...循序渐进,估计 ...

  7. nginx + tomcat配置负载均衡

    目标:Nginx做为HttpServer,连接多个tomcat应用实例,进行负载均衡. 注:本例程以一台机器为例子,即同一台机器上装一个nginx和2个Tomcat且安装了JDK1.7. 1.安装Ng ...

  8. 搭建nginx+tomcat+Java的负载均衡环境

    转载  未测 供参考 另外这篇文章也不错.http://blog.csdn.net/wang379275614/article/details/47778201 一.简介: Tomcat在高并发环境下 ...

  9. Nginx+Tomcat构建动、静分离WEB架构

    一.简介 二.环境介绍 三.后端服务器安装配置 四.安装论坛 五.安装配置前端Nginx服务器 六.验证服务 一.Tomcat简介 Tomcat是Apache 软件基金会(Apache Softwar ...

随机推荐

  1. Java&Xml教程(一)简介

    XML是广泛用于数据传输和存储的技术.Java语言提供个各种各样的API来解析XML,例如DOM.SAX.StAX.JAXB.也还有一些其他的API用于解析XML,例如JDOM.本教程的目的是探索使用 ...

  2. eclipse整合maven下载jar包速度慢问题解决

    引用:http://blog.csdn.net/u010154380/article/details/70339538 开发过程中在pom.xml中添加pom的时候,默认是需要从中央仓库中下载,但是下 ...

  3. Ajax——异步基础知识(一)

    基础概念 1.异步请求可以做到偷偷向服务器发送请求,而页面却不刷新 2.get异步请求传递参数是通过url追加键值对的方式 3.post异步请求比较特殊,需要设置请求的类型 User-Agent:浏览 ...

  4. JS——“==”与“===”

    ==: 两个等于号只是比较两个变量的值 var n1 = 1; var n2 = "1"; alert(n1 == n2);//返回true ===: 三个等于号不仅比较值而且比较 ...

  5. mounted钩子问题

    recommend.vue <script type="text/ecmascript-6"> import Slider from 'base/slider/slid ...

  6. (转)分布式文件存储FastDFS(三)FastDFS配置

    http://blog.csdn.net/xingjiarong/article/details/50559768 在上一节中我们一起搭建了一个单节点的FastDFS系统,但是仅仅将系统搭建起来是远远 ...

  7. HyperLink的使用

    <asp:HyperLink ID="Hyperlink2" NavigateUrl='<%# string.Format("AddOrganizition. ...

  8. ubuntu.16.04 安装.net core记录

    jack@ubuntu:~$ sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotne ...

  9. VMware或者KVM克隆的虚拟机网卡无法启动

    在VMware里克隆出来的CentOS Linux.. ifconfig...没有看到eth0..然后重启网卡又报下面错误. 故障现象: service network restartShutting ...

  10. Java中“==”、“compareTo()”和“equals()”的区别

    在比较两个对象或者数据大小的时候,经常会用到==.compareTo()和equals(),尤其是在接入了Comparable接口后重写compareTo方法等场景,所以我们来理一下这三个的区别. 1 ...