ab测试出现error: connection reset by peer的解决方案
我们在使用一些开源程序之前,可能会使用ab工具在服务器或者本地进行一次性能评估,但是很多时候却总是会以失败告终,因为,服务器会拒绝你的ab工具发出的http请求, 出现 error: connection reset by peer, 这该怎么办呢?
首先,为了测试一个具有sql操作的页面,通常需要登录,这时候需要伪装成一个用户来实现自动登录,简单的方法就是:在浏览器端登录一个用户,打开chrome的developer tool,将其中的cookie复制,用-H option来实现带cookie的http请求,其余的并发任务交给ab工具,使得每个http都携带session对应的cookie,如果这样就ok了,基本上说明这个web app安全性有待考量,这也是初级使用者可能忽略的问题。
其次,如果伪装成登录用户,携带了cookie依然出现这个错误,那么通常是由于web app源码中开启了csrf防护,针对伪装的请求做了过滤,这个问题也相对好解决,因为是开放源码,我们可以打开源码,找到这个web app的框架级的config文件,或者是 application级别的启动器类,就可以方便快速地找到这段程序,将csrf防护关闭就可以了。以下就以rails应用, 和 sails.js应用为例,讲述如何关闭csrf防护。
rails应用:代码在controller目录下的ApplicationController.rb文件,将其中的csrf保护函数protect_from_forgery中cookie.delete(auto_cookie_name)行注释掉。或者将protect_from_forgery注释掉,代码如下:
class ApplicationController < ActionController::Base
include Redmine::I18n
include Redmine::Pagination
include RoutesHelper
helper :routes class_attribute :accept_api_auth_actions
class_attribute :accept_rss_auth_actions
class_attribute :model_object layout 'base' protect_from_forgery
def handle_unverified_request
super
#cookies.delete(autologin_cookie_name)
end before_filter :session_expiration, :user_setup, :check_if_login_required, :set_localization rescue_from ActionController::InvalidAuthenticityToken, :with => :invalid_authenticity_token
rescue_from ::Unauthorized, :with => :deny_access
rescue_from ::ActionView::MissingTemplate, :with => :missing_template include Redmine::Search::Controller
include Redmine::MenuManager::MenuController
helper Redmine::MenuManager::MenuHelper def session_expiration
if session[:user_id]
if session_expired? && !try_to_autologin
reset_session
flash[:error] = l(:error_session_expired)
redirect_to signin_url
else
#session[:atime] = Time.now.utc.to_i
end
end
end
如果是sails.js web app, 那么就更加简单了,打开config目录下,有一个csrf文件,将csrf设置为false就可以了。
在关闭了csrf之后,基本上ab测试就不会再出现error: connection reset by peer 了。
如果你对手头没有源码的web app的性能测试感兴趣,可以参考我的其它文章。
参考:
检查丢包利器dropwatch: http://blog.yufeng.info/archives/2497
ulimit问题及其影响: http://blog.yufeng.info/archives/1380
ab测试出现error: connection reset by peer的解决方案的更多相关文章
- rsync: read error: Connection reset by peer (104)
Centos7 rsync守护进程上传文件失败 [root@nfs ~]# rsync -avz /etc rsync_backup@172.16.1.41::backupsending inc ...
- fatal: read error: Connection reset by peer解决办法
标签(空格分隔): ceph源码安装,git 问题描述: 源码安装ceph,克隆代码时提示如下错误: [root@localhost ~]# git clone git://github.com/ce ...
- error connection reset by peer 104
connection reset by peer的常见原因 1.服务器的并发连接数超过了其承载量,服务器会将其中一些连接关闭:2. errno = 104错误表明你在对一个对端socket已经关闭的的 ...
- ab压力测试遭遇apr_socket_recv: Connection reset by peer (104) 怎么办
ab -r -c 2000 -n 200000 www.baidu.com 其实只要加上-r就可以了.但是为什么呢?ab --help就知道了 当Socket接收到错误的时候不退出,就是这句.事实 ...
- ab压测 apr_socket_recv: Connection reset by peer (104)错误解决方法
用apache自带ab命令进行压测,报了如下错误: 原因是在ab的程序源码中对并发数有限制. 解决办法:修改apache源码support下面的ab.c源代码,然后重新编译.修改内容如下:
- Error: connection reset by peer ,during filebeat connect to elk.
Error screenshot like below: Reason: What I found that was the machine failing had same configuratio ...
- Redis连接出现Error: Connection reset by peer的问题是由于使用Redis的安全模式
现在网上一查出现安全模式的连接,基本都是要关闭服务端的操作,其实这种方式是不正确的,最有效的解决方式是使用stunnel进行安全模式的连接. 我碰到的问题是微软云(其实我不想用!)连接Redis,默认 ...
- [转载] apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104))
遇见相同的问题. https://www.cnblogs.com/felixzh/p/8295471.html -------------------------------------------- ...
- apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104))
apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104)) 今天用apache 自带的ab工具测试,当并发量达到1000多的时 ...
随机推荐
- java线程详解(二)
1,线程安全 先看上一节程序,我们稍微改动一下: //线程安全演示 //火车站有16张票,需要从四个窗口卖出,如果按照上面的多线程实现,程序如下 class Ticket implements Run ...
- 写在Ruby之前。
jeiao: 入行程序员也有一年的时间,入门的时候学的Java,在公司写了大半年的Java,也主要是Web方向,使用过struts2 做过项目,后来又用SSH实现了一遍,感觉就那么点意思,因为公司规模 ...
- 【笔记】DOM探索基础篇(二)
# 浏览器的渲染(HTML解析) ——参考: <前端必读:浏览器内部工作原理>http://kb.cnblogs.com/page/129756/ <谈谈DOMContentLoad ...
- Windows 8.1 应用再出发 - 视图状态的更新
本篇我们来了解一下Windows 8.1 给应用的视图状态带来了哪些变化,以及我们怎么利用这些变化作出更好的界面视图. 首先我们来简单回顾一下Windows 8.0 时代的视图状态: 上图中, ...
- Windows 8.1 应用再出发 (WinJS) - 几种新增控件(2)
上篇我们介绍了Windows 8.1 和 WinJS 中新增控件中的 AppBarCommand.BackButton.Hub.ItemContainer,本篇我们接着来介绍 NavBar.Repea ...
- Titanium系列--我常用的Titanium的快捷键(持续更新中。。)
Titanium快捷键: (注:Titanium属于eclipse系列的IDE) ctrl + shift + r 快速打开 ctrl + shift + e / ctrl + e 打开之前的文件 c ...
- 安装了linux系统的设备上不了网怎么办
玩了一阵子的树莓派,曾经计划将其作成一台小小无线路由,但是时间和精力关系始终未成功做成. 同时也有在进行一些arm开发板的学习,突然一天发现arm板直接插上网线不能是不能上网的,又想起之前玩树莓派的时 ...
- Windows,linux快捷键
Window系统 按着Alt + 鼠标左键点击 = 直接打开点击空间的属性
- sql语句对数据库表进行加锁和解锁
锁是数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性. 我们知道,多个用户能够同时操纵同一个数据库中的数据,会发生数据不一致现象.即如果没有锁定且多个用户同时访问一个数据库 ...
- python numpy 介绍
NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object).ndarray(下文统一称之 ...