JMeterの分散圧力テストと最適化

JMeter非GUIインターフェイスパラメータ

  • -hヘルプ
  • -n非GUIモード
  • -tは、実行するためにJMeterのテストスクリプトファイルを指定します
  • 各実行の結果を記録する前に、-lファイル(何もそのxxx.jtlが存在しないことがないように実行する前に、それ以外の場合はエラー)
  • すべてのリモート・サーバに指定されたJmter.propertiesファイル-r
  • -eは、スクリプトの終了後にHTMLレポートを生成します
  • HTMLレポート(空するディレクトリ、またはエラー)を保持するために-oディレクトリ

公式プロフィールアドレスhttp://jmeter.apache.org/usermanual/get-started.html

#示例1
jmeter -n -t linux_users_api.jmx -l result.jtl -e -o /usr/local/softwate/jmeter/temp/ResultReport
#示例2
jmeter -n -t /Users/jack/Desktop/linux_users_api.jmx -l result.jtl -e -o /Users/jack/Desktop/person/jmeter/temp

JMeterのグラフィカルなHTMLの圧力測定レポート

ダッシュボードの形

  • テストとレポート情報

    • ソース・ファイル:JTLファイル名
    • 開始時間:開始時間の圧力測定
    • 終了時間:終了時間の圧力測定
    • ディスプレイ用フィルタ:フィルタ
    • Lable:サンプラーサンプラー名
  • APDEX(アプリケーションのパフォーマンスインデックス)

    • apdex:アプリケーションのパフォーマンス、0と1の間の範囲、1つの意味するすべてのユーザーの満足度に到達
    • T(寛容閾値):許容可能な閾値
    • F(フラストレーションのしきい値):障害しきい値
  • 要求の概要

    • OK:成功率
    • KO:失败率
  • 統計統計

    • lable:サンプラーサンプラー名
    • サンプル:要求の合計数、同時サイクル数*
    • KO:失敗の数
    • エラー%:故障率
    • 平均:平均応答時間
    • 分:最小応答時間
    • 最大:最大応答時間
    • 90第PCT:ユーザの応答時間の90%がこの値を超えないであろう(これが問題であることができます)
    • 第95のPCT:ユーザの応答時間の95%がこの値を超えません
    • 99 PCT:ユーザの応答時間の99%(極値の存在下)、この値を超えることはありません
    • throughtput:セカンドスループットQPSあたりのリクエスト
    • 受信:データの量が第2のサーバから受信しました
    • センド:秒あたりに送信されるデータの量

チャートチャート

  • 時間をかけて(時間の経過)

    • 応答時間を超える時間:応答時間の傾向
    • 応答時間パーセンタイルオーバータイム(成功応答):最大値、最小値、平均値、ユーザー応答時間の分布
    • 時間以上のアクティブスレッド:同時ユーザー数の推移
    • バイトスループットオーバー時間:要求を受信し、1秒あたりのバイト数、送信のための青色、黄色受け入れを変更します
    • 時間以上の待ち時間:平均待ち時間の傾向
    • 接続時間を超える時間:接続時間がかかる傾向
  • スループット

    • (埋め込みリソースを除く)は、1秒あたりヒット数:セカンドあたりのヒット数
    • (埋め込みリソースを除く)は、1秒あたりコード:ステータスごとのコードの数
    • 秒あたりのトランザクション:それTPS、秒あたりのトランザクション数
    • 応答時間対要求:比較要求と応答時間
    • レイテンシ対要求:遅延時間とリクエスト数の比較
  • 応答時間

    • 応答時間パーセンタイル:パーセンテージ応答時間
    • 応答時間概要:応答時間の概要
    • 時間対スレッド:応答時間とアクティブなスレッドの数
    • 応答時間分布:応答時間プロファイル

パフォーマンスの最適化JMeterの圧力センサ・インタフェース

すなわち、圧力測定結果がより正確な推奨事項のいくつかを低減するために、リソース利用を測定JMeterの圧力、

  • JMeterの-n -t test.jmx -l result.jtl:非GUIモードを使用します
  • あなたは-lオプションを使用する場合、リスナーの少ない使用は、彼らが削除または無効にすることができます。
  • 負荷テスト中に「ビューは結果ツリー」または「ビュー結果」テーブルのリスナーを使用しないでください、彼らは唯一のスクリプト段階でスクリプトをデバッグするために使用することができます。
  • テストファイルのすべての要素がテスト計画に追加されますので、コントローラを含め、ここでは役に立ちません。
  • 機能モード、CSV代わりのXML出力を使用しないでください
  • 保存あなたが必要とするデータのみ、可能なアサーションとして少しとして使用
  • テストは、大量のデータを必要とする場合は、読み込むCSV読むにデータファイルには、予め試験データで準備することができます。
  • ネットワーク、他の帯域幅を減圧して測定された圧力が測定結果に影響を与えます
  • 圧力測定流量は、サーバーに非GUIモードに圧力をかけ、いくつかのより多くのノードを使用しようとすると

公式推奨します。http://jakarta.apache.org/jmeter/usermanual/best-practices.html#lean_mean

分散型圧力測定

分散型圧力測定導入

  • 常圧測定:ターゲットマシンを生成することができる圧力単一のマシンは、CPU、ネットワークを含む比較的小さい、制限要因であり、IOそう
  • 分散圧力試験:ターゲットマシンに機械生成複数の圧力を用いて、同時ユーザーのアナログ十

JMeterは、圧力測定原理を分散しました

  • 総機械制御ノードマスタは、他の圧力発生機は、「ニワトリ」サーバと呼ばれています
  • マスターは、上記のサーバスクリプト測定された圧力に送信します
  • 実行すると、サーバーだけで必要なのJMeterサーバはそれを開いて、JMeterを起動しないでください
  • 後、サーバーがマスターに測定データバックに圧力をかけるだろうし、マスター出力レポートの概要

使用して測定した圧力分散

JMeterの分散圧力試験製剤

  • 圧力測定の注意事項
    • システム上のファイアウォールがオフにされるか、正しいポートが開放される。
      ファイアウォールシステムは、正しいポートが閉じられ又は開かれます。

    • すべてのクライアントが同じサブネット上にある 。
      すべてのクライアントが同じサブネット上にあります。

    • サーバーは、同じサブネット内にある 192.xxxまたは10.xxx IPアドレスが使用されている場合。サーバは192.xxまたは10.xx IPアドレスを使用しない場合は、何らかの問題があってはならない。
      あなたは192を使用している場合。 XXXまたは10.xxx IPアドレス、同じサブネット上のサーバー。サーバは192.xxまたは10.xx IPアドレスを使用しない場合は、何か問題があってはなりません。

    • JMeterのがサーバーにアクセスすることができます。確認してください
      のJMeterはサーバデプロイメント・インターフェースにアクセスできることを確認してください。

    • 必ず同じバージョンの使用してください 。ミキシングのバージョンが正しく動作しません。すべてのシステム上のJMeterとJavaの
      すべてのシステム上のJavaとのJMeterの同じバージョンを使用してください。ハイブリッドバージョンでは動作しません。

    • あなたは、RMIまたは無効にするための設定SSL持っていることを。
      あなたはRMIのためにSSLを設定したり、それを無効にする必要があります。

    • 注:内部ネットワークIPを使用してください、チェックにパブリックネットワークIP、使用のpingを使用していません

スレーブ開始

  • すべてのサービスに展開マシンとマシンインタフェースは、サブネットをテスト

  • JMeterのテストおよびすべてのJavaの同じバージョンをインストールするマシン

  • 修正ビン/ jmeter.properties

    • 無効SSL:trueにserver.rmi.ssl.disableとコメントを外し、無効化
    • SERVER_PORTに2つの変更は、次の2つは、8899と同じポートに設定されている
      server.rmi.localport=8899:ポートスレーブ・サーバの表示開始
      server_port=8899:ポート・マスター・マシンは、リモートに接続されている(すなわち、= XXXXマスターremote_hostsに配置:8899)
  • オープンポート8899

  • すべてのスレーブはJmetereサーバを起動します./jmeter-servernohup ./jmeter-server &

    ./jmeter-server
    
    Using local port: 8899
    Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.0.102:8899](local),objID:[3a585a4d:162724586ab:-7fff, 3963132813614033916]]]
    
  • スタートの成功を確認します。ps -ef|grep jmeter-server

マスターブート

  • そして、同じサブネットを持つすべてのスレーブサーバ

  • インストールとJavaとスレーブのJMeterのすべての同じバージョン

  • 修正ビン/ jmeter.properties

    • 無効SSL:trueにserver.rmi.ssl.disableとコメントを外し、無効化
    • SERVER_PORTに2つの変更は、次の2つは、8899と同じポートに設定されている
      server.rmi.localport=8899:ポートスレーブ・サーバの表示開始
      server_port=8899:ポート・マスター・マシンは、リモートに接続されている(すなわち、= XXXXマスターremote_hostsに配置:8899)
    • 修改remote_hosts:remote_hosts = MASTERIP:8899、slave1IP:8899、slave2IP:8899
  • スタートJmetereサーバー:./jmeter-serverまたはnohup ./jmeter-server &

  • スタートの成功を確認します。ps -ef|grep jmeter-server

  • 非分散GUIホストの圧力測定を行う(パラメータ-r増加)
    jmeter -n -t /Users/jack/Desktop/remote.jmx -r -l /Users/jack/Desktop/jtl/result.jtl -e -o /Users/jack/Desktop/result

    #压测结果
    ./jmeter -n -t /Users/jack/Desktop/remote.jmx -r -l /Users/jack/Desktop/jtl/result.jtl -e -o /Users/jack/Desktop/result
    		
    Creating summariser <summary>
    Created the tree successfully using /Users/jack/Desktop/remote.jmx
    Configuring remote engine: 172.20.10.3:8899
    Using local port: 8899
    Configuring remote engine: 172.20.10.11:8899
    Starting remote engines
    Starting the test @ Thu Mar 29 23:21:13 CST 2018 (1522336873931)
    Remote engines have been started
    Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
    summary =      4 in 00:00:22 =    0.2/s Avg:  5582 Min:    94 Max: 21006 Err:     1 (25.00%)
    Tidying up remote @ Thu Mar 29 23:21:36 CST 2018 (1522336896842)
    ... end of run
    

ご注意ください

  • remote_hostsは、IP、IPネットワーク内にあります

  • 8899:ホストはテストをしない場合は、MASTERIPを書き込むことはできません

  • マスターマシンは非常に各スレーブマシン上でJMXをアップロードしていない、スレーブJMXマシンにファイルをコピーします開始した後、ちょうどマスタマシン上のJMXにスクリプトをアップロードする必要があります

    • あなたはCSVファイルをパラメータ化を使用する場合は、各スレーブで同じに設定するパラメータファイルとパスのニーズをコピーするために必要

サンプルの総数=スレッドの合計数*実行マシンサイクル

接続に失敗する理由

  • JMeterのサーバ起動するかどうか。
  • かどうかネットワーキング
  • pingサーバーIPフローかどうか。
  • ポートのtelnet 192.168.3.10 1099
  • チェックサーバのファイアウォールがオフになっています。
  • アリクラウドセキュリティ戦略が働いています

インストールに関するFAQ

  • 質問1

    [root@iZwz95j86y235aroi85ht0Z bin]# ./jmeter-server
    Created remote object: UnicastServerRef2 [liveRef: [endpoint:[:39308](local),objID:[24e78a63:16243c70661:-7fff, 7492480871343944173]]]
    Server failed to start: java.rmi.RemoteException: Cannot start. Unable to get local host IP address.; nested exception is:
    java.net.UnknownHostException: iZwz95j86y235aroi85ht0Z: iZwz95j86y235aroi85ht0Z: Name or service not known
    An error occurred: Cannot start. Unable to get local host IP address.; nested exception is:
    java.net.UnknownHostException: iZwz95j86y235aroi85ht0Z: iZwz95j86y235aroi85ht0Z: Name or service not known
    

    ソリューション:

    hostname  命令获取机器名称,追加一个映射  iZwz95j86y235aroi85ht0Z
    vim /etc/hosts
    	127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    	::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    	120.79.160.143 iZwz95j86y235aroi85ht0Z
    
    windows用户 修改c:\windows\system32\drivers\etc\hosts文件,增加一条域名 与IP的映射
    
  • 質問2

    [root@iZwz95j86y235aroi85ht0Z bin]# ./jmeter-server
    Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is:
    java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
    An error occurred: Listen failed on port: 0; nested exception is:
    java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
    

    ソリューション:

    拥有RMI over SSL的有效密钥库,或者禁用了SSL。
    禁用SSL:
    	jmeter.property里面 server.rmi.ssl.disable 改为 true,表示禁用
    
  • 質問3

    [root@iZ949uw2xehZ bin]# ./jmeter
    Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Cannot allocate memory' (errno=12)
    #
    # There is insufficient memory for the Java Runtime Environment to continue.
    # Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
    # An error report file with more information is saved as:
    # /usr/local/jmeter/apache-jmeter-4.0/bin/hs_err_pid5855.log
    

    ソリューション:

    编辑jmeter
    搜索 : "${HEAP:="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"}"
    改变初始堆内存和最大堆内存
    
  • 質問4。

    "could not find ApacheJmeter_core.jar"
    

    ソリューション:

    在Agent机器安装jdk,并设置环境变量
    
  • 質問5

    ”Bad call to remote host"
    

    ソリューション:

    检查被控制机器上的jmeter-server有没有启动,或者remote_hosts的配置是否正确。
    
  • 6.マルチカード構成の問題

    我们要在多网卡的服务器上开启RMI服务的话必须指定IP,使他们能够在同一个网段内。 
    
    需要以下几步(假定所有机器都在10.120.11.*网段,agent服务器为linux,controller服务器为windows):
    
    1、 修改agent服务器,指定agent机器的IP
    修改jmeter-server文件
    # vi jmeter-server
    修改RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx(需要连接的IP)
    
    2、修改server服务器,指定server机器的IP
    
    修改jmeter.bat文件 
    
    新增set rmi_host=-Djava.rmi.server.hostname=10.120.11.214
    
    修改set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%
    
发布了109 篇原创文章 · 获赞 47 · 访问量 3万+

おすすめ

転載: blog.csdn.net/weixin_43934607/article/details/104231112