SlideShare uma empresa Scribd logo
1 de 96
Baixar para ler offline
How to get the most of of your
Hibernate, JBoss EAP 7 application
Ståle Pedersen
Agenda
Lessons of what we've learned….
● Methodology
● Tools
● Profiling
● Benchmarking
● EAP 7 Performance improvements
Methodology
Performance optimization Methodology
Methodology
What
● What prevents my application from running faster?
○ Monitoring
Methodology
What -> Where
● What prevents my application from running faster?
○ Monitoring
● Where does it hide?
○ Profiling
Methodology
What -> Where -> How
● What prevents my application from running faster?
○ Monitoring
● Where does it hide?
○ Profiling
● How can we improve performance?
○ tuning/optimizing
Methodology
Top down approach
● System Level
○ Disks, CPU, Memory, Network, ....
Methodology
Top down approach
● System Level
○ Disks, CPU, Memory, Network, ....
● JVM Level
○ Heap, GC, JIT, Classloading, ….
Methodology
Top down approach
● System Level
○ Disks, CPU, Memory, Network, ....
● JVM Level
○ Heap, GC, JIT, Classloading, ….
● Application Level
○ APIs, Algorithms, Threading, ….
Methodology
What are we looking for?
Methodology
What are we looking for?
● Lot of %sys
○ Networking, scheduling, swapping
Methodology
What are we looking for?
● Lot of %sys
○ Networking, scheduling, swapping
● Lot of %iowait
○ Disk activity, not enough disk block/caches
Methodology
What are we looking for?
● Lot of %sys
○ Networking, scheduling, swapping
● Lot of %iowait
○ Disk activity, not enough disk block/caches
● Lot of %irq, %soft
○ Interacting with devices
Methodology
What are we looking for?
● Lot of %sys
○ Networking, scheduling, swapping
● Lot of %iowait
○ Disk activity, not enough disk block/caches
● Lot of %irq, %soft
○ Interacting with devices
● Lot of %idle
○ Few (runnable) threads, big GC pauses
Methodology
What are we looking for?
● Lot of %sys
○ Networking, scheduling, swapping
● Lot of %iowait
○ Disk activity, not enough disk block/caches
● Lot of %irq, %soft
○ Interacting with devices
● Lot of %idle
○ Few (runnable) threads, big GC pauses
● Lot of %user
○ No need to use profiling until you have high %user time
Tools
Tools
Tool types
● Observability, safe, depending on overhead
● Benchmarking, load testing. Difficult to do in a production environment
● Tuning, changes could hurt performance, perhaps not now or at the current load, but later
Tools
● Tool types
○ Observability, basic
■ top
■ dmesg
■ free
■ vmstat
■ iostat
■ mpstat
■ sar
top
System summary, list processes or threads
● Can miss processes that do not last long enough to be caught
● Will most often consume a fair bit of CPU
● Default summary CPU usage, use “1” to get a better view of cores
dmesg
Print kernel ring buffer
● Display system messages
● An error tool that can give info why an application is slow/dies
● Eg: OOM issues, filehandles, TCP errors, ++
free
Memory usage
● Give a quick overview over memory usage
● Virtual page, and block devices I/O cache
vmstat
Virtual memory stat
● r - number of processes running (waiting to run), should be < num cpus
● b - number of processes sleeping
● free – idle memory, should be high
● si, so – memory swapped to/form disk, should be 0
● cpu, percentages of total CPU time
○ user time, system time, idle, waiting for I/O and stolen time
○ system time used for I/O
mpstat
Processors statistics
● Gives a good overview of CPU time
● Comparable to top (with 1 pressed to show all CPU's), but use less CPU
sar
System activity information
● Check network throughput
● rxpck/s, txpck/s – total number of packets received/transmitted per second
● Use EDEV for statistics on failures the network devices are reporting
sar
System activity information
● Reports TCP network traffic and errors
● active/s – number of local initiated TCP connections per second
● passive/s – number of remote initiated TCP connections per second
● retrans/s – number of segments retransmitted per second
iostat
Monitor system I/O devices
Java Tools
Observing Java applications
Java Tools
Observing Java applications
● Not as many tools out of the box
Java Tools
Observing Java applications
● Not as many tools out of the box
○ but they are powerful
● jstack, jstat, jcmd, jps, jmap, jconsole, jvisualvm
jstack
Prints Java thread stack traces for a Java process
● Useful to quickly look at the current state of the threads
jmap
Prints Java shared object memory maps or heap memory
● Several different options
○ histo[:live] – Prints a histogram of the heap, list classes, number of objects, size
○ heap – Prints information regarding heap status and usage
○ dump:<dump-options> – Dump java heap
○ No options will print shared object mappings
jstat
Monitor JVM statistics; gc, compilations, classes
● Many useful options: class, compiler, gc, gccapacity, gccause, gcnew, gcold, gcutil, ...
○ class – number of classes loaded/unloaded, Kbytes loaded/unloaded
○ compiler - number of compiled, failed, invalid compilations, with failedtype/method
○ gcutil – garbage collection statistics; survivor space 0,1, eden, old space, permanent,
young generation, gc collection time, …
Byteman
A tool that simplifies Java tracing, monitoring and testing
● http://byteman.jboss.org/
RULE ServerLogger_serverStopped
CLASS org.jboss.as.server.ApplicationServerService
METHOD stop
AT ENTRY
IF TRUE
DO
openTrace("stop","/tmp/stop.log");
traceStack("stop: "+Thread.currentThread.getName()+"n","stop");
ENDRULE
Java Tools
What have we learned
● Java have decent monitoring tools out of the box
● Not as easy to use, but powerful
● Gives a lot of information as a (fairly) low cost
● Also included
○ VisualVM
○ JConsole
Tools
Final thought
● Which tool you use/prefer is not important
Tools
Final thought
● Which tool you use/prefer is not important
○ What is important is that you can measure everything
Profilers
Profilers
High CPU load
Where is it?
Profilers
High CPU load
Can profilers help?
Profilers
High CPU load
Can profilers help?
Profilers (try) to show “where” application time is spent
CPU Profiling Limitations
● Many problems are not CPU Bound
○ Networking
○ Database
○ Remote Services
○ I/O
○ Garbage Collection
○ ….
Different CPU Profilers
● Instrumenting
○ Adds timing code to application
● Sampling
○ Collect thread dumps periodically
○ VisualVM, JProfiler, Yourkit, ….
Sampling CPU Profilers
[survey made by RebelLabs]
Sampling Profilers
Samples
MainThread.run()
Backend.findUser()
Controller.doAction()
new User() fetchUser()
display()
someLogic() moreLogic()
evenMoreLogic()
Sampling Profilers
More samples
MainThread.run()
Backend.findUser()
Controller.doAction()
new User() fetchUser()
display()
someLogic() moreLogic()
evenMoreLogic()
Sampling Profilers
Stack tracing
● Most profilers use JVMTI
○ Using GetCallTrace
■ Triggers a global safepoint
■ Collect stack trace
● Large impact on application
● Samples only at safepoints
What is a safepoint?
Java threads poll a global flag
○ At method exit/enter
○ At “uncounted” (int) loops
What is a safepoint?
A safepoint can be delayed by
○ Large Methods
○ Long running “uncounted” (int) loops
Sampling Profilers
Safepoint bias
MainThread.run()
Backend.findUser()
Controller.doAction()
new User() fetchUser()
display()
someLogic() moreLogic()
evenMoreLogic()
Safepoint summary
JVM have many safepoint operations
• To monitor its impact use
– -XX:+PrintGCApplicationStoppedTime
– -XX:+PrintSafepointStatistics
– -XX:+PrintSafepointStatisticsCount=X
Sample Profilers
Java profilers that work better!
● Profilers that use AsyncGetCallTrace
○ Java Mission Control
■ Very good tool, just don’t use it in production (without a license)
○ Oracle Solaris Studio
■ Not well known, it’s free and it works on Linux
○ Honest Profiler
■ Open source, cruder, but works very well
Java Mission Control/Flight Recorder
● Designed for usage in production systems
● Potentially low overhead
○ Be wary of what you record
■ Capture everything is not a good strategy
■ Capture data for one specific thing (memory, contention, cpu)
● Capturing data will not be skewed by safepoints
○ Make sure to use:
■ -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints
● Need a license to be used in production, free to use for development
Java Profilers problem
● Java stack only
● Method tracing have large observer effect
● Do not report:
○ GC
○ Deopt
○ Eg System.arrayCopy ….
Perf
● A system profiler
● Show the whole stack
○ JVM
○ GC
○ Kernel
● Previously not very useful for Java
○ Missing stacks
○ Method symbols missing
Perf
● Solution
○ Java8u60 added the option -XX:PreserveFramePointer
■ Allows system profilers to capture stack traces
● Visibility of everything
○ Java methods
○ JVM, GC, libraries, kernel
● Low overhead
● Flamegraph
System C++
Java
Flamegraph
Top edge show which method is using CPU and how much.
MainThread.run()
a()
b()
e()
c()
d()
Limitations of Perf Mixed Mode
● Frames might be missing (inlined)
● Disable inlining:
○ -XX:-Inline
○ Many more Java frames
○ Will be slower
● perf-map-agent have experimental un-inline support
Profiling at Red Hat
● Perf for CPU profiling
● Java Mission Control
○ Contention
○ Thread analysis
○ Memory usage
Benchmarking
Benchmarking
Most benchmarks are flawed, wrong and full of errors.
Benchmarking
Most benchmarks are flawed, wrong and full of errors
○ Used cautiously it can be a very valuable tool to reveal performance issues, compare
applications, libraries, ...
Benchmarking
● Java Benchmarking libraries
○ Microbenchmarks
■ Java Microbenchmark Harness
● http://openjdk.java.net/projects/code-tools/jmh/
■ JMH is the only library on Java we recommend for microbenchmarks
■ Still possible to write bad benchmarks with JMH
Benchmarking
Load testing frameworks
○ Gatling
■ http://gatling.io/
○ Faban
■ http://faban.org/
Benchmarking
A Hibernate microbenchmark lesson
● We wanted to compare cache lookup performance between Hibernate 4 and 5
○ We also wanted to test a new cache we added to Infinispan, Simple cache
● Created several JMH benchmarks that tested different use cases
○ Default cache with and without eviction
○ Simple cache with and without eviction
Benchmarking
A Hibernate microbenchmark lesson
4.3 w/ eviction 292050 ops/s
4.3 w/o eviction 303992 ops/s
5.0 w/ eviction 314629 ops/s
5.0 w/o eviction 611487 ops/s
5.0 w/o eviction (simple cache) 706509 ops/s
Benchmarking
We progressed to a large full scale EE benchmark.
● We expect similar or better results vs EAP6 (Hibernate 4.2)
Benchmarking
We progressed to a large full scale EE benchmark.
● We expect similar or better results vs EAP6 (Hibernate 4.2)
○ The response times are 5-10x slower!
○ And we are now CPU bound
Benchmarking
We progressed to a large full scale EE benchmark.
● We expect similar or better results vs EAP 6 (Hibernate 4.2)
○ The response times are 5-10x slower!
○ And we are now CPU bound
● How is that possible?
Benchmarking
We progressed to a large full scale EE benchmark.
● We expect similar or better results vs EAP 6 (Hibernate 4.2)
○ The response times are 5-10x slower!
○ And we are now CPU bound
● How is that possible?
○ We had several microbenchmarks showing better performance on Hibernate 5
○ Could the problem lie in WildFly 10?
○ Let’s profile!
Benchmarking
Benchmarking
Benchmarking
What had happened?
● Why did we spend so much CPU in this method and why do it not reflect the results from the
microbenchmarks?
Benchmarking
What had happened?
● Why did we spend so much CPU in this method and why do it not reflect the results from the
microbenchmarks?
○ We started debugging
■ -XX+PrintCompilation
● Show when/which methods are compiled/decompiled
● Showed that the method only was compiled once, but twice on EAP 6 (Hib4.2)
● Why?
Benchmarking
What had happened?
● We had made several changes internally in Hibernate 5 to reduce memory usage
Benchmarking
What had happened?
● We had made several changes internally in Hibernate 5 to reduce memory usage
○ One specific class was refactored to an interface
○ Changing a monomorphic call site to a bimorphic call site
■ Which can prevent compiling/inlining of methods!
Benchmarking
What had happened?
● We had made several changes internally in Hibernate 5 to reduce memory usage
○ One specific class was refactored to an interface
○ Changing a monomorphic call site to a bimorphic call site
■ Which can prevent compiling/inlining of methods!
● Direct method calls will “always” be optimized (no subclassing)
● In Java subclassing/inheritance might cause the JVM to no optimize method calls
Benchmarking
Lessons learned
● Code changes might have unexpected consequences
○ In this case, reduced memory, increased CPU usage
● Benchmarks are good, but should always be questioned
○ When you benchmark, analyze (all/most) possible use cases
Benchmarking
Lessons learned
● Code changes might have unexpected consequences
○ In this case, reduced memory, increased CPU usage
● Benchmarks are good, but should always be questioned
○ When you benchmark, analyze (all/most) possible use cases
● Yes, we ended up fixing the CPU usage without causing it to use more memory!
EAP 7 Performance Improvements
Performance highlights
● JPA
● JCA
● Web
EAP 7 Performance Improvements
Hibernate 5 performance improvements
● Memory usage
○ Reduced memory usage 20-50%
EAP 7 Performance Improvements
Hibernate 5 performance improvements
● Memory usage
○ Reduced memory usage 20-50%
● Cache improvements
○ Simple Cache
■ 132% Improvement with immutable objects
EAP 7 Performance Improvements
Hibernate 5 performance improvements
● Memory usage
○ Reduced memory usage 20-50%
● Cache improvements
○ Simple Cache
■ 132% Improvement with immutable objects
● Pooled Optimizer
○ In persistence.xml add property
■ hibernate.id.optimizer.pooled.preferred value="pooled-lotl”
EAP 7 Performance Improvements
Hibernate 5 performance improvements
● Bytecode enhancements
○ hibernate.enhancer.enableDirtyTracking
○ hibernate.enhancer.enableLazyInitialization
● Improved caching
○ hibernate.cache.use_reference_entries
○ hibernate.cache.infinispan.immutable-entity.cfg = “immutable-entity”
EAP 7 Performance Improvements
IronJacamar performance improvements
● Contention issues
○ New default ManagedConnectionPool
EAP 7 Performance Improvements
IronJacamar performance improvements
● Contention issues
○ New default ManagedConnectionPool
● Disabled logging
○ Not everything is disabled
■ <datasource …. enlistment-trace="false" >
EAP 7 Performance Improvements
IronJacamar performance improvements
● Contention issues
○ New default ManagedConnectionPool
● Disabled logging
○ Not everything is disabled
■ <datasource …. enlistment-trace="false" >
● Fairness
○ Set to true at default
■ <datasource> <pool><fair>false</fair></pool>
EAP 7 Performance Improvements
Undertow vs JBossWeb
● Undertow is nonblocking
● JBossWeb have a thread for each connection
EAP 7 Performance Improvements
Simple HelloServlet Benchmark
EAP 6.4 EAP 7
RPS Mean 95% 99% Mean 95% 99%
5000 2 1 4 0 1 1
15000 3 4 56 1 2 6
25000 13 18 247 1 3 7
40000 46 246 414 12 23 84
55000 361 647 1889 65 136 635
EAP 7 Performance Improvements
● Lightweight
● Embeddable
● Scalable
● HTTP/2
● HTTP Upgrade
EAP 7 Performance Improvements
Overall EAP 7 Performance tricks
● Remote byte pooling
○ jboss.remoting.pooled-buffers
● Disable CDI
○ CDI is enabled by default in EAP 7
EAP 7 Performance Improvements
Overall EAP 7 Performance tricks
● Remote byte pooling
○ jboss.remoting.pooled-buffers
● Disable CDI
○ CDI is enabled by default in EAP 7
Q&A

Mais conteúdo relacionado

Mais procurados

FOSDEM 2015: gdb tips and tricks for MySQL DBAs
FOSDEM 2015: gdb tips and tricks for MySQL DBAsFOSDEM 2015: gdb tips and tricks for MySQL DBAs
FOSDEM 2015: gdb tips and tricks for MySQL DBAsValerii Kravchuk
 
Gdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) finalGdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) finalValeriy Kravchuk
 
Flame Graphs for MySQL DBAs - FOSDEM 2022 MySQL Devroom
Flame Graphs for MySQL DBAs - FOSDEM 2022 MySQL DevroomFlame Graphs for MySQL DBAs - FOSDEM 2022 MySQL Devroom
Flame Graphs for MySQL DBAs - FOSDEM 2022 MySQL DevroomValeriy Kravchuk
 
A Scalable I/O Manager for GHC
A Scalable I/O Manager for GHCA Scalable I/O Manager for GHC
A Scalable I/O Manager for GHCJohan Tibell
 
Understanding MySQL Performance through Benchmarking
Understanding MySQL Performance through BenchmarkingUnderstanding MySQL Performance through Benchmarking
Understanding MySQL Performance through BenchmarkingLaine Campbell
 
Nagios Conference 2014 - Jeff Mendoza - Monitoring Microsoft Azure with Nagios
Nagios Conference 2014 - Jeff Mendoza - Monitoring Microsoft Azure with NagiosNagios Conference 2014 - Jeff Mendoza - Monitoring Microsoft Azure with Nagios
Nagios Conference 2014 - Jeff Mendoza - Monitoring Microsoft Azure with NagiosNagios
 
Nagios Conference 2014 - Troy Lea - Monitoring VMware Virtualization Using vMA
Nagios Conference 2014 - Troy Lea - Monitoring VMware Virtualization Using vMANagios Conference 2014 - Troy Lea - Monitoring VMware Virtualization Using vMA
Nagios Conference 2014 - Troy Lea - Monitoring VMware Virtualization Using vMANagios
 
Performance is a feature! - London .NET User Group
Performance is a feature! - London .NET User GroupPerformance is a feature! - London .NET User Group
Performance is a feature! - London .NET User GroupMatt Warren
 
Instant add column for inno db in mariadb 10.3+ (fosdem 2018, second draft)
Instant add column for inno db in mariadb 10.3+ (fosdem 2018, second draft)Instant add column for inno db in mariadb 10.3+ (fosdem 2018, second draft)
Instant add column for inno db in mariadb 10.3+ (fosdem 2018, second draft)Valerii Kravchuk
 
Applying profilers to my sql (fosdem 2017)
Applying profilers to my sql (fosdem 2017)Applying profilers to my sql (fosdem 2017)
Applying profilers to my sql (fosdem 2017)Valeriy Kravchuk
 
More on gdb for my sql db as (fosdem 2016)
More on gdb for my sql db as (fosdem 2016)More on gdb for my sql db as (fosdem 2016)
More on gdb for my sql db as (fosdem 2016)Valeriy Kravchuk
 
Planning For High Performance Web Application
Planning For High Performance Web ApplicationPlanning For High Performance Web Application
Planning For High Performance Web ApplicationYue Tian
 
Java 9-10 What's New
Java 9-10 What's NewJava 9-10 What's New
Java 9-10 What's NewNicola Pedot
 
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB Devroom
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB DevroomMore on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB Devroom
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB DevroomValeriy Kravchuk
 
Planning for-high-performance-web-application
Planning for-high-performance-web-applicationPlanning for-high-performance-web-application
Planning for-high-performance-web-applicationNguyễn Duy Nhân
 
Java profiling Do It Yourself
Java profiling Do It YourselfJava profiling Do It Yourself
Java profiling Do It Yourselfaragozin
 
A brief introduction to PostgreSQL
A brief introduction to PostgreSQLA brief introduction to PostgreSQL
A brief introduction to PostgreSQLVu Hung Nguyen
 

Mais procurados (20)

FOSDEM 2015: gdb tips and tricks for MySQL DBAs
FOSDEM 2015: gdb tips and tricks for MySQL DBAsFOSDEM 2015: gdb tips and tricks for MySQL DBAs
FOSDEM 2015: gdb tips and tricks for MySQL DBAs
 
Gdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) finalGdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) final
 
Flame Graphs for MySQL DBAs - FOSDEM 2022 MySQL Devroom
Flame Graphs for MySQL DBAs - FOSDEM 2022 MySQL DevroomFlame Graphs for MySQL DBAs - FOSDEM 2022 MySQL Devroom
Flame Graphs for MySQL DBAs - FOSDEM 2022 MySQL Devroom
 
A Scalable I/O Manager for GHC
A Scalable I/O Manager for GHCA Scalable I/O Manager for GHC
A Scalable I/O Manager for GHC
 
Understanding MySQL Performance through Benchmarking
Understanding MySQL Performance through BenchmarkingUnderstanding MySQL Performance through Benchmarking
Understanding MySQL Performance through Benchmarking
 
Nagios Conference 2014 - Jeff Mendoza - Monitoring Microsoft Azure with Nagios
Nagios Conference 2014 - Jeff Mendoza - Monitoring Microsoft Azure with NagiosNagios Conference 2014 - Jeff Mendoza - Monitoring Microsoft Azure with Nagios
Nagios Conference 2014 - Jeff Mendoza - Monitoring Microsoft Azure with Nagios
 
Nagios Conference 2014 - Troy Lea - Monitoring VMware Virtualization Using vMA
Nagios Conference 2014 - Troy Lea - Monitoring VMware Virtualization Using vMANagios Conference 2014 - Troy Lea - Monitoring VMware Virtualization Using vMA
Nagios Conference 2014 - Troy Lea - Monitoring VMware Virtualization Using vMA
 
Performance is a feature! - London .NET User Group
Performance is a feature! - London .NET User GroupPerformance is a feature! - London .NET User Group
Performance is a feature! - London .NET User Group
 
Instant add column for inno db in mariadb 10.3+ (fosdem 2018, second draft)
Instant add column for inno db in mariadb 10.3+ (fosdem 2018, second draft)Instant add column for inno db in mariadb 10.3+ (fosdem 2018, second draft)
Instant add column for inno db in mariadb 10.3+ (fosdem 2018, second draft)
 
Applying profilers to my sql (fosdem 2017)
Applying profilers to my sql (fosdem 2017)Applying profilers to my sql (fosdem 2017)
Applying profilers to my sql (fosdem 2017)
 
More on gdb for my sql db as (fosdem 2016)
More on gdb for my sql db as (fosdem 2016)More on gdb for my sql db as (fosdem 2016)
More on gdb for my sql db as (fosdem 2016)
 
Lock free programming- pro tips
Lock free programming- pro tipsLock free programming- pro tips
Lock free programming- pro tips
 
Planning For High Performance Web Application
Planning For High Performance Web ApplicationPlanning For High Performance Web Application
Planning For High Performance Web Application
 
Java 9-10 What's New
Java 9-10 What's NewJava 9-10 What's New
Java 9-10 What's New
 
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB Devroom
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB DevroomMore on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB Devroom
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB Devroom
 
Planning for-high-performance-web-application
Planning for-high-performance-web-applicationPlanning for-high-performance-web-application
Planning for-high-performance-web-application
 
Java On Speed
Java On SpeedJava On Speed
Java On Speed
 
De Java 8 a Java 17
De Java 8 a Java 17De Java 8 a Java 17
De Java 8 a Java 17
 
Java profiling Do It Yourself
Java profiling Do It YourselfJava profiling Do It Yourself
Java profiling Do It Yourself
 
A brief introduction to PostgreSQL
A brief introduction to PostgreSQLA brief introduction to PostgreSQL
A brief introduction to PostgreSQL
 

Destaque

Agile Is A Four-Letter Word (Jen Krieger)
Agile Is A Four-Letter Word (Jen Krieger)Agile Is A Four-Letter Word (Jen Krieger)
Agile Is A Four-Letter Word (Jen Krieger)Red Hat Developers
 
Developer Meet Designer (Andres Galante & Brian Leathem)
Developer Meet Designer (Andres Galante & Brian Leathem)Developer Meet Designer (Andres Galante & Brian Leathem)
Developer Meet Designer (Andres Galante & Brian Leathem)Red Hat Developers
 
Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...
Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...
Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...Red Hat Developers
 
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)Red Hat Developers
 
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Red Hat Developers
 
High Performance Data Storage in a Microservices Environment
High Performance Data Storage in a Microservices EnvironmentHigh Performance Data Storage in a Microservices Environment
High Performance Data Storage in a Microservices EnvironmentRed Hat Developers
 
Containers: Under The Hood (Vincent Batts)
Containers: Under The Hood (Vincent Batts)Containers: Under The Hood (Vincent Batts)
Containers: Under The Hood (Vincent Batts)Red Hat Developers
 
MicroServices for Java Developers
MicroServices for Java Developers MicroServices for Java Developers
MicroServices for Java Developers Red Hat Developers
 
Microservices with Docker, Kubernetes, and Jenkins
Microservices with Docker, Kubernetes, and JenkinsMicroservices with Docker, Kubernetes, and Jenkins
Microservices with Docker, Kubernetes, and JenkinsRed Hat Developers
 
Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...
Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...
Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...Red Hat Developers
 
Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)
Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)
Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)Red Hat Developers
 
JBoss Enterprise Application Platform 6 Troubleshooting
JBoss Enterprise Application Platform 6 TroubleshootingJBoss Enterprise Application Platform 6 Troubleshooting
JBoss Enterprise Application Platform 6 TroubleshootingAlexandre Cavalcanti
 
EAP6 performance Tuning
EAP6 performance TuningEAP6 performance Tuning
EAP6 performance TuningPraveen Adupa
 
7 Must-Try User Experience Tactics For Developers (Tiffany Nolan & Catherine ...
7 Must-Try User Experience Tactics For Developers (Tiffany Nolan & Catherine ...7 Must-Try User Experience Tactics For Developers (Tiffany Nolan & Catherine ...
7 Must-Try User Experience Tactics For Developers (Tiffany Nolan & Catherine ...Red Hat Developers
 
It's not tools, Stupid
It's not tools, StupidIt's not tools, Stupid
It's not tools, Stupidke4qqq
 
Codefresh + BlazeMeter Webinar: Continuous Testing for Containerized Applicat...
Codefresh + BlazeMeter Webinar: Continuous Testing for Containerized Applicat...Codefresh + BlazeMeter Webinar: Continuous Testing for Containerized Applicat...
Codefresh + BlazeMeter Webinar: Continuous Testing for Containerized Applicat...Brittany Ingram
 
EclipseCon Europe 2016, S. Cela, M.Istria: Eclipse Generic and Extensible Edi...
EclipseCon Europe 2016, S. Cela, M.Istria: Eclipse Generic and Extensible Edi...EclipseCon Europe 2016, S. Cela, M.Istria: Eclipse Generic and Extensible Edi...
EclipseCon Europe 2016, S. Cela, M.Istria: Eclipse Generic and Extensible Edi...Mickael Istria
 
JBoss AS7 by Matt Brasier
JBoss AS7 by Matt BrasierJBoss AS7 by Matt Brasier
JBoss AS7 by Matt BrasierJBUG London
 
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...Red Hat Developers
 
Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)
Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)
Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)Red Hat Developers
 

Destaque (20)

Agile Is A Four-Letter Word (Jen Krieger)
Agile Is A Four-Letter Word (Jen Krieger)Agile Is A Four-Letter Word (Jen Krieger)
Agile Is A Four-Letter Word (Jen Krieger)
 
Developer Meet Designer (Andres Galante & Brian Leathem)
Developer Meet Designer (Andres Galante & Brian Leathem)Developer Meet Designer (Andres Galante & Brian Leathem)
Developer Meet Designer (Andres Galante & Brian Leathem)
 
Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...
Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...
Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...
 
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
 
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
 
High Performance Data Storage in a Microservices Environment
High Performance Data Storage in a Microservices EnvironmentHigh Performance Data Storage in a Microservices Environment
High Performance Data Storage in a Microservices Environment
 
Containers: Under The Hood (Vincent Batts)
Containers: Under The Hood (Vincent Batts)Containers: Under The Hood (Vincent Batts)
Containers: Under The Hood (Vincent Batts)
 
MicroServices for Java Developers
MicroServices for Java Developers MicroServices for Java Developers
MicroServices for Java Developers
 
Microservices with Docker, Kubernetes, and Jenkins
Microservices with Docker, Kubernetes, and JenkinsMicroservices with Docker, Kubernetes, and Jenkins
Microservices with Docker, Kubernetes, and Jenkins
 
Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...
Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...
Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...
 
Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)
Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)
Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)
 
JBoss Enterprise Application Platform 6 Troubleshooting
JBoss Enterprise Application Platform 6 TroubleshootingJBoss Enterprise Application Platform 6 Troubleshooting
JBoss Enterprise Application Platform 6 Troubleshooting
 
EAP6 performance Tuning
EAP6 performance TuningEAP6 performance Tuning
EAP6 performance Tuning
 
7 Must-Try User Experience Tactics For Developers (Tiffany Nolan & Catherine ...
7 Must-Try User Experience Tactics For Developers (Tiffany Nolan & Catherine ...7 Must-Try User Experience Tactics For Developers (Tiffany Nolan & Catherine ...
7 Must-Try User Experience Tactics For Developers (Tiffany Nolan & Catherine ...
 
It's not tools, Stupid
It's not tools, StupidIt's not tools, Stupid
It's not tools, Stupid
 
Codefresh + BlazeMeter Webinar: Continuous Testing for Containerized Applicat...
Codefresh + BlazeMeter Webinar: Continuous Testing for Containerized Applicat...Codefresh + BlazeMeter Webinar: Continuous Testing for Containerized Applicat...
Codefresh + BlazeMeter Webinar: Continuous Testing for Containerized Applicat...
 
EclipseCon Europe 2016, S. Cela, M.Istria: Eclipse Generic and Extensible Edi...
EclipseCon Europe 2016, S. Cela, M.Istria: Eclipse Generic and Extensible Edi...EclipseCon Europe 2016, S. Cela, M.Istria: Eclipse Generic and Extensible Edi...
EclipseCon Europe 2016, S. Cela, M.Istria: Eclipse Generic and Extensible Edi...
 
JBoss AS7 by Matt Brasier
JBoss AS7 by Matt BrasierJBoss AS7 by Matt Brasier
JBoss AS7 by Matt Brasier
 
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
 
Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)
Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)
Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)
 

Semelhante a How To Get The Most Out Of Your Hibernate, JBoss EAP 7 Application (Ståle Pedersen)

Archivematica Technical Training Diagnostics Guide (September 2018)
Archivematica Technical Training Diagnostics Guide (September 2018)Archivematica Technical Training Diagnostics Guide (September 2018)
Archivematica Technical Training Diagnostics Guide (September 2018)Artefactual Systems - Archivematica
 
Gatling - Bordeaux JUG
Gatling - Bordeaux JUGGatling - Bordeaux JUG
Gatling - Bordeaux JUGslandelle
 
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling ToolsTIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling ToolsXiaozhe Wang
 
MongoDB Operational Best Practices (mongosf2012)
MongoDB Operational Best Practices (mongosf2012)MongoDB Operational Best Practices (mongosf2012)
MongoDB Operational Best Practices (mongosf2012)Scott Hernandez
 
linux monitoring and performance tunning
linux monitoring and performance tunning linux monitoring and performance tunning
linux monitoring and performance tunning iman darabi
 
Monitoring Big Data Systems - "The Simple Way"
Monitoring Big Data Systems - "The Simple Way"Monitoring Big Data Systems - "The Simple Way"
Monitoring Big Data Systems - "The Simple Way"Demi Ben-Ari
 
Dynamic tracing of MariaDB on Linux - problems and solutions (MariaDB Server ...
Dynamic tracing of MariaDB on Linux - problems and solutions (MariaDB Server ...Dynamic tracing of MariaDB on Linux - problems and solutions (MariaDB Server ...
Dynamic tracing of MariaDB on Linux - problems and solutions (MariaDB Server ...Valeriy Kravchuk
 
Tools and Tips to Diagnose Performance Issues
Tools and Tips to Diagnose Performance IssuesTools and Tips to Diagnose Performance Issues
Tools and Tips to Diagnose Performance IssuesClaudio Miranda
 
Lessons learned from designing QA automation event streaming platform(IoT big...
Lessons learned from designing QA automation event streaming platform(IoT big...Lessons learned from designing QA automation event streaming platform(IoT big...
Lessons learned from designing QA automation event streaming platform(IoT big...Omid Vahdaty
 
Velocity 2015 linux perf tools
Velocity 2015 linux perf toolsVelocity 2015 linux perf tools
Velocity 2015 linux perf toolsBrendan Gregg
 
Nagios Conference 2014 - Eric Mislivec - Getting Started With Nagios Core
Nagios Conference 2014 - Eric Mislivec - Getting Started With Nagios CoreNagios Conference 2014 - Eric Mislivec - Getting Started With Nagios Core
Nagios Conference 2014 - Eric Mislivec - Getting Started With Nagios CoreNagios
 
Machine learning and big data @ uber a tale of two systems
Machine learning and big data @ uber a tale of two systemsMachine learning and big data @ uber a tale of two systems
Machine learning and big data @ uber a tale of two systemsZhenxiao Luo
 
Linux Systems Performance 2016
Linux Systems Performance 2016Linux Systems Performance 2016
Linux Systems Performance 2016Brendan Gregg
 
Lessons learned from designing a QA Automation for analytics databases (big d...
Lessons learned from designing a QA Automation for analytics databases (big d...Lessons learned from designing a QA Automation for analytics databases (big d...
Lessons learned from designing a QA Automation for analytics databases (big d...Omid Vahdaty
 
Guider: An Integrated Runtime Performance Analyzer on AGL
Guider: An Integrated Runtime Performance Analyzer on AGLGuider: An Integrated Runtime Performance Analyzer on AGL
Guider: An Integrated Runtime Performance Analyzer on AGLPeace Lee
 
Journey through high performance django application
Journey through high performance django applicationJourney through high performance django application
Journey through high performance django applicationbangaloredjangousergroup
 
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...Codemotion
 
Monitoring Big Data Systems "Done the simple way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems "Done the simple way" - Demi Ben-Ari - Codemotion...Monitoring Big Data Systems "Done the simple way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems "Done the simple way" - Demi Ben-Ari - Codemotion...Demi Ben-Ari
 

Semelhante a How To Get The Most Out Of Your Hibernate, JBoss EAP 7 Application (Ståle Pedersen) (20)

Archivematica Technical Training Diagnostics Guide (September 2018)
Archivematica Technical Training Diagnostics Guide (September 2018)Archivematica Technical Training Diagnostics Guide (September 2018)
Archivematica Technical Training Diagnostics Guide (September 2018)
 
Gatling - Bordeaux JUG
Gatling - Bordeaux JUGGatling - Bordeaux JUG
Gatling - Bordeaux JUG
 
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling ToolsTIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
 
Optimizing Linux Servers
Optimizing Linux ServersOptimizing Linux Servers
Optimizing Linux Servers
 
MongoDB Operational Best Practices (mongosf2012)
MongoDB Operational Best Practices (mongosf2012)MongoDB Operational Best Practices (mongosf2012)
MongoDB Operational Best Practices (mongosf2012)
 
linux monitoring and performance tunning
linux monitoring and performance tunning linux monitoring and performance tunning
linux monitoring and performance tunning
 
Monitoring Big Data Systems - "The Simple Way"
Monitoring Big Data Systems - "The Simple Way"Monitoring Big Data Systems - "The Simple Way"
Monitoring Big Data Systems - "The Simple Way"
 
Dynamic tracing of MariaDB on Linux - problems and solutions (MariaDB Server ...
Dynamic tracing of MariaDB on Linux - problems and solutions (MariaDB Server ...Dynamic tracing of MariaDB on Linux - problems and solutions (MariaDB Server ...
Dynamic tracing of MariaDB on Linux - problems and solutions (MariaDB Server ...
 
Tools and Tips to Diagnose Performance Issues
Tools and Tips to Diagnose Performance IssuesTools and Tips to Diagnose Performance Issues
Tools and Tips to Diagnose Performance Issues
 
Lessons learned from designing QA automation event streaming platform(IoT big...
Lessons learned from designing QA automation event streaming platform(IoT big...Lessons learned from designing QA automation event streaming platform(IoT big...
Lessons learned from designing QA automation event streaming platform(IoT big...
 
Velocity 2015 linux perf tools
Velocity 2015 linux perf toolsVelocity 2015 linux perf tools
Velocity 2015 linux perf tools
 
Handout: 'Open Source Tools & Resources'
Handout: 'Open Source Tools & Resources'Handout: 'Open Source Tools & Resources'
Handout: 'Open Source Tools & Resources'
 
Nagios Conference 2014 - Eric Mislivec - Getting Started With Nagios Core
Nagios Conference 2014 - Eric Mislivec - Getting Started With Nagios CoreNagios Conference 2014 - Eric Mislivec - Getting Started With Nagios Core
Nagios Conference 2014 - Eric Mislivec - Getting Started With Nagios Core
 
Machine learning and big data @ uber a tale of two systems
Machine learning and big data @ uber a tale of two systemsMachine learning and big data @ uber a tale of two systems
Machine learning and big data @ uber a tale of two systems
 
Linux Systems Performance 2016
Linux Systems Performance 2016Linux Systems Performance 2016
Linux Systems Performance 2016
 
Lessons learned from designing a QA Automation for analytics databases (big d...
Lessons learned from designing a QA Automation for analytics databases (big d...Lessons learned from designing a QA Automation for analytics databases (big d...
Lessons learned from designing a QA Automation for analytics databases (big d...
 
Guider: An Integrated Runtime Performance Analyzer on AGL
Guider: An Integrated Runtime Performance Analyzer on AGLGuider: An Integrated Runtime Performance Analyzer on AGL
Guider: An Integrated Runtime Performance Analyzer on AGL
 
Journey through high performance django application
Journey through high performance django applicationJourney through high performance django application
Journey through high performance django application
 
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...
 
Monitoring Big Data Systems "Done the simple way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems "Done the simple way" - Demi Ben-Ari - Codemotion...Monitoring Big Data Systems "Done the simple way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems "Done the simple way" - Demi Ben-Ari - Codemotion...
 

Mais de Red Hat Developers

DevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsDevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsRed Hat Developers
 
Exploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on KubernetesExploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on KubernetesRed Hat Developers
 
GitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkGitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkRed Hat Developers
 
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkQuinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkRed Hat Developers
 
Extra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkExtra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkRed Hat Developers
 
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Red Hat Developers
 
Integrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkIntegrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkRed Hat Developers
 
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Red Hat Developers
 
Containers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkContainers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkRed Hat Developers
 
Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Red Hat Developers
 
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...Red Hat Developers
 
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Red Hat Developers
 
11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech TalkRed Hat Developers
 
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkA Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkRed Hat Developers
 
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...Red Hat Developers
 
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkTo the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkRed Hat Developers
 
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Red Hat Developers
 
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Red Hat Developers
 
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Red Hat Developers
 
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkLevel-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkRed Hat Developers
 

Mais de Red Hat Developers (20)

DevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsDevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOps
 
Exploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on KubernetesExploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on Kubernetes
 
GitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkGitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech Talk
 
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkQuinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
 
Extra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkExtra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech Talk
 
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
 
Integrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkIntegrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech Talk
 
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
 
Containers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkContainers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech Talk
 
Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...
 
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
 
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
 
11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk
 
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkA Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
 
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
 
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkTo the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
 
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
 
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
 
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
 
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkLevel-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
 

Último

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 

Último (20)

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 

How To Get The Most Out Of Your Hibernate, JBoss EAP 7 Application (Ståle Pedersen)

  • 1.
  • 2. How to get the most of of your Hibernate, JBoss EAP 7 application Ståle Pedersen
  • 3. Agenda Lessons of what we've learned…. ● Methodology ● Tools ● Profiling ● Benchmarking ● EAP 7 Performance improvements
  • 5. Methodology What ● What prevents my application from running faster? ○ Monitoring
  • 6. Methodology What -> Where ● What prevents my application from running faster? ○ Monitoring ● Where does it hide? ○ Profiling
  • 7. Methodology What -> Where -> How ● What prevents my application from running faster? ○ Monitoring ● Where does it hide? ○ Profiling ● How can we improve performance? ○ tuning/optimizing
  • 8. Methodology Top down approach ● System Level ○ Disks, CPU, Memory, Network, ....
  • 9. Methodology Top down approach ● System Level ○ Disks, CPU, Memory, Network, .... ● JVM Level ○ Heap, GC, JIT, Classloading, ….
  • 10. Methodology Top down approach ● System Level ○ Disks, CPU, Memory, Network, .... ● JVM Level ○ Heap, GC, JIT, Classloading, …. ● Application Level ○ APIs, Algorithms, Threading, ….
  • 11. Methodology What are we looking for?
  • 12. Methodology What are we looking for? ● Lot of %sys ○ Networking, scheduling, swapping
  • 13. Methodology What are we looking for? ● Lot of %sys ○ Networking, scheduling, swapping ● Lot of %iowait ○ Disk activity, not enough disk block/caches
  • 14. Methodology What are we looking for? ● Lot of %sys ○ Networking, scheduling, swapping ● Lot of %iowait ○ Disk activity, not enough disk block/caches ● Lot of %irq, %soft ○ Interacting with devices
  • 15. Methodology What are we looking for? ● Lot of %sys ○ Networking, scheduling, swapping ● Lot of %iowait ○ Disk activity, not enough disk block/caches ● Lot of %irq, %soft ○ Interacting with devices ● Lot of %idle ○ Few (runnable) threads, big GC pauses
  • 16. Methodology What are we looking for? ● Lot of %sys ○ Networking, scheduling, swapping ● Lot of %iowait ○ Disk activity, not enough disk block/caches ● Lot of %irq, %soft ○ Interacting with devices ● Lot of %idle ○ Few (runnable) threads, big GC pauses ● Lot of %user ○ No need to use profiling until you have high %user time
  • 17. Tools
  • 18. Tools Tool types ● Observability, safe, depending on overhead ● Benchmarking, load testing. Difficult to do in a production environment ● Tuning, changes could hurt performance, perhaps not now or at the current load, but later
  • 19. Tools ● Tool types ○ Observability, basic ■ top ■ dmesg ■ free ■ vmstat ■ iostat ■ mpstat ■ sar
  • 20. top System summary, list processes or threads ● Can miss processes that do not last long enough to be caught ● Will most often consume a fair bit of CPU ● Default summary CPU usage, use “1” to get a better view of cores
  • 21. dmesg Print kernel ring buffer ● Display system messages ● An error tool that can give info why an application is slow/dies ● Eg: OOM issues, filehandles, TCP errors, ++
  • 22. free Memory usage ● Give a quick overview over memory usage ● Virtual page, and block devices I/O cache
  • 23. vmstat Virtual memory stat ● r - number of processes running (waiting to run), should be < num cpus ● b - number of processes sleeping ● free – idle memory, should be high ● si, so – memory swapped to/form disk, should be 0 ● cpu, percentages of total CPU time ○ user time, system time, idle, waiting for I/O and stolen time ○ system time used for I/O
  • 24. mpstat Processors statistics ● Gives a good overview of CPU time ● Comparable to top (with 1 pressed to show all CPU's), but use less CPU
  • 25. sar System activity information ● Check network throughput ● rxpck/s, txpck/s – total number of packets received/transmitted per second ● Use EDEV for statistics on failures the network devices are reporting
  • 26. sar System activity information ● Reports TCP network traffic and errors ● active/s – number of local initiated TCP connections per second ● passive/s – number of remote initiated TCP connections per second ● retrans/s – number of segments retransmitted per second
  • 29. Java Tools Observing Java applications ● Not as many tools out of the box
  • 30. Java Tools Observing Java applications ● Not as many tools out of the box ○ but they are powerful ● jstack, jstat, jcmd, jps, jmap, jconsole, jvisualvm
  • 31. jstack Prints Java thread stack traces for a Java process ● Useful to quickly look at the current state of the threads
  • 32. jmap Prints Java shared object memory maps or heap memory ● Several different options ○ histo[:live] – Prints a histogram of the heap, list classes, number of objects, size ○ heap – Prints information regarding heap status and usage ○ dump:<dump-options> – Dump java heap ○ No options will print shared object mappings
  • 33. jstat Monitor JVM statistics; gc, compilations, classes ● Many useful options: class, compiler, gc, gccapacity, gccause, gcnew, gcold, gcutil, ... ○ class – number of classes loaded/unloaded, Kbytes loaded/unloaded ○ compiler - number of compiled, failed, invalid compilations, with failedtype/method ○ gcutil – garbage collection statistics; survivor space 0,1, eden, old space, permanent, young generation, gc collection time, …
  • 34. Byteman A tool that simplifies Java tracing, monitoring and testing ● http://byteman.jboss.org/ RULE ServerLogger_serverStopped CLASS org.jboss.as.server.ApplicationServerService METHOD stop AT ENTRY IF TRUE DO openTrace("stop","/tmp/stop.log"); traceStack("stop: "+Thread.currentThread.getName()+"n","stop"); ENDRULE
  • 35. Java Tools What have we learned ● Java have decent monitoring tools out of the box ● Not as easy to use, but powerful ● Gives a lot of information as a (fairly) low cost ● Also included ○ VisualVM ○ JConsole
  • 36. Tools Final thought ● Which tool you use/prefer is not important
  • 37. Tools Final thought ● Which tool you use/prefer is not important ○ What is important is that you can measure everything
  • 40. Profilers High CPU load Can profilers help?
  • 41. Profilers High CPU load Can profilers help? Profilers (try) to show “where” application time is spent
  • 42. CPU Profiling Limitations ● Many problems are not CPU Bound ○ Networking ○ Database ○ Remote Services ○ I/O ○ Garbage Collection ○ ….
  • 43. Different CPU Profilers ● Instrumenting ○ Adds timing code to application ● Sampling ○ Collect thread dumps periodically ○ VisualVM, JProfiler, Yourkit, ….
  • 44. Sampling CPU Profilers [survey made by RebelLabs]
  • 45. Sampling Profilers Samples MainThread.run() Backend.findUser() Controller.doAction() new User() fetchUser() display() someLogic() moreLogic() evenMoreLogic()
  • 46. Sampling Profilers More samples MainThread.run() Backend.findUser() Controller.doAction() new User() fetchUser() display() someLogic() moreLogic() evenMoreLogic()
  • 47. Sampling Profilers Stack tracing ● Most profilers use JVMTI ○ Using GetCallTrace ■ Triggers a global safepoint ■ Collect stack trace ● Large impact on application ● Samples only at safepoints
  • 48. What is a safepoint? Java threads poll a global flag ○ At method exit/enter ○ At “uncounted” (int) loops
  • 49. What is a safepoint? A safepoint can be delayed by ○ Large Methods ○ Long running “uncounted” (int) loops
  • 50. Sampling Profilers Safepoint bias MainThread.run() Backend.findUser() Controller.doAction() new User() fetchUser() display() someLogic() moreLogic() evenMoreLogic()
  • 51. Safepoint summary JVM have many safepoint operations • To monitor its impact use – -XX:+PrintGCApplicationStoppedTime – -XX:+PrintSafepointStatistics – -XX:+PrintSafepointStatisticsCount=X
  • 52. Sample Profilers Java profilers that work better! ● Profilers that use AsyncGetCallTrace ○ Java Mission Control ■ Very good tool, just don’t use it in production (without a license) ○ Oracle Solaris Studio ■ Not well known, it’s free and it works on Linux ○ Honest Profiler ■ Open source, cruder, but works very well
  • 53. Java Mission Control/Flight Recorder ● Designed for usage in production systems ● Potentially low overhead ○ Be wary of what you record ■ Capture everything is not a good strategy ■ Capture data for one specific thing (memory, contention, cpu) ● Capturing data will not be skewed by safepoints ○ Make sure to use: ■ -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints ● Need a license to be used in production, free to use for development
  • 54. Java Profilers problem ● Java stack only ● Method tracing have large observer effect ● Do not report: ○ GC ○ Deopt ○ Eg System.arrayCopy ….
  • 55.
  • 56. Perf ● A system profiler ● Show the whole stack ○ JVM ○ GC ○ Kernel ● Previously not very useful for Java ○ Missing stacks ○ Method symbols missing
  • 57. Perf ● Solution ○ Java8u60 added the option -XX:PreserveFramePointer ■ Allows system profilers to capture stack traces ● Visibility of everything ○ Java methods ○ JVM, GC, libraries, kernel ● Low overhead ● Flamegraph
  • 59. Flamegraph Top edge show which method is using CPU and how much. MainThread.run() a() b() e() c() d()
  • 60.
  • 61. Limitations of Perf Mixed Mode ● Frames might be missing (inlined) ● Disable inlining: ○ -XX:-Inline ○ Many more Java frames ○ Will be slower ● perf-map-agent have experimental un-inline support
  • 62. Profiling at Red Hat ● Perf for CPU profiling ● Java Mission Control ○ Contention ○ Thread analysis ○ Memory usage
  • 64. Benchmarking Most benchmarks are flawed, wrong and full of errors.
  • 65. Benchmarking Most benchmarks are flawed, wrong and full of errors ○ Used cautiously it can be a very valuable tool to reveal performance issues, compare applications, libraries, ...
  • 66. Benchmarking ● Java Benchmarking libraries ○ Microbenchmarks ■ Java Microbenchmark Harness ● http://openjdk.java.net/projects/code-tools/jmh/ ■ JMH is the only library on Java we recommend for microbenchmarks ■ Still possible to write bad benchmarks with JMH
  • 67. Benchmarking Load testing frameworks ○ Gatling ■ http://gatling.io/ ○ Faban ■ http://faban.org/
  • 68. Benchmarking A Hibernate microbenchmark lesson ● We wanted to compare cache lookup performance between Hibernate 4 and 5 ○ We also wanted to test a new cache we added to Infinispan, Simple cache ● Created several JMH benchmarks that tested different use cases ○ Default cache with and without eviction ○ Simple cache with and without eviction
  • 69. Benchmarking A Hibernate microbenchmark lesson 4.3 w/ eviction 292050 ops/s 4.3 w/o eviction 303992 ops/s 5.0 w/ eviction 314629 ops/s 5.0 w/o eviction 611487 ops/s 5.0 w/o eviction (simple cache) 706509 ops/s
  • 70. Benchmarking We progressed to a large full scale EE benchmark. ● We expect similar or better results vs EAP6 (Hibernate 4.2)
  • 71. Benchmarking We progressed to a large full scale EE benchmark. ● We expect similar or better results vs EAP6 (Hibernate 4.2) ○ The response times are 5-10x slower! ○ And we are now CPU bound
  • 72. Benchmarking We progressed to a large full scale EE benchmark. ● We expect similar or better results vs EAP 6 (Hibernate 4.2) ○ The response times are 5-10x slower! ○ And we are now CPU bound ● How is that possible?
  • 73. Benchmarking We progressed to a large full scale EE benchmark. ● We expect similar or better results vs EAP 6 (Hibernate 4.2) ○ The response times are 5-10x slower! ○ And we are now CPU bound ● How is that possible? ○ We had several microbenchmarks showing better performance on Hibernate 5 ○ Could the problem lie in WildFly 10? ○ Let’s profile!
  • 76. Benchmarking What had happened? ● Why did we spend so much CPU in this method and why do it not reflect the results from the microbenchmarks?
  • 77. Benchmarking What had happened? ● Why did we spend so much CPU in this method and why do it not reflect the results from the microbenchmarks? ○ We started debugging ■ -XX+PrintCompilation ● Show when/which methods are compiled/decompiled ● Showed that the method only was compiled once, but twice on EAP 6 (Hib4.2) ● Why?
  • 78. Benchmarking What had happened? ● We had made several changes internally in Hibernate 5 to reduce memory usage
  • 79. Benchmarking What had happened? ● We had made several changes internally in Hibernate 5 to reduce memory usage ○ One specific class was refactored to an interface ○ Changing a monomorphic call site to a bimorphic call site ■ Which can prevent compiling/inlining of methods!
  • 80. Benchmarking What had happened? ● We had made several changes internally in Hibernate 5 to reduce memory usage ○ One specific class was refactored to an interface ○ Changing a monomorphic call site to a bimorphic call site ■ Which can prevent compiling/inlining of methods! ● Direct method calls will “always” be optimized (no subclassing) ● In Java subclassing/inheritance might cause the JVM to no optimize method calls
  • 81. Benchmarking Lessons learned ● Code changes might have unexpected consequences ○ In this case, reduced memory, increased CPU usage ● Benchmarks are good, but should always be questioned ○ When you benchmark, analyze (all/most) possible use cases
  • 82. Benchmarking Lessons learned ● Code changes might have unexpected consequences ○ In this case, reduced memory, increased CPU usage ● Benchmarks are good, but should always be questioned ○ When you benchmark, analyze (all/most) possible use cases ● Yes, we ended up fixing the CPU usage without causing it to use more memory!
  • 83. EAP 7 Performance Improvements Performance highlights ● JPA ● JCA ● Web
  • 84. EAP 7 Performance Improvements Hibernate 5 performance improvements ● Memory usage ○ Reduced memory usage 20-50%
  • 85. EAP 7 Performance Improvements Hibernate 5 performance improvements ● Memory usage ○ Reduced memory usage 20-50% ● Cache improvements ○ Simple Cache ■ 132% Improvement with immutable objects
  • 86. EAP 7 Performance Improvements Hibernate 5 performance improvements ● Memory usage ○ Reduced memory usage 20-50% ● Cache improvements ○ Simple Cache ■ 132% Improvement with immutable objects ● Pooled Optimizer ○ In persistence.xml add property ■ hibernate.id.optimizer.pooled.preferred value="pooled-lotl”
  • 87. EAP 7 Performance Improvements Hibernate 5 performance improvements ● Bytecode enhancements ○ hibernate.enhancer.enableDirtyTracking ○ hibernate.enhancer.enableLazyInitialization ● Improved caching ○ hibernate.cache.use_reference_entries ○ hibernate.cache.infinispan.immutable-entity.cfg = “immutable-entity”
  • 88. EAP 7 Performance Improvements IronJacamar performance improvements ● Contention issues ○ New default ManagedConnectionPool
  • 89. EAP 7 Performance Improvements IronJacamar performance improvements ● Contention issues ○ New default ManagedConnectionPool ● Disabled logging ○ Not everything is disabled ■ <datasource …. enlistment-trace="false" >
  • 90. EAP 7 Performance Improvements IronJacamar performance improvements ● Contention issues ○ New default ManagedConnectionPool ● Disabled logging ○ Not everything is disabled ■ <datasource …. enlistment-trace="false" > ● Fairness ○ Set to true at default ■ <datasource> <pool><fair>false</fair></pool>
  • 91. EAP 7 Performance Improvements Undertow vs JBossWeb ● Undertow is nonblocking ● JBossWeb have a thread for each connection
  • 92. EAP 7 Performance Improvements Simple HelloServlet Benchmark EAP 6.4 EAP 7 RPS Mean 95% 99% Mean 95% 99% 5000 2 1 4 0 1 1 15000 3 4 56 1 2 6 25000 13 18 247 1 3 7 40000 46 246 414 12 23 84 55000 361 647 1889 65 136 635
  • 93. EAP 7 Performance Improvements ● Lightweight ● Embeddable ● Scalable ● HTTP/2 ● HTTP Upgrade
  • 94. EAP 7 Performance Improvements Overall EAP 7 Performance tricks ● Remote byte pooling ○ jboss.remoting.pooled-buffers ● Disable CDI ○ CDI is enabled by default in EAP 7
  • 95. EAP 7 Performance Improvements Overall EAP 7 Performance tricks ● Remote byte pooling ○ jboss.remoting.pooled-buffers ● Disable CDI ○ CDI is enabled by default in EAP 7
  • 96. Q&A