|
151 | 151 | aria-label="Search this site…" |
152 | 152 | autocomplete="off" |
153 | 153 |
|
154 | | - data-offline-search-index-json-src="/offline-search-index.90575e15e15a0340386aebb6fb2d849a.json" |
| 154 | + data-offline-search-index-json-src="/offline-search-index.32a6d9257c49727ca3dd437bb4a79bd8.json" |
155 | 155 | data-offline-search-base-href="/" |
156 | 156 | data-offline-search-max-results="10" |
157 | 157 | > |
@@ -482,9 +482,9 @@ <h1 class="title">Workshop</h1> |
482 | 482 | <h1 id="pg-f3351e063429a5c5cbfec483b1ba8747">1 - Prerequisites</h1> |
483 | 483 | <div class="lead">Instructions for acquiring the software needed for the workshop.</div> |
484 | 484 | <h2 id="java-development-kit">Java Development Kit</h2> |
485 | | -<p>Install a Java Development Kit (17+) from Oracle or OpenJDK</p> |
| 485 | +<p>Install a Java Development Kit (21+) from Oracle or OpenJDK</p> |
486 | 486 | <ul> |
487 | | -<li><a href="https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html">Oracle</a></li> |
| 487 | +<li><a href="https://www.oracle.com/java/technologies/downloads/">Oracle</a></li> |
488 | 488 | <li><a href="https://openjdk.java.net/install/">OpenJDK</a></li> |
489 | 489 | </ul> |
490 | 490 | <h2 id="maven">Maven</h2> |
@@ -545,7 +545,7 @@ <h4 id="running">Running</h4> |
545 | 545 | </span></span></code></pre></div><p>💡 If you have issues with building it locally due to your setup, you can download the |
546 | 546 | server assembly <a href="https://github.com/cchesser/java-perf-workshop/wiki/java-perf-workshop-server-1.0-SNAPSHOT.jar">here</a>.</p> |
547 | 547 | <p>Start the workshop service:</p> |
548 | | -<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">java -jar java-perf-workshop-server/target/java-perf-workshop-server-1.1.0-SNAPSHOT.jar server server.yml |
| 548 | +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">java -jar java-perf-workshop-server/target/java-perf-workshop-server-2.0-SNAPSHOT.jar server server.yml |
549 | 549 | </span></span></code></pre></div><h4 id="mocking-service-dependency">Mocking Service Dependency</h4> |
550 | 550 | <p>To simulate responses of kcdc.info (as the service may change over time), we will first run a mock |
551 | 551 | instance of this service using <a href="http://wiremock.org/">WireMock</a>.</p> |
@@ -709,18 +709,18 @@ <h3 id="jps">jps</h3> |
709 | 709 | <p>The <a href="https://docs.oracle.com/javase/7/docs/technotes/tools/share/jps.html">Java Virtual Machine Process Status Tool</a> can be used to see Java processes.</p> |
710 | 710 | <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"> $ jps |
711 | 711 | </span></span><span class="line"><span class="cl"><span class="m">7241</span> Jps |
712 | | -</span></span><span class="line"><span class="cl"><span class="m">6059</span> java-perf-workshop-server-1.1.0-SNAPSHOT.jar |
| 712 | +</span></span><span class="line"><span class="cl"><span class="m">6059</span> java-perf-workshop-server-2.0-SNAPSHOT.jar |
713 | 713 | </span></span><span class="line"><span class="cl"><span class="m">6925</span> jar |
714 | 714 | </span></span></code></pre></div><p>You can get more insight by using some of its flags:</p> |
715 | 715 | <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"> $ jps -lvm |
716 | | -</span></span><span class="line"><span class="cl"><span class="m">6059</span> java-perf-workshop-server/target/java-perf-workshop-server-1.1.0-SNAPSHOT.jar server server.yml |
| 716 | +</span></span><span class="line"><span class="cl"><span class="m">6059</span> java-perf-workshop-server/target/java-perf-workshop-server-2.0-SNAPSHOT.jar server server.yml |
717 | 717 | </span></span><span class="line"><span class="cl"><span class="m">6925</span> wiremock-standalone.jar --port <span class="m">9090</span> --root-dir java-perf-workshop-server/src/test/resources |
718 | 718 | </span></span><span class="line"><span class="cl"><span class="m">7582</span> sun.tools.jps.Jps -lvm -Dapplication.home<span class="o">=</span>/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home -Xms8m |
719 | 719 | </span></span></code></pre></div><h3 id="jcmd">jcmd</h3> |
720 | 720 | <p>The <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html">jcmd</a> utility is an attempt to consolidate other utilities into a single interface.</p> |
721 | 721 | <p>Running the <code>jcmd</code> command should display some of the same information that <code>jps</code> showed us (similar to <code>jps -m</code>):</p> |
722 | 722 | <pre tabindex="0"><code>$ jcmd |
723 | | -6059 java-perf-workshop-server/target/java-perf-workshop-server-1.1.0-SNAPSHOT.jar server server.yml |
| 723 | +6059 java-perf-workshop-server/target/java-perf-workshop-server-2.0-SNAPSHOT.jar server server.yml |
724 | 724 | 6925 wiremock-standalone.jar --port 9090 --root-dir java-perf-workshop-server/src/test/resources |
725 | 725 | 7838 sun.tools.jcmd.JCmd |
726 | 726 | </code></pre><h2 id="thread-dump">Thread Dump</h2> |
@@ -834,7 +834,7 @@ <h2 id="start-service-with-jfr">Start Service with JFR</h2> |
834 | 834 | <h3 id="start-from-the-console">Start from the console</h3> |
835 | 835 | <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Note, if you are running this server from a different folder, consider changing the SERVER_HOME</span> |
836 | 836 | </span></span><span class="line"><span class="cl"><span class="nv">SERVER_HOME</span><span class="o">=</span>java-perf-workshop-server/target |
837 | | -</span></span><span class="line"><span class="cl">java -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -jar <span class="nv">$SERVER_HOME</span>/java-perf-workshop-server-1.1.0-SNAPSHOT.jar server server.yml |
| 837 | +</span></span><span class="line"><span class="cl">java -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -jar <span class="nv">$SERVER_HOME</span>/java-perf-workshop-server-2.0-SNAPSHOT.jar server server.yml |
838 | 838 | </span></span></code></pre></div><h2 id="start-flight-recording-from-jmc">Start Flight Recording from JMC</h2> |
839 | 839 | <figure><img src="/docs/jmc/intro-jmc9/img/jfr-start.png" |
840 | 840 | alt="JFR Start"> |
@@ -2159,7 +2159,7 @@ <h3 id="enabling-logs">Enabling logs</h3> |
2159 | 2159 | <p>With our service, let’s go ahead and start it up with GC logging enabled:</p> |
2160 | 2160 | <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Navigate to the root directory of this project</span> |
2161 | 2161 | </span></span><span class="line"><span class="cl">java -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log -XX:GCLogFileSize<span class="o">=</span>5M -XX:NumberOfGCLogFiles<span class="o">=</span><span class="m">2</span> <span class="se">\ |
2162 | | -</span></span></span><span class="line"><span class="cl"><span class="se"></span> -jar java-perf-workshop-server/target/java-perf-workshop-server-1.1.0-SNAPSHOT.jar server server.yml |
| 2162 | +</span></span></span><span class="line"><span class="cl"><span class="se"></span> -jar java-perf-workshop-server/target/java-perf-workshop-server-2.0-SNAPSHOT.jar server server.yml |
2163 | 2163 | </span></span></code></pre></div><h3 id="enabling-while-jvm-is-running">Enabling while JVM is running</h3> |
2164 | 2164 | <p>In higher versions of the JDK (9+), you can enable GC logging without having to restart the JVM (reference: <a href="https://github.com/thomasdarimont">Thomas Darimont</a>):</p> |
2165 | 2165 | <script src="https://gist.github.com/thomasdarimont/f89fc79491241af7a064e1b3ca2757a9.js"></script> |
@@ -2269,9 +2269,9 @@ <h2 id="building">Building</h2> |
2269 | 2269 | <p>Run <code>mvn clean package -Pdocker</code> , the <code>docker</code> profile enables the docker-maven-plugin.</p> |
2270 | 2270 | <p>You can view the generated images with <code>docker image ls | grep workshop</code>:</p> |
2271 | 2271 | <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ docker image ls <span class="p">|</span> grep workshop |
2272 | | -</span></span><span class="line"><span class="cl">workshop-wiremock 1.1.0-SNAPSHOT 2cc43b2348c8 <span class="m">2</span> minutes ago 657MB |
| 2272 | +</span></span><span class="line"><span class="cl">workshop-wiremock 2.0-SNAPSHOT 2cc43b2348c8 <span class="m">2</span> minutes ago 657MB |
2273 | 2273 | </span></span><span class="line"><span class="cl">workshop-wiremock latest 2cc43b2348c8 <span class="m">2</span> minutes ago 657MB |
2274 | | -</span></span><span class="line"><span class="cl">workshop-server 1.1.0-SNAPSHOT be7cfbd0735a <span class="m">2</span> minutes ago 659MB |
| 2274 | +</span></span><span class="line"><span class="cl">workshop-server 2.0-SNAPSHOT be7cfbd0735a <span class="m">2</span> minutes ago 659MB |
2275 | 2275 | </span></span><span class="line"><span class="cl">workshop-server latest be7cfbd0735a <span class="m">2</span> minutes ago 659MB |
2276 | 2276 | </span></span></code></pre></div><h2 id="running">Running</h2> |
2277 | 2277 | <p>Since our Workshop Service depends on the Wiremock Service, we’re going to use <a href="https://docs.docker.com/compose/">docker-compose</a> to create a docker environment with both our services ready to go:</p> |
|
0 commit comments