SlideShare ist ein Scribd-Unternehmen logo
1 von 83
JVM Tuning in a rush
Tomasz Borek, Symentis
• Infected in childhood
• From me parents
• Amstrad, ElWro Junior
• Games! Doh!
• Mem pages in DOS anyone?
• In IT
• ETL, crawlers, web-app, archi
• IAAS, SAAS, own servers
• Java 4 – 7, GNU/Linux, SQLs
• Ardent “activist”
Tomasz Borek
Can be found in the net! :P
https://lafkblogs.wordpress.com/
https://twitter.com/lafk_pl
https://pl.linkedin.com/in/tjborek
GeeCON, ChamberConf, Confitura, Lambda Days, LambdaCon,
Java Developer Days, JavaDay Lviv, JavaDay Kiev
Tomek in IT groups
.com
http://java.pl Kraków
Poznań
Praga
Sopot
http://geecon.org
Prod hits rock bottom
● Everybody is kung-fu fighting
● Must be quick like lightning
So! Being a dev, you need:
1.To know your traffic and your app and your infra
So! Being a dev, you need:
1.To know your traffic and your app and your infra
2.To know recent changes
So! Being a dev, you need:
1.To know your traffic and your app and your infra
2.To know recent changes
3.To know your limits (sometimes comes from point 1)
So! Being a dev, you need:
1.To know your traffic and your app and your infra
2.To know recent changes
3.To know your limits (sometimes comes from point 1)
4.To have access to monitoring
So! Being a dev, you need:
1.To know your traffic and your app and your infra
2.To know recent changes
3.To know your limits (sometimes comes from point 1)
4.To have access to monitoring
5.To adjust pooling (both thread and connection)
So! Being a dev, you need:
1.To know your traffic and your app and your infra
2.To know recent changes
3.To know your limits (sometimes comes from point 1)
4.To have access to monitoring
5.To adjust pooling (both thread and connection)
6.To peruse logs and pull out anomalies
So! Being a dev, you need:
1.To know your traffic and your app and your infra
2.To know recent changes
3.To know your limits (sometimes comes from point 1)
4.To have access to monitoring
5.To adjust pooling (both thread and connection)
6.To peruse logs and pull out anomalies
7.TO TUNE JVM
So! Being a dev, you need:
1.To know your traffic and your app and your infra
2.To know recent changes
3.To know your limits (sometimes comes from point 1)
4.To have access to monitoring
5.To adjust pooling (both thread and connection)
6.To peruse logs and pull out anomalies
7.TO TUNE JVM
JVM? Meaning?
• Sun Hotspot
• IBM
• JRockit
• IceTea
• OpenJDK
• TCK decides
JVM? Meaning?
• Sun Hotspot
• IBM
• JRockit
• IceTea
• OpenJDK
• TCK decides
JVM? Meaning?
• Sun Hotspot – but which version?
• IBM
• JRockit
• IceTea
• OpenJDK
• TCK decides
JVM? Meaning?
• Sun Hotspot – but which version? And architecture?
• IBM
• JRockit
• IceTea
• OpenJDK
• TCK decides
So! JVM tuning?
1.To adjust GC, based on it's logs
So! JVM tuning?
1.To adjust GC, based on it's logs
2.To adjust (native) heap
So! JVM tuning?
1.To adjust GC, based on it's logs
2.To adjust (native) heap
3.Tweaking JVM starting flags
So! JVM tuning?
1.To adjust GC, based on it's logs
2.To adjust (native) heap
3.Tweaking JVM starting flags
4.To use TOOLS
Today!
● JVM tuning
● Diagnosing performance problems
● Tools
● All in a rush
JVM tuning
Takeaway #1
JVM is a process
Being a process means
● OS architecture enforces JVM architecture
● Your memory is limited by OS and other processes
– Heap is one
– C-heap is another!
● IO-wise and thread-wise:
– Your threads and files opened are limited by ulimit
● File descriptors!
OOM flavours?
OOM flavours
● Out of HeapSpace
OOM flavours
● Out of HeapSpace
● PermGen error
OOM flavours
● Out of HeapSpace
● PermGen error
● Unable to create native thread
API says OutOfMemoryError is
● Thrown when the Java Virtual Machine cannot
allocate an object because it is out of memory, and
no more memory could be made available by the
garbage collector. OutOfMemoryError objects may
be constructed by the virtual machine as if
suppression were disabled and/or the stack trace
was not writable.
API says OutOfMemoryError is
● Thrown when the Java Virtual Machine cannot
allocate an object because it is out of memory,
and no more memory could be made available
by the garbage collector. OutOfMemoryError
objects may be constructed by the virtual machine
as if suppression were disabled and/or the stack
trace was not writable.
API says OutOfMemoryError is
● Due to failure in allocating an object after garbage
collection.
● Nothing about threads.
● Nothing about PermGen.
How much memory JVM uses?
● Say you start it with Xmx == Xms == 1GB
How much memory JVM uses?
● Say you start it with Xmx == Xms == 1GB
● 1GB?
How much memory JVM uses?
● Say you start it with Xmx == Xms == 1GB
● 1GB?
● Around 1GB?
How much memory JVM uses?
● Say you start it with Xmx == Xms == 1GB
● 1GB?
● Around 1GB?
● If we talk about Java HEAP
Memory management
Entire RAM
● 32 bits: can address less than 4GB.
● 64 bits: can address… theoretically 16 EB.
– Still – much more!
● There's much more to 32vs64 but that's for another time
Memory management
Entire RAM
What's left of RAM – C-HEAPJVM heap
-Xmx
● -Xms – minimal heap size
●
-Xmx – maximal heap size
●
When both should be set to same value?
Memory management
Entire RAM
What's left of RAM – C-HEAPJVM heap
What's left – C-HEAPJVM opsJVM heap
-Xmx
PermGen
PermGen
● Permanent Generation
– Early Java
– for JDK classes
– and Strings
● Back then – good idea
● Now removed
– JDK 7 – Strings no longer in PermGen
– JDK 8 – no PermGen at all
PermGen
● Permanent Generation
– Early Java
– for JDK classes
– and Strings
● Back then – good idea
● Now removed
– JDK 7 – Strings no longer in PermGen
– JDK 8 – no PermGen at all
Quick fix?
Increase PermGen size.
Memory management
What's left – C-HEAPJVM opsJVM heap
-Xmx
PermGen
GC
● When it runs?
GC
● When it runs?
● Minor collection?
GC
● When it runs?
● Minor collection?
● Major collection?
GC
● When it runs?
● Minor collection?
● Major collection?
● How can a dev tune GC?
Generational GC
Tenured – where long-lived are promotedEden – infants that die quickly
● Studies showed:
– most objects die young
– Some live really long
● Ergo: short- and long-lived division
● Minor collection: Eden
● Major collection: whole heap
Generational GC - mechanics
● In fact Eden has also 2 Survivor spaces
– To handle locality
– Helps compress after freeing space
– First promotion to survivor, then to tenured
● Flags tell:
– How many GCs object must survive to be promoted
– How large Eden / Tenured / Survivors spaces are
– What is logged (how details GC logs are)
– Many, MANY more
Memory management trade-offs
● Large heap – large full GC – small native and C-heap?
● Smaller heap – minor GC may be enough
● Make sure your objects die young and only really long
lived reach tenured
JVM tuning
1.To adjust GC, based on it's logs
2.To adjust (native) heap
3.Tweaking JVM starting flags
4.To use TOOLS – later
Takeaway #2
Log GC
Takeaway #3
GC tuning is a trade-off
Diagnosing performance problems
„The Box”
• Heinz Kabutz, Kirk Pepperdine
• Top - bottom
„The Box”
• TRAFFIC: ?
TRAFFIC
„The Box”
• TRAFFIC: how is app used?
TRAFFIC: people, automatic
„The Box”
• TRAFFIC: how is app used?
• CODE: ?
TRAFFIC: people, automatic
Application CODE
„The Box”
• TRAFFIC: how is app used?
• CODE: threads, algos, data structures...
TRAFFIC: people, automatic
CODE: threads, data structs,
algo
„The Box”
• TRAFFIC: how is app used?
• CODE: threads, algos, data structures...
• JVM: ?
TRAFFIC: people, automatic
CODE: threads, data structs,
algo
JVM
„The Box”
• TRAFFIC: how is app used?
• CODE: threads, algos, data structures...
• JVM: ?
TRAFFIC: people, automatic
CODE: threads, data structs,
algo
JVM: flags, GC
„The Box”
• TRAFFIC: how is app used?
• CODE: threads, algos, data structures...
• JVM: starting flags, GC
• OS: ?
TRAFFIC: people, automatic
CODE: threads, data structs,
algo
JVM: flags, GC
OS
„The Box”
• TRAFFIC: how is app used?
• CODE: threads, algos, data structures...
• JVM: starting flags, GC
• OS: ulimit, FS, config, archi, other procs…
TRAFFIC: people, automatic
CODE: threads, data structs,
algo
JVM: flags, GC
OS: FS, config, limits
„The Box”
• TRAFFIC: how is app used?
• CODE: threads, algos, data structures...
• JVM: starting flags, GC
• OS: ulimit, FS, config, archi, other procs…
• VIRT: ?
TRAFFIC: people, automatic
CODE: threads, data structs,
algo
JVM: flags, GC
OS: FS, config, limits
VIRT
„The Box”
• TRAFFIC: how is app used?
• CODE: threads, algos, data structures...
• JVM: starting flags, GC
• OS: ulimit, FS, config, archi, other procs…
• VIRT: hell depends!
TRAFFIC: people, automatic
CODE: threads, data structs,
algo
JVM: flags, GC
OS: FS, config, limits
VIRT
„The Box”
• TRAFFIC: how is app used?
• CODE: threads, algos, data structures...
• JVM: starting flags, GC
• OS: ulimit, FS, config, archi, other procs…
• VIRT: hell depends!
• HARDWARE: ?
TRAFFIC: people, automatic
CODE: threads, data structs,
algo
JVM: flags, GC
OS: FS, config, limits
VIRT
HARDWARE
„The Box”
• TRAFFIC: how is app used?
• CODE: threads, algos, data structures...
• JVM: starting flags, GC
• OS: ulimit, FS, config, archi, other procs…
• VIRT: hell depends!
• HARDWARE: 32 vs 64, RAM, BIOS, drivers…
TRAFFIC: people, automatic
CODE: threads, data structs,
algo
JVM: flags, GC
OS: FS, config, limits
VIRT
HARDWARE
Brendan Gregg – USE
• Utilization, Saturation, Errors
• Use – how much in use is your resource
• Saturation – how many requests await (waiting queue)
• Errors – what errors are thrown by resource
• http://www.brendangregg.com/usemethod.html
• Create a checklist for each important resource, for finding out
Utilization, Saturation and Errors and you'll know how to soon find
out what is going on with resource
Takeaway #1
The Box
Takeaway #2
GNU/Linux perf? Brendan Gregg
TOOLS
Takeaway #1
GNU/Linux surely has a tool for that
How to find your java process?
● ps … | grep java
●
How to find your java process?
● ps … | grep java
● pgrep java
How to find your java process?
● ps … | grep java
● pgrep java
● jps
How to change flags on-the-fly?
● jinfo
How to dump threads or heap?
● kill -3
How to dump threads or heap?
● kill -3
● jstack
How to dump threads or heap?
● kill -3
● jstack
● jhat (heap)
jvisualvm
● Deserves it's own slide
● Profiler, sampler
● Monitor (heap, threads, etc.)
● Calls GC, does dumps
SUMMARIZING
● For being rushed – prepare in advance
– Monitoring, logs, ceilings, etc.
● Log GC
● JVM is a process – all process limits in your OS apply
● The Box
● Brendan Gregg
● GNU/Linux – tools unparalleled
?

Weitere ähnliche Inhalte

Was ist angesagt?

JVM Memory Management Details
JVM Memory Management DetailsJVM Memory Management Details
JVM Memory Management DetailsAzul Systems Inc.
 
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia "What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia Vladimir Ivanov
 
Performance tuning jvm
Performance tuning jvmPerformance tuning jvm
Performance tuning jvmPrem Kuppumani
 
Java 8 Launch - MetaSpaces
Java 8 Launch - MetaSpacesJava 8 Launch - MetaSpaces
Java 8 Launch - MetaSpacesHaim Yadid
 
Elephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forksElephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forksCommand Prompt., Inc
 
Geek out 2014-lagergren-final
Geek out 2014-lagergren-finalGeek out 2014-lagergren-final
Geek out 2014-lagergren-finalMarcus Lagergren
 
High Performance Distributed TensorFlow with GPUs - TensorFlow Chicago Meetup...
High Performance Distributed TensorFlow with GPUs - TensorFlow Chicago Meetup...High Performance Distributed TensorFlow with GPUs - TensorFlow Chicago Meetup...
High Performance Distributed TensorFlow with GPUs - TensorFlow Chicago Meetup...Chris Fregly
 
Introduction to JRuby
Introduction to JRubyIntroduction to JRuby
Introduction to JRubyajuckel
 
Jvm operation casual talks
Jvm operation casual talksJvm operation casual talks
Jvm operation casual talksYusaku Watanabe
 
High Performance Distributed TensorFlow with GPUs - Nvidia GPU Tech Conferenc...
High Performance Distributed TensorFlow with GPUs - Nvidia GPU Tech Conferenc...High Performance Distributed TensorFlow with GPUs - Nvidia GPU Tech Conferenc...
High Performance Distributed TensorFlow with GPUs - Nvidia GPU Tech Conferenc...Chris Fregly
 
Optcarrot: A Pure-Ruby NES Emulator
Optcarrot: A Pure-Ruby NES EmulatorOptcarrot: A Pure-Ruby NES Emulator
Optcarrot: A Pure-Ruby NES Emulatormametter
 
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, UkraineVladimir Ivanov
 
Introduction to JRuby
Introduction to JRubyIntroduction to JRuby
Introduction to JRubyAmit Solanki
 
Optimizing, Profiling, and Deploying TensorFlow AI Models in Production with ...
Optimizing, Profiling, and Deploying TensorFlow AI Models in Production with ...Optimizing, Profiling, and Deploying TensorFlow AI Models in Production with ...
Optimizing, Profiling, and Deploying TensorFlow AI Models in Production with ...Chris Fregly
 
JVM Performance Tuning
JVM Performance TuningJVM Performance Tuning
JVM Performance TuningJeremy Leisy
 
Fengqi.asia Cloud advantages
Fengqi.asia Cloud advantagesFengqi.asia Cloud advantages
Fengqi.asia Cloud advantagesAndrew Wong
 
Messaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new frameworkMessaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new frameworkTomas Doran
 
Scaling Instagram
Scaling InstagramScaling Instagram
Scaling Instagramiammutex
 
Chirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterChirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterJohn Adams
 

Was ist angesagt? (20)

JVM Memory Management Details
JVM Memory Management DetailsJVM Memory Management Details
JVM Memory Management Details
 
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia "What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia
 
Performance tuning jvm
Performance tuning jvmPerformance tuning jvm
Performance tuning jvm
 
Java 8 Launch - MetaSpaces
Java 8 Launch - MetaSpacesJava 8 Launch - MetaSpaces
Java 8 Launch - MetaSpaces
 
Elephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forksElephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forks
 
Geek out 2014-lagergren-final
Geek out 2014-lagergren-finalGeek out 2014-lagergren-final
Geek out 2014-lagergren-final
 
High Performance Distributed TensorFlow with GPUs - TensorFlow Chicago Meetup...
High Performance Distributed TensorFlow with GPUs - TensorFlow Chicago Meetup...High Performance Distributed TensorFlow with GPUs - TensorFlow Chicago Meetup...
High Performance Distributed TensorFlow with GPUs - TensorFlow Chicago Meetup...
 
Introduction to JRuby
Introduction to JRubyIntroduction to JRuby
Introduction to JRuby
 
Jvm operation casual talks
Jvm operation casual talksJvm operation casual talks
Jvm operation casual talks
 
High Performance Distributed TensorFlow with GPUs - Nvidia GPU Tech Conferenc...
High Performance Distributed TensorFlow with GPUs - Nvidia GPU Tech Conferenc...High Performance Distributed TensorFlow with GPUs - Nvidia GPU Tech Conferenc...
High Performance Distributed TensorFlow with GPUs - Nvidia GPU Tech Conferenc...
 
JavaOne summary
JavaOne summaryJavaOne summary
JavaOne summary
 
Optcarrot: A Pure-Ruby NES Emulator
Optcarrot: A Pure-Ruby NES EmulatorOptcarrot: A Pure-Ruby NES Emulator
Optcarrot: A Pure-Ruby NES Emulator
 
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
 
Introduction to JRuby
Introduction to JRubyIntroduction to JRuby
Introduction to JRuby
 
Optimizing, Profiling, and Deploying TensorFlow AI Models in Production with ...
Optimizing, Profiling, and Deploying TensorFlow AI Models in Production with ...Optimizing, Profiling, and Deploying TensorFlow AI Models in Production with ...
Optimizing, Profiling, and Deploying TensorFlow AI Models in Production with ...
 
JVM Performance Tuning
JVM Performance TuningJVM Performance Tuning
JVM Performance Tuning
 
Fengqi.asia Cloud advantages
Fengqi.asia Cloud advantagesFengqi.asia Cloud advantages
Fengqi.asia Cloud advantages
 
Messaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new frameworkMessaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new framework
 
Scaling Instagram
Scaling InstagramScaling Instagram
Scaling Instagram
 
Chirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterChirp 2010: Scaling Twitter
Chirp 2010: Scaling Twitter
 

Andere mochten auch

HotSpot JVM Tuning
HotSpot JVM TuningHotSpot JVM Tuning
HotSpot JVM TuningGilad Garon
 
Tune up Yarn and Hive
Tune up Yarn and HiveTune up Yarn and Hive
Tune up Yarn and Hiverxu
 
Jvm Performance Tunning
Jvm Performance TunningJvm Performance Tunning
Jvm Performance TunningTerry Cho
 
JVM Tuning and Profiling
JVM Tuning and ProfilingJVM Tuning and Profiling
JVM Tuning and ProfilingBhuvan Rawal
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsBrendan Gregg
 
Linux Systems Performance 2016
Linux Systems Performance 2016Linux Systems Performance 2016
Linux Systems Performance 2016Brendan Gregg
 
Broken Linux Performance Tools 2016
Broken Linux Performance Tools 2016Broken Linux Performance Tools 2016
Broken Linux Performance Tools 2016Brendan Gregg
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and moreBrendan Gregg
 
Velocity 2015 linux perf tools
Velocity 2015 linux perf toolsVelocity 2015 linux perf tools
Velocity 2015 linux perf toolsBrendan Gregg
 
Linux Profiling at Netflix
Linux Profiling at NetflixLinux Profiling at Netflix
Linux Profiling at NetflixBrendan Gregg
 
Everything I Ever Learned About JVM Performance Tuning @Twitter
Everything I Ever Learned About JVM Performance Tuning @TwitterEverything I Ever Learned About JVM Performance Tuning @Twitter
Everything I Ever Learned About JVM Performance Tuning @TwitterAttila Szegedi
 

Andere mochten auch (12)

HotSpot JVM Tuning
HotSpot JVM TuningHotSpot JVM Tuning
HotSpot JVM Tuning
 
Tune up Yarn and Hive
Tune up Yarn and HiveTune up Yarn and Hive
Tune up Yarn and Hive
 
Jvm Performance Tunning
Jvm Performance TunningJvm Performance Tunning
Jvm Performance Tunning
 
Hive tuning
Hive tuningHive tuning
Hive tuning
 
JVM Tuning and Profiling
JVM Tuning and ProfilingJVM Tuning and Profiling
JVM Tuning and Profiling
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old Secrets
 
Linux Systems Performance 2016
Linux Systems Performance 2016Linux Systems Performance 2016
Linux Systems Performance 2016
 
Broken Linux Performance Tools 2016
Broken Linux Performance Tools 2016Broken Linux Performance Tools 2016
Broken Linux Performance Tools 2016
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and more
 
Velocity 2015 linux perf tools
Velocity 2015 linux perf toolsVelocity 2015 linux perf tools
Velocity 2015 linux perf tools
 
Linux Profiling at Netflix
Linux Profiling at NetflixLinux Profiling at Netflix
Linux Profiling at Netflix
 
Everything I Ever Learned About JVM Performance Tuning @Twitter
Everything I Ever Learned About JVM Performance Tuning @TwitterEverything I Ever Learned About JVM Performance Tuning @Twitter
Everything I Ever Learned About JVM Performance Tuning @Twitter
 

Ähnlich wie Jvm tuning in a rush! - Lviv JUG

Scaling with Symfony - PHP UK
Scaling with Symfony - PHP UKScaling with Symfony - PHP UK
Scaling with Symfony - PHP UKRicard Clau
 
A Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbert
A Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbertA Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbert
A Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbertJ On The Beach
 
meetPHP#8 - PHP startups prototypes
meetPHP#8 - PHP startups prototypesmeetPHP#8 - PHP startups prototypes
meetPHP#8 - PHP startups prototypesMax Małecki
 
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)OpenBlend society
 
Application Profiling for Memory and Performance
Application Profiling for Memory and PerformanceApplication Profiling for Memory and Performance
Application Profiling for Memory and PerformanceWSO2
 
Application Profiling for Memory and Performance
Application Profiling for Memory and PerformanceApplication Profiling for Memory and Performance
Application Profiling for Memory and Performancepradeepfn
 
Cassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache CassandraCassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache CassandraDataStax Academy
 
Tomcatx troubleshooting-production
Tomcatx troubleshooting-productionTomcatx troubleshooting-production
Tomcatx troubleshooting-productionVladimir Khokhryakov
 
Rust Programming Language
Rust Programming LanguageRust Programming Language
Rust Programming LanguageJaeju Kim
 
T4T Training day - NodeJS
T4T Training day - NodeJST4T Training day - NodeJS
T4T Training day - NodeJSTim Sommer
 
Expert JavaScript Programming
Expert JavaScript ProgrammingExpert JavaScript Programming
Expert JavaScript ProgrammingYoshiki Shibukawa
 
The JavaScript Delusion
The JavaScript DelusionThe JavaScript Delusion
The JavaScript DelusionJUGBD
 
Building Asynchronous Applications
Building Asynchronous ApplicationsBuilding Asynchronous Applications
Building Asynchronous ApplicationsJohan Edstrom
 
The Once And Future Script Loader (v3)
The Once And Future Script Loader (v3)The Once And Future Script Loader (v3)
The Once And Future Script Loader (v3)Kyle Simpson
 
Threads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java editionThreads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java editionOvidiu Dimulescu
 
Machine Learning With H2O vs SparkML
Machine Learning With H2O vs SparkMLMachine Learning With H2O vs SparkML
Machine Learning With H2O vs SparkMLArnab Biswas
 
Lessons learned from building Demand Side Platform
Lessons learned from building Demand Side PlatformLessons learned from building Demand Side Platform
Lessons learned from building Demand Side Platformbbogacki
 
Vulnerability, exploit to metasploit
Vulnerability, exploit to metasploitVulnerability, exploit to metasploit
Vulnerability, exploit to metasploitTiago Henriques
 
Java performance monitoring
Java performance monitoringJava performance monitoring
Java performance monitoringSimon Ritter
 

Ähnlich wie Jvm tuning in a rush! - Lviv JUG (20)

Scaling with Symfony - PHP UK
Scaling with Symfony - PHP UKScaling with Symfony - PHP UK
Scaling with Symfony - PHP UK
 
A Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbert
A Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbertA Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbert
A Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbert
 
meetPHP#8 - PHP startups prototypes
meetPHP#8 - PHP startups prototypesmeetPHP#8 - PHP startups prototypes
meetPHP#8 - PHP startups prototypes
 
Zero mq logs
Zero mq logsZero mq logs
Zero mq logs
 
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)
 
Application Profiling for Memory and Performance
Application Profiling for Memory and PerformanceApplication Profiling for Memory and Performance
Application Profiling for Memory and Performance
 
Application Profiling for Memory and Performance
Application Profiling for Memory and PerformanceApplication Profiling for Memory and Performance
Application Profiling for Memory and Performance
 
Cassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache CassandraCassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache Cassandra
 
Tomcatx troubleshooting-production
Tomcatx troubleshooting-productionTomcatx troubleshooting-production
Tomcatx troubleshooting-production
 
Rust Programming Language
Rust Programming LanguageRust Programming Language
Rust Programming Language
 
T4T Training day - NodeJS
T4T Training day - NodeJST4T Training day - NodeJS
T4T Training day - NodeJS
 
Expert JavaScript Programming
Expert JavaScript ProgrammingExpert JavaScript Programming
Expert JavaScript Programming
 
The JavaScript Delusion
The JavaScript DelusionThe JavaScript Delusion
The JavaScript Delusion
 
Building Asynchronous Applications
Building Asynchronous ApplicationsBuilding Asynchronous Applications
Building Asynchronous Applications
 
The Once And Future Script Loader (v3)
The Once And Future Script Loader (v3)The Once And Future Script Loader (v3)
The Once And Future Script Loader (v3)
 
Threads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java editionThreads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java edition
 
Machine Learning With H2O vs SparkML
Machine Learning With H2O vs SparkMLMachine Learning With H2O vs SparkML
Machine Learning With H2O vs SparkML
 
Lessons learned from building Demand Side Platform
Lessons learned from building Demand Side PlatformLessons learned from building Demand Side Platform
Lessons learned from building Demand Side Platform
 
Vulnerability, exploit to metasploit
Vulnerability, exploit to metasploitVulnerability, exploit to metasploit
Vulnerability, exploit to metasploit
 
Java performance monitoring
Java performance monitoringJava performance monitoring
Java performance monitoring
 

Mehr von Tomek Borek

Noc informatyka - co ja wiem o testowaniu
Noc informatyka - co ja wiem  o testowaniuNoc informatyka - co ja wiem  o testowaniu
Noc informatyka - co ja wiem o testowaniuTomek Borek
 
Teaching PostgreSQL to new people
Teaching PostgreSQL to new peopleTeaching PostgreSQL to new people
Teaching PostgreSQL to new peopleTomek Borek
 
Nowoczesne architektury
Nowoczesne architekturyNowoczesne architektury
Nowoczesne architekturyTomek Borek
 
Java Memory Consistency Model - concepts and context
Java Memory Consistency Model - concepts and contextJava Memory Consistency Model - concepts and context
Java Memory Consistency Model - concepts and contextTomek Borek
 
Seeing through the smoke
Seeing through the smokeSeeing through the smoke
Seeing through the smokeTomek Borek
 
AR drone - Polish JUG short demo
AR drone - Polish JUG short demoAR drone - Polish JUG short demo
AR drone - Polish JUG short demoTomek Borek
 
Testing SAAS, how to go about it?
Testing SAAS, how to go about it?Testing SAAS, how to go about it?
Testing SAAS, how to go about it?Tomek Borek
 
Spróbujmy szczęścia bo zaciskanie pięści nie działa
Spróbujmy szczęścia bo zaciskanie pięści nie działaSpróbujmy szczęścia bo zaciskanie pięści nie działa
Spróbujmy szczęścia bo zaciskanie pięści nie działaTomek Borek
 
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...Tomek Borek
 
Lightning talk on Java Memory Consistency Model Java Day Kiev 2014
Lightning talk on Java Memory Consistency Model Java Day Kiev 2014Lightning talk on Java Memory Consistency Model Java Day Kiev 2014
Lightning talk on Java Memory Consistency Model Java Day Kiev 2014Tomek Borek
 
Few words about happiness (Polish talk) / O szczęściu słów kilka
Few words about happiness (Polish talk) / O szczęściu słów kilkaFew words about happiness (Polish talk) / O szczęściu słów kilka
Few words about happiness (Polish talk) / O szczęściu słów kilkaTomek Borek
 
Jak użytecznie, prawdziwie i solidnie odpowiedzieć na pytanie "jak było"
Jak użytecznie, prawdziwie i solidnie odpowiedzieć na pytanie "jak było"Jak użytecznie, prawdziwie i solidnie odpowiedzieć na pytanie "jak było"
Jak użytecznie, prawdziwie i solidnie odpowiedzieć na pytanie "jak było"Tomek Borek
 
It's not always the application's fault
It's not always the application's faultIt's not always the application's fault
It's not always the application's faultTomek Borek
 
To nie zawsze wina aplikacji!
To nie zawsze wina aplikacji!To nie zawsze wina aplikacji!
To nie zawsze wina aplikacji!Tomek Borek
 
Wprowadzenie do optymalizacji wielokryterialnej / Intro to multicriteria opti...
Wprowadzenie do optymalizacji wielokryterialnej / Intro to multicriteria opti...Wprowadzenie do optymalizacji wielokryterialnej / Intro to multicriteria opti...
Wprowadzenie do optymalizacji wielokryterialnej / Intro to multicriteria opti...Tomek Borek
 
Git nie dla początkujących
Git nie dla początkującychGit nie dla początkujących
Git nie dla początkującychTomek Borek
 
Architecture visualizers - tools usability study
Architecture visualizers - tools usability studyArchitecture visualizers - tools usability study
Architecture visualizers - tools usability studyTomek Borek
 
Meta on HCI - keyword analysis and trends
Meta on HCI - keyword analysis and trendsMeta on HCI - keyword analysis and trends
Meta on HCI - keyword analysis and trendsTomek Borek
 
"Narco" emotions - description of study on whether Twitter can be used to gle...
"Narco" emotions - description of study on whether Twitter can be used to gle..."Narco" emotions - description of study on whether Twitter can be used to gle...
"Narco" emotions - description of study on whether Twitter can be used to gle...Tomek Borek
 
Java Memory (Consistency) Model - Polish JUG One Beer Talk #2
Java Memory (Consistency) Model - Polish JUG One Beer Talk #2Java Memory (Consistency) Model - Polish JUG One Beer Talk #2
Java Memory (Consistency) Model - Polish JUG One Beer Talk #2Tomek Borek
 

Mehr von Tomek Borek (20)

Noc informatyka - co ja wiem o testowaniu
Noc informatyka - co ja wiem  o testowaniuNoc informatyka - co ja wiem  o testowaniu
Noc informatyka - co ja wiem o testowaniu
 
Teaching PostgreSQL to new people
Teaching PostgreSQL to new peopleTeaching PostgreSQL to new people
Teaching PostgreSQL to new people
 
Nowoczesne architektury
Nowoczesne architekturyNowoczesne architektury
Nowoczesne architektury
 
Java Memory Consistency Model - concepts and context
Java Memory Consistency Model - concepts and contextJava Memory Consistency Model - concepts and context
Java Memory Consistency Model - concepts and context
 
Seeing through the smoke
Seeing through the smokeSeeing through the smoke
Seeing through the smoke
 
AR drone - Polish JUG short demo
AR drone - Polish JUG short demoAR drone - Polish JUG short demo
AR drone - Polish JUG short demo
 
Testing SAAS, how to go about it?
Testing SAAS, how to go about it?Testing SAAS, how to go about it?
Testing SAAS, how to go about it?
 
Spróbujmy szczęścia bo zaciskanie pięści nie działa
Spróbujmy szczęścia bo zaciskanie pięści nie działaSpróbujmy szczęścia bo zaciskanie pięści nie działa
Spróbujmy szczęścia bo zaciskanie pięści nie działa
 
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...
 
Lightning talk on Java Memory Consistency Model Java Day Kiev 2014
Lightning talk on Java Memory Consistency Model Java Day Kiev 2014Lightning talk on Java Memory Consistency Model Java Day Kiev 2014
Lightning talk on Java Memory Consistency Model Java Day Kiev 2014
 
Few words about happiness (Polish talk) / O szczęściu słów kilka
Few words about happiness (Polish talk) / O szczęściu słów kilkaFew words about happiness (Polish talk) / O szczęściu słów kilka
Few words about happiness (Polish talk) / O szczęściu słów kilka
 
Jak użytecznie, prawdziwie i solidnie odpowiedzieć na pytanie "jak było"
Jak użytecznie, prawdziwie i solidnie odpowiedzieć na pytanie "jak było"Jak użytecznie, prawdziwie i solidnie odpowiedzieć na pytanie "jak było"
Jak użytecznie, prawdziwie i solidnie odpowiedzieć na pytanie "jak było"
 
It's not always the application's fault
It's not always the application's faultIt's not always the application's fault
It's not always the application's fault
 
To nie zawsze wina aplikacji!
To nie zawsze wina aplikacji!To nie zawsze wina aplikacji!
To nie zawsze wina aplikacji!
 
Wprowadzenie do optymalizacji wielokryterialnej / Intro to multicriteria opti...
Wprowadzenie do optymalizacji wielokryterialnej / Intro to multicriteria opti...Wprowadzenie do optymalizacji wielokryterialnej / Intro to multicriteria opti...
Wprowadzenie do optymalizacji wielokryterialnej / Intro to multicriteria opti...
 
Git nie dla początkujących
Git nie dla początkującychGit nie dla początkujących
Git nie dla początkujących
 
Architecture visualizers - tools usability study
Architecture visualizers - tools usability studyArchitecture visualizers - tools usability study
Architecture visualizers - tools usability study
 
Meta on HCI - keyword analysis and trends
Meta on HCI - keyword analysis and trendsMeta on HCI - keyword analysis and trends
Meta on HCI - keyword analysis and trends
 
"Narco" emotions - description of study on whether Twitter can be used to gle...
"Narco" emotions - description of study on whether Twitter can be used to gle..."Narco" emotions - description of study on whether Twitter can be used to gle...
"Narco" emotions - description of study on whether Twitter can be used to gle...
 
Java Memory (Consistency) Model - Polish JUG One Beer Talk #2
Java Memory (Consistency) Model - Polish JUG One Beer Talk #2Java Memory (Consistency) Model - Polish JUG One Beer Talk #2
Java Memory (Consistency) Model - Polish JUG One Beer Talk #2
 

Kürzlich hochgeladen

Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 

Kürzlich hochgeladen (20)

Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 

Jvm tuning in a rush! - Lviv JUG

  • 1. JVM Tuning in a rush Tomasz Borek, Symentis
  • 2. • Infected in childhood • From me parents • Amstrad, ElWro Junior • Games! Doh! • Mem pages in DOS anyone? • In IT • ETL, crawlers, web-app, archi • IAAS, SAAS, own servers • Java 4 – 7, GNU/Linux, SQLs • Ardent “activist” Tomasz Borek
  • 3. Can be found in the net! :P https://lafkblogs.wordpress.com/ https://twitter.com/lafk_pl https://pl.linkedin.com/in/tjborek GeeCON, ChamberConf, Confitura, Lambda Days, LambdaCon, Java Developer Days, JavaDay Lviv, JavaDay Kiev
  • 4. Tomek in IT groups .com http://java.pl Kraków Poznań Praga Sopot http://geecon.org
  • 5. Prod hits rock bottom ● Everybody is kung-fu fighting ● Must be quick like lightning
  • 6. So! Being a dev, you need: 1.To know your traffic and your app and your infra
  • 7. So! Being a dev, you need: 1.To know your traffic and your app and your infra 2.To know recent changes
  • 8. So! Being a dev, you need: 1.To know your traffic and your app and your infra 2.To know recent changes 3.To know your limits (sometimes comes from point 1)
  • 9. So! Being a dev, you need: 1.To know your traffic and your app and your infra 2.To know recent changes 3.To know your limits (sometimes comes from point 1) 4.To have access to monitoring
  • 10. So! Being a dev, you need: 1.To know your traffic and your app and your infra 2.To know recent changes 3.To know your limits (sometimes comes from point 1) 4.To have access to monitoring 5.To adjust pooling (both thread and connection)
  • 11. So! Being a dev, you need: 1.To know your traffic and your app and your infra 2.To know recent changes 3.To know your limits (sometimes comes from point 1) 4.To have access to monitoring 5.To adjust pooling (both thread and connection) 6.To peruse logs and pull out anomalies
  • 12. So! Being a dev, you need: 1.To know your traffic and your app and your infra 2.To know recent changes 3.To know your limits (sometimes comes from point 1) 4.To have access to monitoring 5.To adjust pooling (both thread and connection) 6.To peruse logs and pull out anomalies 7.TO TUNE JVM
  • 13. So! Being a dev, you need: 1.To know your traffic and your app and your infra 2.To know recent changes 3.To know your limits (sometimes comes from point 1) 4.To have access to monitoring 5.To adjust pooling (both thread and connection) 6.To peruse logs and pull out anomalies 7.TO TUNE JVM
  • 14. JVM? Meaning? • Sun Hotspot • IBM • JRockit • IceTea • OpenJDK • TCK decides
  • 15. JVM? Meaning? • Sun Hotspot • IBM • JRockit • IceTea • OpenJDK • TCK decides
  • 16. JVM? Meaning? • Sun Hotspot – but which version? • IBM • JRockit • IceTea • OpenJDK • TCK decides
  • 17. JVM? Meaning? • Sun Hotspot – but which version? And architecture? • IBM • JRockit • IceTea • OpenJDK • TCK decides
  • 18. So! JVM tuning? 1.To adjust GC, based on it's logs
  • 19. So! JVM tuning? 1.To adjust GC, based on it's logs 2.To adjust (native) heap
  • 20. So! JVM tuning? 1.To adjust GC, based on it's logs 2.To adjust (native) heap 3.Tweaking JVM starting flags
  • 21. So! JVM tuning? 1.To adjust GC, based on it's logs 2.To adjust (native) heap 3.Tweaking JVM starting flags 4.To use TOOLS
  • 22. Today! ● JVM tuning ● Diagnosing performance problems ● Tools ● All in a rush
  • 24. Takeaway #1 JVM is a process
  • 25. Being a process means ● OS architecture enforces JVM architecture ● Your memory is limited by OS and other processes – Heap is one – C-heap is another! ● IO-wise and thread-wise: – Your threads and files opened are limited by ulimit ● File descriptors!
  • 27. OOM flavours ● Out of HeapSpace
  • 28. OOM flavours ● Out of HeapSpace ● PermGen error
  • 29. OOM flavours ● Out of HeapSpace ● PermGen error ● Unable to create native thread
  • 30. API says OutOfMemoryError is ● Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made available by the garbage collector. OutOfMemoryError objects may be constructed by the virtual machine as if suppression were disabled and/or the stack trace was not writable.
  • 31. API says OutOfMemoryError is ● Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made available by the garbage collector. OutOfMemoryError objects may be constructed by the virtual machine as if suppression were disabled and/or the stack trace was not writable.
  • 32. API says OutOfMemoryError is ● Due to failure in allocating an object after garbage collection. ● Nothing about threads. ● Nothing about PermGen.
  • 33. How much memory JVM uses? ● Say you start it with Xmx == Xms == 1GB
  • 34. How much memory JVM uses? ● Say you start it with Xmx == Xms == 1GB ● 1GB?
  • 35. How much memory JVM uses? ● Say you start it with Xmx == Xms == 1GB ● 1GB? ● Around 1GB?
  • 36. How much memory JVM uses? ● Say you start it with Xmx == Xms == 1GB ● 1GB? ● Around 1GB? ● If we talk about Java HEAP
  • 37. Memory management Entire RAM ● 32 bits: can address less than 4GB. ● 64 bits: can address… theoretically 16 EB. – Still – much more! ● There's much more to 32vs64 but that's for another time
  • 38. Memory management Entire RAM What's left of RAM – C-HEAPJVM heap -Xmx ● -Xms – minimal heap size ● -Xmx – maximal heap size ● When both should be set to same value?
  • 39. Memory management Entire RAM What's left of RAM – C-HEAPJVM heap What's left – C-HEAPJVM opsJVM heap -Xmx PermGen
  • 40. PermGen ● Permanent Generation – Early Java – for JDK classes – and Strings ● Back then – good idea ● Now removed – JDK 7 – Strings no longer in PermGen – JDK 8 – no PermGen at all
  • 41. PermGen ● Permanent Generation – Early Java – for JDK classes – and Strings ● Back then – good idea ● Now removed – JDK 7 – Strings no longer in PermGen – JDK 8 – no PermGen at all Quick fix? Increase PermGen size.
  • 42. Memory management What's left – C-HEAPJVM opsJVM heap -Xmx PermGen
  • 43. GC ● When it runs?
  • 44. GC ● When it runs? ● Minor collection?
  • 45. GC ● When it runs? ● Minor collection? ● Major collection?
  • 46. GC ● When it runs? ● Minor collection? ● Major collection? ● How can a dev tune GC?
  • 47. Generational GC Tenured – where long-lived are promotedEden – infants that die quickly ● Studies showed: – most objects die young – Some live really long ● Ergo: short- and long-lived division ● Minor collection: Eden ● Major collection: whole heap
  • 48. Generational GC - mechanics ● In fact Eden has also 2 Survivor spaces – To handle locality – Helps compress after freeing space – First promotion to survivor, then to tenured ● Flags tell: – How many GCs object must survive to be promoted – How large Eden / Tenured / Survivors spaces are – What is logged (how details GC logs are) – Many, MANY more
  • 49. Memory management trade-offs ● Large heap – large full GC – small native and C-heap? ● Smaller heap – minor GC may be enough ● Make sure your objects die young and only really long lived reach tenured
  • 50. JVM tuning 1.To adjust GC, based on it's logs 2.To adjust (native) heap 3.Tweaking JVM starting flags 4.To use TOOLS – later
  • 52. Takeaway #3 GC tuning is a trade-off
  • 54. „The Box” • Heinz Kabutz, Kirk Pepperdine • Top - bottom
  • 56. „The Box” • TRAFFIC: how is app used? TRAFFIC: people, automatic
  • 57. „The Box” • TRAFFIC: how is app used? • CODE: ? TRAFFIC: people, automatic Application CODE
  • 58. „The Box” • TRAFFIC: how is app used? • CODE: threads, algos, data structures... TRAFFIC: people, automatic CODE: threads, data structs, algo
  • 59. „The Box” • TRAFFIC: how is app used? • CODE: threads, algos, data structures... • JVM: ? TRAFFIC: people, automatic CODE: threads, data structs, algo JVM
  • 60. „The Box” • TRAFFIC: how is app used? • CODE: threads, algos, data structures... • JVM: ? TRAFFIC: people, automatic CODE: threads, data structs, algo JVM: flags, GC
  • 61. „The Box” • TRAFFIC: how is app used? • CODE: threads, algos, data structures... • JVM: starting flags, GC • OS: ? TRAFFIC: people, automatic CODE: threads, data structs, algo JVM: flags, GC OS
  • 62. „The Box” • TRAFFIC: how is app used? • CODE: threads, algos, data structures... • JVM: starting flags, GC • OS: ulimit, FS, config, archi, other procs… TRAFFIC: people, automatic CODE: threads, data structs, algo JVM: flags, GC OS: FS, config, limits
  • 63. „The Box” • TRAFFIC: how is app used? • CODE: threads, algos, data structures... • JVM: starting flags, GC • OS: ulimit, FS, config, archi, other procs… • VIRT: ? TRAFFIC: people, automatic CODE: threads, data structs, algo JVM: flags, GC OS: FS, config, limits VIRT
  • 64. „The Box” • TRAFFIC: how is app used? • CODE: threads, algos, data structures... • JVM: starting flags, GC • OS: ulimit, FS, config, archi, other procs… • VIRT: hell depends! TRAFFIC: people, automatic CODE: threads, data structs, algo JVM: flags, GC OS: FS, config, limits VIRT
  • 65. „The Box” • TRAFFIC: how is app used? • CODE: threads, algos, data structures... • JVM: starting flags, GC • OS: ulimit, FS, config, archi, other procs… • VIRT: hell depends! • HARDWARE: ? TRAFFIC: people, automatic CODE: threads, data structs, algo JVM: flags, GC OS: FS, config, limits VIRT HARDWARE
  • 66. „The Box” • TRAFFIC: how is app used? • CODE: threads, algos, data structures... • JVM: starting flags, GC • OS: ulimit, FS, config, archi, other procs… • VIRT: hell depends! • HARDWARE: 32 vs 64, RAM, BIOS, drivers… TRAFFIC: people, automatic CODE: threads, data structs, algo JVM: flags, GC OS: FS, config, limits VIRT HARDWARE
  • 67. Brendan Gregg – USE • Utilization, Saturation, Errors • Use – how much in use is your resource • Saturation – how many requests await (waiting queue) • Errors – what errors are thrown by resource • http://www.brendangregg.com/usemethod.html • Create a checklist for each important resource, for finding out Utilization, Saturation and Errors and you'll know how to soon find out what is going on with resource
  • 70. TOOLS
  • 71.
  • 72.
  • 73. Takeaway #1 GNU/Linux surely has a tool for that
  • 74. How to find your java process? ● ps … | grep java ●
  • 75. How to find your java process? ● ps … | grep java ● pgrep java
  • 76. How to find your java process? ● ps … | grep java ● pgrep java ● jps
  • 77. How to change flags on-the-fly? ● jinfo
  • 78. How to dump threads or heap? ● kill -3
  • 79. How to dump threads or heap? ● kill -3 ● jstack
  • 80. How to dump threads or heap? ● kill -3 ● jstack ● jhat (heap)
  • 81. jvisualvm ● Deserves it's own slide ● Profiler, sampler ● Monitor (heap, threads, etc.) ● Calls GC, does dumps
  • 82. SUMMARIZING ● For being rushed – prepare in advance – Monitoring, logs, ceilings, etc. ● Log GC ● JVM is a process – all process limits in your OS apply ● The Box ● Brendan Gregg ● GNU/Linux – tools unparalleled
  • 83. ?