abテストerror:connection reset by peerのソリューション
3599 ワード
いくつかのオープンソースプログラムを使用する前に、abツールを使用してサーバまたはローカルでパフォーマンス評価を行う可能性がありますが、サーバがabツールからのhttpリクエストを拒否し、error:connection reset by peerが現れることが多いので、どうすればいいですか.
まず、sql操作のあるページをテストするために、通常はログインが必要です.この場合、ユーザーに偽装して自動ログインを実現する必要があります.簡単な方法は、ブラウザ側にユーザーをログインし、chromeのdeveloper toolを開き、その中のcookieをコピーし、-H optionでcookie付きhttp要求を実現し、残りの同時タスクをabツールに渡します.httpごとにセッション対応のクッキーを携帯するようにし、これでOKになったら、基本的にこのweb appのセキュリティが考慮されることを説明し、これも初級ユーザーが無視する可能性がある問題である.
次に、ログインユーザーに偽装し、クッキーを携帯してもこのエラーが発生すると、通常はweb appソースコードにcsrf保護がオンになっているため、偽装の要求に対してフィルタリングを行い、この問題も比較的解決しやすい.オープンソースコードなので、ソースコードを開いて、このweb appのフレームワークレベルのconfigファイルを見つけることができる.あるいはアプリケーションレベルのイニシエータクラスであれば、このプログラムを簡単に見つけることができ、csrf保護をオフにすればいいです.以下、railsアプリケーションとsails.jsアプリケーションを例に、csrf保護を閉じる方法について説明します.
railsアプリケーション:controllerディレクトリの下にあるコードのApplicationController.rbファイル、csrf保護関数protect_from_何があったの?delete(auto_cookie_name)行コメントを削除します.またはprotect_from_forgeryコメントを削除します.コードは次のとおりです.
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
まず、sql操作のあるページをテストするために、通常はログインが必要です.この場合、ユーザーに偽装して自動ログインを実現する必要があります.簡単な方法は、ブラウザ側にユーザーをログインし、chromeのdeveloper toolを開き、その中のcookieをコピーし、-H optionでcookie付きhttp要求を実現し、残りの同時タスクをabツールに渡します.httpごとにセッション対応のクッキーを携帯するようにし、これでOKになったら、基本的にこのweb appのセキュリティが考慮されることを説明し、これも初級ユーザーが無視する可能性がある問題である.
次に、ログインユーザーに偽装し、クッキーを携帯してもこのエラーが発生すると、通常はweb appソースコードにcsrf保護がオンになっているため、偽装の要求に対してフィルタリングを行い、この問題も比較的解決しやすい.オープンソースコードなので、ソースコードを開いて、このweb appのフレームワークレベルのconfigファイルを見つけることができる.あるいはアプリケーションレベルのイニシエータクラスであれば、このプログラムを簡単に見つけることができ、csrf保護をオフにすればいいです.以下、railsアプリケーションとsails.jsアプリケーションを例に、csrf保護を閉じる方法について説明します.
railsアプリケーション:controllerディレクトリの下にあるコードのApplicationController.rbファイル、csrf保護関数protect_from_何があったの?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