一个应用上出现400响应码的请求增多,基本达到了千分之一,应用方请求我们分析原因。
首先看日志,检查400请求的ip的其它请求是否正常,排除伪造请求的攻击行为。发现用户的User-Agent分布正常,ip分布正常。所有400请求的响应
内容都是226字节,说明服务器返回给用户的内容是固定的。
400错误是用户请求错误,用户请求格式错误的原因基本可以分为两种,一种是因为网络通讯造成数据残缺,一种是违反了约定和数据格式或长度。
如果是自定义客户端,对协议的各种情况覆盖不完整,违反数据格式或长度的情况可能比较多,但是对于用户正常的通过浏览器访问的情况,违反
数据格式或长度的情况几率非常小。我们考虑数据超长的情况最可能的就是cookie超长,于是模拟了一个超长的cookie进行测试,浏览器虽然返回了
400响应码,但是content-length却是很大,包括了cookie的内容长度(apache的bug,现在已经升级到2.2.22解决了这个bug)。
于是怀疑是超时产生数据残缺引起的。
查看400的记录平均处理时间:
cat cookie_log|grep 'HTTP/1.1 \" 400 '|awk '{print $12}'|awk 'BEGIN{total=0;count=0} {total+=$1;count++} END{ print total/count}'
得到平均耗时为 6119.350ms.
查看前十万条记录平均耗时:
head -n100000 cookie_log|grep 'HTTP/1.1 \" 400 '|awk '{print $12}'|awk 'BEGIN{total=0;count=0} {total+=$1;count++} END{ print total/count}'
得到耗时为 48.325ms
说明400时平均耗时是正常的120多倍。
程序验证:
out.write("GET /testpath HTTP/1.1\r\n".getBytes());
out.flush();
Thread.sleep(30*1000); // 模拟超时
out.write(("Host: testhost\r\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: zh-cn,en-us;q=0.7,en;q=0.3\r\nAccept-Encoding: gzip, deflate\r\nConnection: keep-alive\r\nIf-Modified-Since: Thu, 27 Oct 2011 01:16:25 GMT\r\nCache-Control: max-age=0\r\n\r\n").getBytes());
out.flush();
得到如下响应:
HTTP/1.1 400 Bad Request
Date: Wed, 08 Feb 2012 08:36:52 GMT
Server: Apache
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head> <title>400 Bad Request</title> </head>
<body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br /> </p>
</body>
</html>
这个结果与线上情况非常吻合,所以基本怀疑是某些客户端发送请求时时间太长引起的。apache的处理时间是从收到第一个头开始( GET /xxxx \r\n),
无论该头正确与否,都开始计算处理时间,后面的所有内容接收都计入处理时间。
分享到:
相关推荐
第一部分 Go与Web应用 第1章 Go与Web应用 3 1.1 使用Go语言构建Web应用 3 1.1.1 Go与可扩展Web应用 4 1.1.2 Go与模块化Web应用 4 1.1.3 Go与可维护的Web应用 5 1.1.4 Go与高性能Web应用 5 ...
而通过Vue.js的响应式双向绑定数据,实时反映数据的真实变化并映射到数据源上,避免前端页面开发中DOM选择器繁杂的操作,简化Web前端开发流程和降低开放难度,提升前端开发效率,降低开发成本和周期,提升微信公众号使用的...
7.1 配置任意目录下的web应用程序 240 7.2 war文件 242 7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素...
LoadRunner 性能测试结果分析是个复杂的过程,通常可以从结果摘要、并发数、平均 事务响应时间、每秒点击数、业务成功率、系统资源、网页细分图、Web 服务器资源、数 据库服务器资源等几个方面分析....等等
7.1 配置任意目录下的web应用程序 240 7.2 war文件 242 7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素...
Dash是一个采用纯Python创建交互式,响应式Web应用的库Dash Dash 是一个用于构建分析 Web 应用程序的 Python 框架。 不需要 JavaScript。 建立在 Plotly.js、React 和 Flask 之上,Dash 将现代 UI 元素(如下拉菜单...
这些组件通过Web部署描述符(web.xml)配置文件恶声明,可以方便地添加和删除过滤器,无需改动任何应用程序代码或JSP页面,并由Servlet窗口进行动态调用。通过在请求/响应链中使用过滤器,可以对应用程序 (而不是以...
一款多线程的网站监控工具,能监视HTTP, SMTP, POP3, FTP, DNS, TCP和数据库等多种internet网络服务,一旦有问题被检测到或有错误发生它会提出通报,也能分析服务器响应时间并向你发送报告。
7.1 配置任意目录下的web应用程序 240 7.2 war文件 242 7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素...
1. ASP.NET技术:本项目基于ASP.NET框架进行开发,利用其强大的Web开发能力和丰富的控件库,实现了高效、稳定的Web应用程序。 2. ADO.NET数据库访问技术:系统通过ADO.NET技术连接和操作数据库,实现了数据的增删改...
安全管理 2017年_网络安全应急响应分析报告 - 推荐算法 漏洞挖掘 威胁情报 WEB应用防火墙 安全教育 网络安全
比迪格 模糊测试,分析响应并检测漏洞Web应用程序
休息船RestBoat是一个简单的Web应用程序,可让您在几分钟内为RESTful Web服务创建模拟服务器。收集并分析您的请求RestBoat为您提供了一个模拟服务器,该服务器将收集并存储您对它的所有请求,并让您以一种简单的方式...
免费 Web 应用程序开发工具 HBuilderX 中文版免费 Web 应用程序开发工具 HBuilderX 中文版 HBuilder X 功能特色: 轻巧、极速 10M的绿色发行包。 C++架构,启动速度、大文档打开速度、 编码提示,都极速响应。 强大...
「WEB应用防火墙」启明星辰集团工业物联网网络安全解决方案白皮书 - 云安全 漏洞分析 应急响应 技术分析移动安全 渗透测试
7.1 配置任意目录下的web应用程序 240 7.2 war文件 242 7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素...
Bootstrap 是快速开发 Web 应用程序的前端工具包。它是一个 CSS,HTML 和 JS 的集合,它使用了最新的浏览器技术,给你的 Web 开发提供了时尚的版式; AJAX,创建交互式网页应用的网页开发技术。
前端开发:HTML、CSS、JavaScript等用于构建网页和Web应用程序的技术。 后端开发:涉及服务器端编程、API开发、数据库集成等技术。 移动应用开发:包括iOS开发(使用Swift或Objective-C)和Android开发(使用Java或...
Web应用组件自动化发现的探索 身份与访问管理 数据安全与治理 网络安全 安全意识教育 数据分析
项目是基于ASP.NET的Web应用程序开发,旨在构建一个高性能、可扩展和可靠的在线平台。我们将使用ASP.NET MVC框架和C#编程语言来实现这个项目。 ASP.NET MVC是一种成熟的开发框架,它采用模型-视图-控制器的设计模式...