Author Archives: Jakub Holý
Clojure – comparison of gnuplot, Incanter, oz/vega-lite for plotting usage data
What is the best way to plot memory and CPU usage data (mainly) in Clojure? I will compare gnuplot, Incanter with JFreeChart, and vega-lite (via Oz). (Spoiler: I like Oz/vega-lite most but still use Incanter to prepare the data.) The data looks like this: ;; sec.ns | memory | CPU % 1541052937.882172509 59m 0.0 1541052981.122419892Continue reading “Clojure – comparison of gnuplot, Incanter, oz/vega-lite for plotting usage data”
How I got fired and learned the importance of communication and play time
When I came to the office one late autumn morning in 2005, I have been shocked to find out that – without any warning signs whatsoever – I hd been fired. That day I have learned the importance of communication. Their criticism was justified but the thing is, nobody bothered to tell me anything duringContinue reading “How I got fired and learned the importance of communication and play time”
How good monitoring saved our ass … again
You know how it goes – suddenly people complain your app does not work, your are getting plenty of timeouts or other errors in your error tracking tool, you find the backend app that is misbehaving and finally “fix” the problem by restarting it. Phew! But why? What caused the downtime? A glitch an anContinue reading “How good monitoring saved our ass … again”
Beware the performance cost of async_hooks (Node 8)
I was excited about async_hooks having finally landed in Node.js 8, as it would enable me to share important troubleshooting information with all code involved in handling a particular request. However it turned out to have terrible impact of our CPU usage (YMMV): This was quite extreme and is likely related to the way howContinue reading “Beware the performance cost of async_hooks (Node 8)”
Monitoring process memory/CPU usage with top and plotting it with gnuplot
If you want to monitor the memory and CPU usage of a particular Linux process for a few minutes, perhaps during a performance test, you can capture the data with top and plot them with gnuplot. Here is how:
Troubleshooting javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
Re-published from the Telia Tech Blog. The infamous Java exception javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure is hardly understandable to a mere mortal. What it wants to say is, most likely, something like this: Sorry, none of the cryptographic protocols/versions and cipher suites is accepted both by the JVM and the server. For instance the serverContinue reading “Troubleshooting javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure”
Why we love AWS Beanstalk but are leaving it anyway
Cross-posted from Telia’s Tech Blog. We have had our mission-critical webapp running on AWS Elastic Beanstalk for three years and have been extremely happy with it. However we have now outgrown it and move to a manually managed infrastructure and CodeDeploy. AWS Beanstalk provides you with lot of bang for the buck and enables youContinue reading “Why we love AWS Beanstalk but are leaving it anyway”
Pains with Terraform (perhaps use Sceptre next time?)
Cross-posted from Telia’s Tech Blog We use Amazon Web Services (AWS) heavily and are in the process of migrating towards infrastructure-as-code, i.e. creating a textual description of the desired infrastructure in a Domain-Specific Language and letting the tool create and update the infrastructure. We are lucky enough to have some of the leading Terraform expertsContinue reading “Pains with Terraform (perhaps use Sceptre next time?)”
How to patch Travis CI’s deployment tool for your needs
Travis CI is a pretty good software-as-a-service Continuous Integration server. It can deploy to many targets, including AWS BeanStalk, S3, and CodeDeploy. However it might happen that the deploy tool (dpl) has a missing feature or doesn’t do exactly what you need. Fortunately it is easy to fix and run a modified version of theContinue reading “How to patch Travis CI’s deployment tool for your needs”