0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JMeterの通信をIPv6からIPv4にする

Posted at

JMeterが何故かIPv6で通信される

しばらく前にやった負荷テスト時にいまいち負荷量が伸びなく、試行錯誤と調査をしているうちに通信が何故か全てIPv6だったと発覚
それが負荷量の伸びない原因の全てではなかったが原因の1つではないかと推測し対応を行う
なのでそのときの作業の備忘録
JavaやJMeterのインストール作業手順等は割愛します

Javaのバージョン確認

# java -version
openjdk version "1.8.0_342"
OpenJDK Runtime Environment (build 1.8.0_342-b07)
OpenJDK 64-Bit Server VM (build 25.342-b07, mixed mode)

JMeterのバージョン

5.5

jmxファイル作成(シナリオ作成)の環境

windows10

JMeter実行の環境

master,slaveともにAWSのEC2にて作成
centos7.5

通信確認

JMeterを実行中に sudo su - をしてからlsofコマンド

# sudo su -
# lsof -i:443 -P
COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    3112 root  182u  IPv6 4998384      0t0  TCP ip-XXXXXXXXXXX.compute.internal:62954->XXXXXXXXXXX.compute.amazonaws.com:443 (ESTABLISHED)
java    3112 root  183u  IPv6 4998385      0t0  TCP ip-XXXXXXXXXXX.compute.internal:62970->XXXXXXXXXXX.compute.amazonaws.com:443 (ESTABLISHED)
java    3112 root  184u  IPv6 4998386      0t0  TCP ip-XXXXXXXXXXX.compute.internal:62986->XXXXXXXXXXX.compute.amazonaws.com:443 (ESTABLISHED)
java    3112 root  185u  IPv6 4998403      0t0  TCP ip-XXXXXXXXXXX.compute.internal:63002->XXXXXXXXXXX.compute.amazonaws.com:443 (ESTABLISHED)
java    3112 root  186u  IPv6 4997786      0t0  TCP ip-XXXXXXXXXXX.compute.internal:63018->XXXXXXXXXXX.compute.amazonaws.com:443 (ESTABLISHED)
java    3112 root  190u  IPv6 4998404      0t0  TCP ip-XXXXXXXXXXX.compute.internal:63030->XXXXXXXXXXX.compute.amazonaws.com:443 (ESTABLISHED)
java    3112 root  191u  IPv6 4998419      0t0  TCP ip-XXXXXXXXXXX.compute.internal:63044->XXXXXXXXXXX.compute.amazonaws.com:443 (ESTABLISHED)
java    3112 root  192u  IPv6 4998422      0t0  TCP ip-XXXXXXXXXXX.compute.internal:63060->XXXXXXXXXXX.compute.amazonaws.com:443 (ESTABLISHED)

全部IPv6

jmeterファイル修正

apache-jmeter-5.5/bin/jmeter ファイル

### 修正前 ###
if [ -z "${JMETER_COMPLETE_ARGS}" ]; then
    ARGS="$JAVA9_OPTS $SERVER $DUMP $HEAP $VERBOSE_GC $GC_ALGO $SYSTEM_PROPS $JMETER_LANGUAGE $RUN_IN_DOCKER"
else
    ARGS=""
fi

"$JAVA_HOME/bin/java" $ARGS $JVM_ARGS $JMETER_OPTS -jar "$PRGDIR/ApacheJMeter.jar" "$@"

export JVM_ARGS="-Djava.net.preferIPv4Stack=true"
上記の1行付け足す

### 修正後 ###
if [ -z "${JMETER_COMPLETE_ARGS}" ]; then
    ARGS="$JAVA9_OPTS $SERVER $DUMP $HEAP $VERBOSE_GC $GC_ALGO $SYSTEM_PROPS $JMETER_LANGUAGE $RUN_IN_DOCKER"
else
    ARGS=""
fi

export JVM_ARGS="-Djava.net.preferIPv4Stack=true"

"$JAVA_HOME/bin/java" $ARGS $JVM_ARGS $JMETER_OPTS -jar "$PRGDIR/ApacheJMeter.jar" "$@"

system.propertiesファイルの修正

apache-jmeter-5.5/bin/system.properties

### 修正前 ###
#java.net.preferIPv4Stack=false
#java.net.preferIPv6Addresses=false
#networkaddress.cache.ttl=-1
#networkaddress.cache.negative.ttl=10

java.net.preferIPv4Stack=true
java.net.preferIPv6Addresses=false
java.net.preferIPv4Addresses=true
この3行を付け足す

### 修正後 ###
#java.net.preferIPv4Stack=false
#java.net.preferIPv6Addresses=false
#networkaddress.cache.ttl=-1
#networkaddress.cache.negative.ttl=10
java.net.preferIPv4Stack=true
java.net.preferIPv6Addresses=false
java.net.preferIPv4Addresses=true

再度通信確認

ファイル修正が終わったら設定を反映させるためにJMeterを再起動させておきます(1敗)
そして修正前と同様にJMeterを実行中に sudo su - してからlosfコマンド

# sudo su -
# lsof -i:443 -P
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    12575 root  183u  IPv4 5007316      0t0  TCP ip-XXXXXXXXXXX.compute.internal:50122->XXXXXXXXXXX.compute.amazonaws.com:443 (ESTABLISHED)
java    12575 root  185u  IPv4 5007317      0t0  TCP ip-XXXXXXXXXXX.compute.internal:50126->XXXXXXXXXXX.compute.amazonaws.com:443 (ESTABLISHED)
java    12575 root  187u  IPv4 5008545      0t0  TCP ip-XXXXXXXXXXX.compute.internal:50154->XXXXXXXXXXX.compute.amazonaws.com:443 (ESTABLISHED)
java    12575 root  188u  IPv4 5007318      0t0  TCP ip-XXXXXXXXXXX.compute.internal:50138->XXXXXXXXXXX.compute.amazonaws.com:443 (ESTABLISHED)
java    12575 root  189u  IPv4 5008546      0t0  TCP ip-XXXXXXXXXXX.compute.internal:50166->XXXXXXXXXXX.compute.amazonaws.com:443 (ESTABLISHED)
java    12575 root  190u  IPv4 5007319      0t0  TCP ip-XXXXXXXXXXX.compute.internal:50170->XXXXXXXXXXX.compute.amazonaws.com:443 (ESTABLISHED)

IPv4になりました

書いておいてなんですが、何故IPv6になっていたかの原因を調べるほうが大事な気がします

https://xy2401.com/local-docs/apache.zh/jmeter-5.2/changes_history.html
jmeterの変更履歴にHTTPCookieManagerでHC3とHC4が切り替えられるようになったとの内容がありますが、Jmeterを開いても該当のセレクトボックスが見当たりません
jmxファイルを直接エディタ等で開いてもやはり見当たりません
こちらは時間を見つけてまた調べます

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?