{"id":1334,"date":"2023-10-16T14:46:12","date_gmt":"2023-10-16T13:46:12","guid":{"rendered":"https:\/\/www.muratyaman.co.uk\/blog\/?p=1334"},"modified":"2023-10-16T14:46:38","modified_gmt":"2023-10-16T13:46:38","slug":"avoid-oom-crashes-on-node-js-apps","status":"publish","type":"post","link":"https:\/\/www.muratyaman.co.uk\/blog\/index.php\/2023\/10\/avoid-oom-crashes-on-node-js-apps\/","title":{"rendered":"Avoid OOM crashes on Node.js apps"},"content":{"rendered":"<p>Here is a sample code repository implementing some guards against out-of-memory errors \/ crashes on components using Node.js. It is using health-check mechanism that could be taken advantage by load balancer. Also, it has a request rejector and counter. <\/p>\n<p>What do you think? What do you use\/do? Or do you just let your processes crash?! <\/p>\n<p>Note: auto-scaling up based on average CPU usage is not sufficient and it is very slow; load balancing based on round-robin or connection count is not great either.<\/p>\n<p>Ref: <a href=\"https:\/\/github.com\/muratyaman\/node-express-health-avoid-oom\">https:\/\/github.com\/muratyaman\/node-express-health-avoid-oom<\/a><\/p>\n<p>Image ref: <a href=\"https:\/\/unsplash.com\/photos\/rGVxtVVtv7E\">https:\/\/unsplash.com\/photos\/rGVxtVVtv7E<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Do you protect your apps against out-of-memory crashes?<\/p>\n","protected":false},"author":2,"featured_media":1335,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[93,166],"class_list":["post-1334","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology","tag-javascript","tag-node"],"_links":{"self":[{"href":"https:\/\/www.muratyaman.co.uk\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1334","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.muratyaman.co.uk\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.muratyaman.co.uk\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.muratyaman.co.uk\/blog\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.muratyaman.co.uk\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=1334"}],"version-history":[{"count":2,"href":"https:\/\/www.muratyaman.co.uk\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1334\/revisions"}],"predecessor-version":[{"id":1337,"href":"https:\/\/www.muratyaman.co.uk\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1334\/revisions\/1337"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.muratyaman.co.uk\/blog\/index.php\/wp-json\/wp\/v2\/media\/1335"}],"wp:attachment":[{"href":"https:\/\/www.muratyaman.co.uk\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=1334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.muratyaman.co.uk\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=1334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.muratyaman.co.uk\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=1334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}