Bruno Borges Profile picture
Brazilian Immigrant 🇨🇦🇧🇷🇺🇸 Java Champion. Principal PM Manager for #Java ☕️ Microsoft. Previously @OracleDevs, #Azure DevRel. Leads @JavaAtMicrosoft
Dec 28, 2021 5 tweets 2 min read
🇧🇷 @iFood: evite rodar JVMs em containers c/ pouca RAM/CPU e tentar resolver problema de performance com réplicas.

Dê mais RAM/CPU pra cada JVM (vertical scaling) e reduza o # de réplicas.

Vai salvar $ em recursos de nuvem e em reescrita de código.
medium.com/ifood-tech/nos… O problema é ainda mais agravante se o sistema tem duas ou mais réplicas rodando no mesmo node/VM.

Ou seja, ao invés de ter uma única JVM com X RAM/CPU por VM, o sistema está rodando X dividido por réplicas por VM.

Desperdício de potencial de performance.
Dec 15, 2021 4 tweets 2 min read
TIL #Log4j depends on some Java SE modules that IMO shouldn't.

- java.desktop
- java.management

IMO, all logging frameworks (core functionalities) should depend only on java.base and java.logging.

Anything else should be a separate extension/artifact.

#Java #OpenJDK While 'java.naming' is also a dependency, #Log4j works fine without it.

It won't operate at all if java.desktop and java.management are missing.

Removing 'java.naming' module from a jlinked runtime is the ultimate protection against JNDI attacks in Java.
Nov 20, 2021 10 tweets 3 min read
This week we helped a customer who was facing an issue with timezones.

Sit tight.

It's fun.

1/n
Customer reported that when they started using MS Build of OpenJDK, date/time data was being inserted with the wrong time. A close look showed that the timezone was GMT-0.

Weird. But not difficult to solve. Add the following to the Dockerfile:

ENV TZ "America/Sao_Paulo"

2/n
Feb 26, 2021 10 tweets 3 min read
Our research of #Java on #Kubernetes is pointing us into looking at:

- ActiveProcessorCount
- Default GC
- Default Heap Sizing

Here are some facts: 1/n ActiveProcessorCount currently matches cpu_quota: up to 1000m, 1 proc. 1001-2000m, 2 procs, and so on.

This sounds reasonable, but as we've learned, CFS control does not limit CPU count, only CPU time. Multiple native threads may execute in parallel, until the quota is reached.
Feb 24, 2021 5 tweets 2 min read
Not only #Java developers are deploying their microservices to #Kubernetes with 1 vCPU only (1000m), there may be multiple pods on the same nodes since podAntiAffinity is unlikely to be common practice when scaling, to get an even distribution. So, instead of having a bigger pod (2000m-4000m) on a node, there are two or more 1000m pods on a node.

For web apps, I think this setup is very unlikely to be reasonable.
Jan 23, 2019 8 tweets 7 min read
#Java's death will be due to SEO mess, lack of centralized docs, outdated tutorials & no one-stop-shop place to find it all

- go.java
- openjdk.java.net
- oracle.com/java
- java.oracle.com
- java.com
- docs.oracle.com/javase/ - go.java

This site was supposed to be the answer, but it only raises even more questions. The information here is mostly marketing-related, and has pointers to other online locations, outside go.java.

Potential: very high.
Reality: waste of TLD.