Preamble
With each execution load 10,000 requests / sec when running each jmeter single unit, the load capacity cannot be tested so I recommend to you how to test by Jmeter Cluster configuration Refer to the following content to know how to run Test Jmeter local, creating basic jmeter file is not covered in this article. Test Jmeter on local Basic environment to test the load
Overview of Cluster configuration
Running with infrastructure including master server, slave server (multiple machines). I will put the setting file on the Master server and then run it, the Slave server will synthesize the result log etc. to the Master server. So the SLave server side just needs to start Jmeter.
Setup Master server
If you weaken it, yes
- install jmeter
- decompression
- setting Slave server
Install jmeter
at / home / ec2-user
1 2 3 4 | $ <span class="token function">sudo</span> yum update -y $ <span class="token function">wget</span> http://ftp.riken.jp/net/apache//jmeter/binaries/apache-jmeter-5.1.1 |
Decompression
1 2 3 | $ <span class="token function">tar</span> zxvf apache-jmeter-5.1.1.tgz |
Setting Slave server
Editing property. go to the bin entry in apache-jmeter-5.1.1, open the property with vim, enter the DNS name of the Slave server in the remote host box. Note that if you enter the IP address, you will get an error so you must enter the correct value. If you want to set up multiple Slave servers, then write them separated by commas, that’s fine.
1 2 3 4 | <span class="token builtin class-name">cd</span> apache-jmeter-5.1.1/bin/ <span class="token function">sudo</span> <span class="token function">vim</span> jmeter.properties |
1 2 3 | remote_hosts=ec2-aa-aa-aa-aa.ap-northeast-1.compute.amazonaws.com |
Setup Slaver server
- install jmeter
- decompression
- start up Jmeter
Start jmeter
Check that it has not been started before the check process:
1 2 3 4 | $ <span class="token function">ps</span> -aux <span class="token operator">|</span> <span class="token function">grep</span> jemter ec2-user <span class="token number">14418</span> <span class="token number">0.0</span> <span class="token number">0.0</span> <span class="token number">119468</span> <span class="token number">896</span> pts/1 S+ <span class="token number">11</span> :36 <span class="token number">0</span> :00 <span class="token function">grep</span> --color <span class="token operator">=</span> auto jemter |
Launch:
1 2 3 | /home/ec2-user/apache-jmeter-5.1.1/bin/jmeter-server <span class="token operator">&</span> |
check the process again to see that jmeter has been started.
1 2 3 4 5 | $ <span class="token function">ps</span> -aux <span class="token operator">|</span> <span class="token function">grep</span> jmeter ec2-user <span class="token number">4324</span> <span class="token number">0.0</span> <span class="token number">0.0</span> <span class="token number">119928</span> <span class="token number">2856</span> pts/0 S <span class="token number">11</span> :43 <span class="token number">0</span> :00 /bin/sh /home/ec2-user/apache-jmeter-5.1.1/bin/jmeter-server ec2-user <span class="token number">4326</span> <span class="token number">0.0</span> <span class="token number">0.0</span> <span class="token number">119928</span> <span class="token number">2892</span> pts/0 S <span class="token number">11</span> :43 <span class="token number">0</span> :00 /bin/sh /home/ec2-user/apache-jmeter-5.1.1/bin/jmeter -Dserver_port <span class="token operator">=</span> <span class="token number">1099</span> -s -j jmeter-server.log ec2-user <span class="token number">4354</span> <span class="token number">0.4</span> <span class="token number">2.0</span> <span class="token number">7934128</span> <span class="token number">158084</span> pts/0 Sl <span class="token number">11</span> :43 <span class="token number">0</span> :02 /usr/bin/java -server -XX:+HeapDumpOnOutOfMemoryError -Xms4g -Xmx4g -XX:MaxMetaspaceSize <span class="token operator">=</span> 256m -XX:+UseG1GC -XX:MaxGCPauseMillis <span class="token operator">=</span> <span class="token number">100</span> -XX:G1ReservePercent <span class="token operator">=</span> <span class="token number">20</span> -Djava.security.egd <span class="token operator">=</span> file:/dev/urandom -Duser.language <span class="token operator">=</span> en -Duser.region <span class="token operator">=</span> EN -jar /home/ec2-user/apache-jmeter-5.1.1/bin/ApacheJMeter.jar -Dserver_port <span class="token operator">=</span> <span class="token number">1099</span> -s -j jmeter-server.log |
Load-bearing test
When the Jmeter is successfully started by the Slave server, it will switch to pending command from the Master Server side, so the load-bearing test will be performed. To check the process this time so a while ago after command /home/ec2-user/apache-jmeter-5.1.1/bin/jmeter-server &
I have already /home/ec2-user/apache-jmeter-5.1.1/bin/jmeter-server &
, but normally just let it be started. so.
This place needs to be sudo. The boot command is /home/ec2-user/apache-jmeter-5.1.1/bin/jmeter
, -n is to boot in CUI mode, -t is the option to specify the setting file. In addition, the setting file is required to be specified with an absolute path.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $ <span class="token function">sudo</span> <span class="token function">su</span> $ /home/ec2-user/apache-jmeter-5.1.1/bin/jmeter -n -t /home/ec2-user/test.jmx -r Creating summariser <span class="token operator"><</span> summary <span class="token operator">></span> Created the tree successfully using /home/ec2-user/test.jmx Configuring remote engine: ec2-aa-aa-aa-aa.ap-northeast-1.compute.amazonaws.com Exception creating connection to: ec2-aa-aa-aa-aa.ap.ap-northeast-1.compute.amazonaws.com <span class="token punctuation">;</span> nested exception is: java.io.FileNotFoundException: rmi_keystore.jks <span class="token punctuation">(</span> No such <span class="token function">file</span> or directory <span class="token punctuation">)</span> Failed to configure ec2-aa-aa-aa-aa.ap.ap-northeast-1.compute.amazonaws.com Stopping remote engines Remote engines have been stopped Error <span class="token keyword">in</span> NonGUIDriver java.lang.RuntimeException: Following remote engines could not be configured: <span class="token punctuation">[</span> ec2-aa-aa-aa-aa.ap.ap-northeast-1.compute.amazonaws.com <span class="token punctuation">]</span> |
Occasionally there will appear Error in NonGUIDriver java.lang.RuntimeException, in this case something has happened on the Slaver server, just restart Jmeter. If you can’t reboot, then kill the process, kill the bottom of the 3 processes.
1 2 3 4 5 6 7 8 9 10 | $ <span class="token function">ps</span> -aux <span class="token operator">|</span> <span class="token function">grep</span> jmeter ec2-user <span class="token number">4324</span> <span class="token number">0.0</span> <span class="token number">0.0</span> <span class="token number">119928</span> <span class="token number">2856</span> pts/0 S <span class="token number">11</span> :43 <span class="token number">0</span> :00 /bin/sh /home/ec2-user/apache-jmeter-5.1.1/bin/jmeter-server ec2-user <span class="token number">4326</span> <span class="token number">0.0</span> <span class="token number">0.0</span> <span class="token number">119928</span> <span class="token number">2892</span> pts/0 S <span class="token number">11</span> :43 <span class="token number">0</span> :00 /bin/sh /home/ec2-user/apache-jmeter-5.1.1/bin/jmeter -Dserver_port <span class="token operator">=</span> <span class="token number">1099</span> -s -j jmeter-server.log ec2-user <span class="token number">4354</span> <span class="token number">0.4</span> <span class="token number">2.0</span> <span class="token number">7934128</span> <span class="token number">158084</span> pts/0 Sl <span class="token number">11</span> :43 <span class="token number">0</span> :02 /usr/bin/java -server -XX:+HeapDumpOnOutOfMemoryError -Xms4g -Xmx4g -XX:MaxMetaspaceSize <span class="token operator">=</span> 256m -XX:+UseG1GC -XX:MaxGCPauseMillis <span class="token operator">=</span> <span class="token number">100</span> -XX:G1ReservePercent <span class="token operator">=</span> <span class="token number">20</span> -Djava.security.egd <span class="token operator">=</span> file:/dev/urandom -Duser.language <span class="token operator">=</span> en -Duser.region <span class="token operator">=</span> EN -jar /home/ec2-user/apache-jmeter-5.1.1/bin/ApacheJMeter.jar -Dserver_port <span class="token operator">=</span> <span class="token number">1099</span> -s -j jmeter-server.log $ <span class="token function">kill</span> <span class="token number">4354</span> $ <span class="token function">ps</span> -aux <span class="token operator">|</span> <span class="token function">grep</span> jmeter ec2-user <span class="token number">4476</span> <span class="token number">0.0</span> <span class="token number">0.0</span> <span class="token number">119468</span> <span class="token number">976</span> pts/0 S+ <span class="token number">11</span> :59 <span class="token number">0</span> :00 <span class="token function">grep</span> --color <span class="token operator">=</span> auto jmeter <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">]</span> + Exit <span class="token number">143</span> /home/ec2-user/apache-jmeter-5.1.1/bin/jmeter-server |
Then reboot
1 2 3 | $ /home/ec2-user/apache-jmeter-5.1.1/bin/jmeter-server <span class="token operator">&</span> |
Go back to the Master server, run again
1 2 3 4 5 6 7 8 9 10 | $ /home/ec2-user/apache-jmeter-5.1.1/bin/jmeter -n -t imp-test.jmx -r Creating summariser <span class="token operator"><</span> summary <span class="token operator">></span> Created the tree successfully using imp-test.jmx Configuring remote engine: ec2-aa-aa-aa-aa.ap-northeast-1.compute.amazonaws.com Starting remote engines Starting the <span class="token builtin class-name">test</span> @ Fri Sep <span class="token number">13</span> <span class="token number">12</span> :07:54 UTC <span class="token number">2019</span> <span class="token punctuation">(</span> <span class="token number">1568376474892</span> <span class="token punctuation">)</span> Remote engines have been started Waiting <span class="token keyword">for</span> possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port <span class="token number">4445</span> |
When there is a Waiting for show, the load test has been successful !!!
Refer
Use SpotInstance and JMeter to test the load of 4,000,000 req / min