nginx+tomcat反复请求

news/2024/7/19 9:35:37 标签: java, 运维, 爬虫

好久不写技术文章了,越发的认为单纯的讲技术没啥意思。

怪不得知乎越来越火,由于大家都喜欢看故事。不喜欢硬生生的技术文章。笔者今天就来就给大家讲故事:)

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

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


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

SSH连上server查看日志,竟然连SSH都特别慢,这让我更加坚定自己的推断,妈蛋绝对被攻击了。可是后台日志没有什么明显的错误信息。可是站点还是特别卡,一直持续了两个小时。一定是自己忽略了什么东西。

既然是变慢,首先看CPU,内存啥的。于是查看了一下server的CPU和内存。没有啥问题。就是带宽变满了。

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


假设说整个日志中有那么几条是这样的反复的倒还能够理解。可能是用户打不开页面触发了浏览器的刷新操作,可是大面积的都是这样的反复的訪问请求肯定就不正常了。检查了一下自己的前台代码看看是否是自己的JS写错了,导致client同一时间发起多次请求。

检查了半天未果。

到这里问题算是找到了:多次请求导致带宽不够用。

可是原因是什么呢?继续讲故事……

想到自己在配置站点的时候用到了Nginx做反向代理,突然就感觉会不会是Nginx的配置有什么问题呢?检查了一遍Nginx的配置,没发现啥问题。简单的转向再写错就不活了。莫非反复的请求本身不是server配置的问题?于是检查了Nginxaccesslog,令人吃惊的是在Nginxlog其中相同的是反复的訪问情况。这就证明了不是我配置的问题,由于Access log足以证明在请求到达server之前就是多次请求。难道真的有人攻击?于是開始查找Nginxlog其中反复的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的配置。站点一切恢复如初。


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

转载于:https://www.cnblogs.com/llguanli/p/7099506.html


http://www.niftyadmin.cn/n/1111181.html

相关文章

MySQL主从复制同步与读写分离

MySQL主从复制同步与读写分离前言一:主从复制因何产生与解决方法1.1:原因1.2:解决方法1.4:MySQL主从复制的类型1.5:主从复制的工作过程二:主从复制实操2.1:环境2.2:实验目的2.3&…

Servlet会话技术

对于Servlet的会话技术以前也专门找过资料学习过,但总是感觉似懂非懂,最近梳理了下各种概念,希望能与君共勉之 一、什么是会话 会话是指从用户打开浏览器访问一个网站直到关闭浏览器这整个过程称为一次会话 二、会话技术 http协议是无状态的&…

Ubuntu 16.04.2 安装Linux kernel 4.10 内核并解决 VMware 问题

http://www.linuxidc.com/Linux/2017-03/141456.htm转载于:https://www.cnblogs.com/zengkefu/p/7102733.html

西窗烛201806

2018/06/01 游园不值 [宋]叶绍翁 应怜屐齿映苍苔,小扣柴扉久不开。满园春色关不住,一枝红杏出墙来。 2018/06/04 道德经(第四十一) [周]老子 上士闻道,勤而行之;中士闻道,若存若亡;下…

在AIX中设置中文环境(转)

在AIX中设置中文环境(转)[more]环境 平台:RS/6000 软件版本: AIX 4.2 或更新版本 在AIX中使用中文有两种途径:第一是在安装AIX时选择中文语言,装好的系统自动显示中文(这种方法不推荐使用,它没有第二种方法…

MySQL5.5版本没有报错,MySQL5.7版本报错:java.lang.Exception: poolName=slaves, no valid pools

MySQL5.5版本没有报错,MySQL5.7版本报错:java.lang.Exception: poolNameslaves, no valid pools报错原因分析解决方案报错 报错现象描述: 在服务搭建完毕后,利用客户机连接amoeba服务器登录数据库,无法查看数据库内容…

中文乱码处理汇总

A.表单form提交 a1.post--->web容器默认的编码一般是iso8859-1,需要设置request请求及response响应编码保持一致 request.setCharacterEncoding(encoding); response.setContentType("text/html;charsetencoding); a2.get--->由于get请求参数是在请求行中…

MyEclipse如何安装egi插件及如何将github项目引入MyEclipse中

一.如何查看MyEclipse版本及Eclipse版本号 查看MyEclipse版本号:MyEclipse主界面的菜单栏的最左边“help”—>选择“About MyEclipse Enterprise Workbench”选项,如下图所示: 查看Eclipse版本号:在MyEclipse的安装目录下&…