SlideShare a Scribd company logo
Wprowadzenie do
strojenia Javy na
GNU/Linux dla zajętego
programisty
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
OOM flavours
● Out of HeapSpace
● PermGen error
● Unable to create native thread
● There are others, these are most popular
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
?

More Related Content

What's hot

JRuby: The Hard Parts
JRuby: The Hard PartsJRuby: The Hard Parts
JRuby: The Hard Parts
Charles Nutter
 
Over 9000: JRuby in 2015
Over 9000: JRuby in 2015Over 9000: JRuby in 2015
Over 9000: JRuby in 2015
Charles Nutter
 
Sparklife - Life In The Trenches With Spark
Sparklife - Life In The Trenches With SparkSparklife - Life In The Trenches With Spark
Sparklife - Life In The Trenches With Spark
Ian Pointer
 
Euruko 2012 - JRuby
Euruko 2012 - JRubyEuruko 2012 - JRuby
Euruko 2012 - JRuby
Charles Nutter
 
NodePDX Slides
NodePDX SlidesNodePDX Slides
NodePDX Slides
Kyle Drake
 
Ola Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The JvmOla Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The Jvm
deimos
 
Crate - ruby based standalone executables
Crate - ruby based standalone executablesCrate - ruby based standalone executables
Crate - ruby based standalone executables
Jeremy Hinegardner
 
Making the big data ecosystem work together with Python & Apache Arrow, Apach...
Making the big data ecosystem work together with Python & Apache Arrow, Apach...Making the big data ecosystem work together with Python & Apache Arrow, Apach...
Making the big data ecosystem work together with Python & Apache Arrow, Apach...
Holden Karau
 
TRICK2013 Results
TRICK2013 ResultsTRICK2013 Results
TRICK2013 Results
mametter
 
Powering tensorflow with big data (apache spark, flink, and beam) dataworks...
Powering tensorflow with big data (apache spark, flink, and beam)   dataworks...Powering tensorflow with big data (apache spark, flink, and beam)   dataworks...
Powering tensorflow with big data (apache spark, flink, and beam) dataworks...
Holden Karau
 
Gpgpu intro
Gpgpu introGpgpu intro
Gpgpu intro
Dominik Seifert
 
How DSL works on Ruby
How DSL works on RubyHow DSL works on Ruby
How DSL works on Ruby
Hiroshi SHIBATA
 
Ruby Under The Hood
Ruby Under The HoodRuby Under The Hood
Ruby Under The Hood
craig lehmann
 
Codebits Handivi
Codebits HandiviCodebits Handivi
Codebits Handivi
cfpinto
 
High Performance Ruby - E4E Conference 2013
High Performance Ruby - E4E Conference 2013High Performance Ruby - E4E Conference 2013
High Performance Ruby - E4E Conference 2013
Charles Nutter
 
How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?
Hiroshi SHIBATA
 
An introduction and future of Ruby coverage library
An introduction and future of Ruby coverage libraryAn introduction and future of Ruby coverage library
An introduction and future of Ruby coverage library
mametter
 
JRuby: What's Different (RORO Melbourne October 2011)
JRuby: What's Different (RORO Melbourne October 2011)JRuby: What's Different (RORO Melbourne October 2011)
JRuby: What's Different (RORO Melbourne October 2011)
Charles Nutter
 
Everything can be a bundle - making OSGi bundles of Java legacy code - Gunnar...
Everything can be a bundle - making OSGi bundles of Java legacy code - Gunnar...Everything can be a bundle - making OSGi bundles of Java legacy code - Gunnar...
Everything can be a bundle - making OSGi bundles of Java legacy code - Gunnar...
mfrancis
 
Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the rest
george.james
 

What's hot (20)

JRuby: The Hard Parts
JRuby: The Hard PartsJRuby: The Hard Parts
JRuby: The Hard Parts
 
Over 9000: JRuby in 2015
Over 9000: JRuby in 2015Over 9000: JRuby in 2015
Over 9000: JRuby in 2015
 
Sparklife - Life In The Trenches With Spark
Sparklife - Life In The Trenches With SparkSparklife - Life In The Trenches With Spark
Sparklife - Life In The Trenches With Spark
 
Euruko 2012 - JRuby
Euruko 2012 - JRubyEuruko 2012 - JRuby
Euruko 2012 - JRuby
 
NodePDX Slides
NodePDX SlidesNodePDX Slides
NodePDX Slides
 
Ola Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The JvmOla Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The Jvm
 
Crate - ruby based standalone executables
Crate - ruby based standalone executablesCrate - ruby based standalone executables
Crate - ruby based standalone executables
 
Making the big data ecosystem work together with Python & Apache Arrow, Apach...
Making the big data ecosystem work together with Python & Apache Arrow, Apach...Making the big data ecosystem work together with Python & Apache Arrow, Apach...
Making the big data ecosystem work together with Python & Apache Arrow, Apach...
 
TRICK2013 Results
TRICK2013 ResultsTRICK2013 Results
TRICK2013 Results
 
Powering tensorflow with big data (apache spark, flink, and beam) dataworks...
Powering tensorflow with big data (apache spark, flink, and beam)   dataworks...Powering tensorflow with big data (apache spark, flink, and beam)   dataworks...
Powering tensorflow with big data (apache spark, flink, and beam) dataworks...
 
Gpgpu intro
Gpgpu introGpgpu intro
Gpgpu intro
 
How DSL works on Ruby
How DSL works on RubyHow DSL works on Ruby
How DSL works on Ruby
 
Ruby Under The Hood
Ruby Under The HoodRuby Under The Hood
Ruby Under The Hood
 
Codebits Handivi
Codebits HandiviCodebits Handivi
Codebits Handivi
 
High Performance Ruby - E4E Conference 2013
High Performance Ruby - E4E Conference 2013High Performance Ruby - E4E Conference 2013
High Performance Ruby - E4E Conference 2013
 
How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?
 
An introduction and future of Ruby coverage library
An introduction and future of Ruby coverage libraryAn introduction and future of Ruby coverage library
An introduction and future of Ruby coverage library
 
JRuby: What's Different (RORO Melbourne October 2011)
JRuby: What's Different (RORO Melbourne October 2011)JRuby: What's Different (RORO Melbourne October 2011)
JRuby: What's Different (RORO Melbourne October 2011)
 
Everything can be a bundle - making OSGi bundles of Java legacy code - Gunnar...
Everything can be a bundle - making OSGi bundles of Java legacy code - Gunnar...Everything can be a bundle - making OSGi bundles of Java legacy code - Gunnar...
Everything can be a bundle - making OSGi bundles of Java legacy code - Gunnar...
 
Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the rest
 

Viewers also liked

Social Media Article 11.15
Social Media Article 11.15Social Media Article 11.15
Social Media Article 11.15
Anne Cameron
 
Автоматизація Процесу HR
Автоматизація Процесу HRАвтоматизація Процесу HR
Автоматизація Процесу HR
LubaS26
 
Maldív szigetek
Maldív szigetekMaldív szigetek
Maldív szigetek
zelezny2
 
3. Нужные люди на своих местах. Тренды управления разработкой
3. Нужные люди на своих местах. Тренды управления разработкой3. Нужные люди на своих местах. Тренды управления разработкой
3. Нужные люди на своих местах. Тренды управления разработкой
Евгений Антонов
 
Bb stvol
Bb stvolBb stvol
Information Technology Terminology - Brainbench
Information Technology Terminology - BrainbenchInformation Technology Terminology - Brainbench
Information Technology Terminology - Brainbench
Amritanshu Banerjee
 
浜松情報 12月号 掲載インタビュー
浜松情報 12月号 掲載インタビュー浜松情報 12月号 掲載インタビュー
浜松情報 12月号 掲載インタビュー
株式会社はまぞう
 
Как развивать персонал и оценивать качество этого процесса
Как развивать персонал и оценивать качество этого процессаКак развивать персонал и оценивать качество этого процесса
Как развивать персонал и оценивать качество этого процесса
Директор по персоналу & Кадровое Дело
 
Art city
Art cityArt city
Идеальный отдел продаж. Планируем и внедряем изменения
Идеальный отдел продаж. Планируем и внедряем измененияИдеальный отдел продаж. Планируем и внедряем изменения
Идеальный отдел продаж. Планируем и внедряем изменения
Константин Артемьев
 
Social Networking Effects
Social Networking EffectsSocial Networking Effects
Social Networking Effects
Satyam Mahajan
 
50 brilliant homepage design
50 brilliant homepage design50 brilliant homepage design
50 brilliant homepage design
Nirav Patel
 
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
オラクルエンジニア通信
 
NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例
Amazon Web Services Japan
 
ビッグデータ関連Oss動向調査とニーズ分析
ビッグデータ関連Oss動向調査とニーズ分析ビッグデータ関連Oss動向調査とニーズ分析
ビッグデータ関連Oss動向調査とニーズ分析
Yukio Yoshida
 

Viewers also liked (15)

Social Media Article 11.15
Social Media Article 11.15Social Media Article 11.15
Social Media Article 11.15
 
Автоматизація Процесу HR
Автоматизація Процесу HRАвтоматизація Процесу HR
Автоматизація Процесу HR
 
Maldív szigetek
Maldív szigetekMaldív szigetek
Maldív szigetek
 
3. Нужные люди на своих местах. Тренды управления разработкой
3. Нужные люди на своих местах. Тренды управления разработкой3. Нужные люди на своих местах. Тренды управления разработкой
3. Нужные люди на своих местах. Тренды управления разработкой
 
Bb stvol
Bb stvolBb stvol
Bb stvol
 
Information Technology Terminology - Brainbench
Information Technology Terminology - BrainbenchInformation Technology Terminology - Brainbench
Information Technology Terminology - Brainbench
 
浜松情報 12月号 掲載インタビュー
浜松情報 12月号 掲載インタビュー浜松情報 12月号 掲載インタビュー
浜松情報 12月号 掲載インタビュー
 
Как развивать персонал и оценивать качество этого процесса
Как развивать персонал и оценивать качество этого процессаКак развивать персонал и оценивать качество этого процесса
Как развивать персонал и оценивать качество этого процесса
 
Art city
Art cityArt city
Art city
 
Идеальный отдел продаж. Планируем и внедряем изменения
Идеальный отдел продаж. Планируем и внедряем измененияИдеальный отдел продаж. Планируем и внедряем изменения
Идеальный отдел продаж. Планируем и внедряем изменения
 
Social Networking Effects
Social Networking EffectsSocial Networking Effects
Social Networking Effects
 
50 brilliant homepage design
50 brilliant homepage design50 brilliant homepage design
50 brilliant homepage design
 
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
 
NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例
 
ビッグデータ関連Oss動向調査とニーズ分析
ビッグデータ関連Oss動向調査とニーズ分析ビッグデータ関連Oss動向調査とニーズ分析
ビッグデータ関連Oss動向調査とニーズ分析
 

Similar to Java tuning on GNU/Linux for busy dev

Jvm tuning in a rush! - Lviv JUG
Jvm tuning in a rush! - Lviv JUGJvm tuning in a rush! - Lviv JUG
Jvm tuning in a rush! - Lviv JUG
Tomek Borek
 
Scaling with Symfony - PHP UK
Scaling with Symfony - PHP UKScaling with Symfony - PHP UK
Scaling with Symfony - PHP UK
Ricard Clau
 
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
Tomas Doran
 
Zero mq logs
Zero mq logsZero mq logs
Zero mq logs
Tomas Doran
 
meetPHP#8 - PHP startups prototypes
meetPHP#8 - PHP startups prototypesmeetPHP#8 - PHP startups prototypes
meetPHP#8 - PHP startups prototypes
Max Małecki
 
Application Profiling for Memory and Performance
Application Profiling for Memory and PerformanceApplication Profiling for Memory and Performance
Application Profiling for Memory and Performance
WSO2
 
Rust Programming Language
Rust Programming LanguageRust Programming Language
Rust Programming Language
Jaeju Kim
 
Application Profiling for Memory and Performance
Application Profiling for Memory and PerformanceApplication Profiling for Memory and Performance
Application Profiling for Memory and Performance
pradeepfn
 
Vulnerability, exploit to metasploit
Vulnerability, exploit to metasploitVulnerability, exploit to metasploit
Vulnerability, exploit to metasploit
Tiago Henriques
 
T4T Training day - NodeJS
T4T Training day - NodeJST4T Training day - NodeJS
T4T Training day - NodeJS
Tim Sommer
 
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
DataStax Academy
 
MongoDB and server performance
MongoDB and server performanceMongoDB and server performance
MongoDB and server performance
Alon Horev
 
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
 
DOD 2016 - Jörg Schad - Nobody Puts Java in the Conainer
DOD 2016 - Jörg Schad - Nobody Puts Java in the ConainerDOD 2016 - Jörg Schad - Nobody Puts Java in the Conainer
DOD 2016 - Jörg Schad - Nobody Puts Java in the Conainer
PROIDEA
 
Performance
PerformancePerformance
Performance
Christophe Marchal
 
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
bbogacki
 
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
dotCloud
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Docker, Inc.
 
From a student to an apache committer practice of apache io tdb
From a student to an apache committer  practice of apache io tdbFrom a student to an apache committer  practice of apache io tdb
From a student to an apache committer practice of apache io tdb
jixuan1989
 
Basics of JVM Tuning
Basics of JVM TuningBasics of JVM Tuning
Basics of JVM Tuning
Vladislav Gangan
 

Similar to Java tuning on GNU/Linux for busy dev (20)

Jvm tuning in a rush! - Lviv JUG
Jvm tuning in a rush! - Lviv JUGJvm tuning in a rush! - Lviv JUG
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 UK
 
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
 
Zero mq logs
Zero mq logsZero mq logs
Zero mq logs
 
meetPHP#8 - PHP startups prototypes
meetPHP#8 - PHP startups prototypesmeetPHP#8 - PHP startups prototypes
meetPHP#8 - PHP startups prototypes
 
Application Profiling for Memory and Performance
Application Profiling for Memory and PerformanceApplication Profiling for Memory and Performance
Application Profiling for Memory and Performance
 
Rust Programming Language
Rust Programming LanguageRust Programming Language
Rust Programming Language
 
Application Profiling for Memory and Performance
Application Profiling for Memory and PerformanceApplication Profiling for Memory and Performance
Application Profiling for Memory and Performance
 
Vulnerability, exploit to metasploit
Vulnerability, exploit to metasploitVulnerability, exploit to metasploit
Vulnerability, exploit to metasploit
 
T4T Training day - NodeJS
T4T Training day - NodeJST4T Training day - NodeJS
T4T Training day - NodeJS
 
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
 
MongoDB and server performance
MongoDB and server performanceMongoDB and server performance
MongoDB and server performance
 
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)
 
DOD 2016 - Jörg Schad - Nobody Puts Java in the Conainer
DOD 2016 - Jörg Schad - Nobody Puts Java in the ConainerDOD 2016 - Jörg Schad - Nobody Puts Java in the Conainer
DOD 2016 - Jörg Schad - Nobody Puts Java in the Conainer
 
Performance
PerformancePerformance
Performance
 
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
 
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
 
From a student to an apache committer practice of apache io tdb
From a student to an apache committer  practice of apache io tdbFrom a student to an apache committer  practice of apache io tdb
From a student to an apache committer practice of apache io tdb
 
Basics of JVM Tuning
Basics of JVM TuningBasics of JVM Tuning
Basics of JVM Tuning
 

More from 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 testowaniu
Tomek Borek
 
Teaching PostgreSQL to new people
Teaching PostgreSQL to new peopleTeaching PostgreSQL to new people
Teaching PostgreSQL to new people
Tomek Borek
 
Nowoczesne architektury
Nowoczesne architekturyNowoczesne architektury
Nowoczesne architektury
Tomek 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 context
Tomek Borek
 
Seeing through the smoke
Seeing through the smokeSeeing through the smoke
Seeing through the smoke
Tomek Borek
 
AR drone - Polish JUG short demo
AR drone - Polish JUG short demoAR drone - Polish JUG short demo
AR drone - Polish JUG short demo
Tomek 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ła
Tomek 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 2014
Tomek 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 kilka
Tomek 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 fault
Tomek 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ących
Tomek Borek
 
Architecture visualizers - tools usability study
Architecture visualizers - tools usability studyArchitecture visualizers - tools usability study
Architecture visualizers - tools usability study
Tomek 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 #2
Tomek Borek
 

More from 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
 

Recently uploaded

Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data PlatformAlluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio, Inc.
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
kalichargn70th171
 
Upturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in NashikUpturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in Nashik
Upturn India Technologies
 
Beginner's Guide to Observability@Devoxx PL 2024
Beginner's  Guide to Observability@Devoxx PL 2024Beginner's  Guide to Observability@Devoxx PL 2024
Beginner's Guide to Observability@Devoxx PL 2024
michniczscribd
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
XfilesPro
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
Luigi Fugaro
 
Orca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container OrchestrationOrca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container Orchestration
Pedro J. Molina
 
Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...
Paul Brebner
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
The Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdfThe Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdf
kalichargn70th171
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptxMigration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
ervikas4
 
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery FleetStork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
Vince Scalabrino
 
Optimizing Your E-commerce with WooCommerce.pptx
Optimizing Your E-commerce with WooCommerce.pptxOptimizing Your E-commerce with WooCommerce.pptx
Optimizing Your E-commerce with WooCommerce.pptx
WebConnect Pvt Ltd
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
campbellclarkson
 
TMU毕业证书精仿办理
TMU毕业证书精仿办理TMU毕业证书精仿办理
TMU毕业证书精仿办理
aeeva
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
ShulagnaSarkar2
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
Maitrey Patel
 

Recently uploaded (20)

Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data PlatformAlluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
 
Upturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in NashikUpturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in Nashik
 
Beginner's Guide to Observability@Devoxx PL 2024
Beginner's  Guide to Observability@Devoxx PL 2024Beginner's  Guide to Observability@Devoxx PL 2024
Beginner's Guide to Observability@Devoxx PL 2024
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
 
Orca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container OrchestrationOrca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container Orchestration
 
Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
The Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdfThe Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdf
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptxMigration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
 
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery FleetStork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
 
Optimizing Your E-commerce with WooCommerce.pptx
Optimizing Your E-commerce with WooCommerce.pptxOptimizing Your E-commerce with WooCommerce.pptx
Optimizing Your E-commerce with WooCommerce.pptx
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
 
TMU毕业证书精仿办理
TMU毕业证书精仿办理TMU毕业证书精仿办理
TMU毕业证书精仿办理
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
 

Java tuning on GNU/Linux for busy dev

  • 1. Wprowadzenie do strojenia Javy na GNU/Linux dla zajętego programisty 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. OOM flavours ● Out of HeapSpace ● PermGen error ● Unable to create native thread ● There are others, these are most popular
  • 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 ● 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.
  • 33. API says OutOfMemoryError is ● Due to failure in allocating an object after garbage collection. ● Nothing about threads. ● Nothing about PermGen.
  • 34. How much memory JVM uses? ● Say you start it with Xmx == Xms == 1GB
  • 35. How much memory JVM uses? ● Say you start it with Xmx == Xms == 1GB ● 1GB?
  • 36. How much memory JVM uses? ● Say you start it with Xmx == Xms == 1GB ● 1GB? ● Around 1GB?
  • 37. How much memory JVM uses? ● Say you start it with Xmx == Xms == 1GB ● 1GB? ● Around 1GB? ● If we talk about Java HEAP
  • 38. 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
  • 39. 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?
  • 40. Memory management Entire RAM What's left of RAM – C-HEAPJVM heap What's left – C-HEAPJVM opsJVM heap -Xmx PermGen
  • 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
  • 42. 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.
  • 43. Memory management What's left – C-HEAPJVM opsJVM heap -Xmx PermGen
  • 44. GC ● When it runs?
  • 45. GC ● When it runs? ● Minor collection?
  • 46. GC ● When it runs? ● Minor collection? ● Major collection?
  • 47. GC ● When it runs? ● Minor collection? ● Major collection? ● How can a dev tune GC?
  • 48. 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
  • 49. 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
  • 50. 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
  • 51. 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
  • 53. Takeaway #3 GC tuning is a trade-off
  • 55. „The Box” • Heinz Kabutz, Kirk Pepperdine • Top - bottom
  • 57. „The Box” • TRAFFIC: how is app used? TRAFFIC: people, automatic
  • 58. „The Box” • TRAFFIC: how is app used? • CODE: ? TRAFFIC: people, automatic Application CODE
  • 59. „The Box” • TRAFFIC: how is app used? • CODE: threads, algos, data structures... TRAFFIC: people, automatic CODE: threads, data structs, algo
  • 60. „The Box” • TRAFFIC: how is app used? • CODE: threads, algos, data structures... • JVM: ? TRAFFIC: people, automatic CODE: threads, data structs, algo JVM
  • 61. „The Box” • TRAFFIC: how is app used? • CODE: threads, algos, data structures... • JVM: ? TRAFFIC: people, automatic CODE: threads, data structs, algo JVM: flags, GC
  • 62. „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
  • 63. „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
  • 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: ? 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! TRAFFIC: people, automatic CODE: threads, data structs, algo JVM: flags, GC OS: FS, config, limits VIRT
  • 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: ? TRAFFIC: people, automatic CODE: threads, data structs, algo JVM: flags, GC OS: FS, config, limits VIRT HARDWARE
  • 67. „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
  • 68. 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
  • 71. TOOLS
  • 72.
  • 73.
  • 74. Takeaway #1 GNU/Linux surely has a tool for that
  • 75. How to find your java process? ● ps … | grep java ●
  • 76. How to find your java process? ● ps … | grep java ● pgrep java
  • 77. How to find your java process? ● ps … | grep java ● pgrep java ● jps
  • 78. How to change flags on-the-fly? ● jinfo
  • 79. How to dump threads or heap? ● kill -3
  • 80. How to dump threads or heap? ● kill -3 ● jstack
  • 81. How to dump threads or heap? ● kill -3 ● jstack ● jhat (heap)
  • 82. jvisualvm ● Deserves it's own slide ● Profiler, sampler ● Monitor (heap, threads, etc.) ● Calls GC, does dumps
  • 83. 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
  • 84. ?