{"id":988,"date":"2019-11-30T13:00:00","date_gmt":"2019-11-30T12:00:00","guid":{"rendered":"http:\/\/cmagazine.test\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/"},"modified":"2019-11-29T12:11:29","modified_gmt":"2019-11-29T11:11:29","slug":"ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/","title":{"rendered":"Ready, Steady, Crash! One engineer\u2019s journey into the world of load testing"},"content":{"rendered":"<p>\u201cWe are sorry. Our servers are under heavy load at present. Please try again in a few minutes.\u201d We have all seen messages like this when a service is struggling to cope with the load. But how can you test how well your website will cope under load? <strong>Katie Koschland<\/strong> of the FT had the answer in her talk at <strong>Codemotion Amsterdam 2019<\/strong>.<\/p>\n<p>Server overload is a nightmare for everyone. From banks to news sites and social media to eCommerce, when your servers can\u2019t cope with the offered load you are in trouble. Sadly, incidents like that are all too common. Sometimes, they can be caused by a virtual flash crowd, for instance on Amazon Prime Day. Other times, they may be caused by a network or hardware failure. For DevOps teams, the important thing is to know when might an overload happen and, when it does, will the system fail gracefully? This is where load testing comes in.<\/p>\n<h2>Load testing<\/h2>\n<p>Load testing is almost like destruct testing your website. It is used to answer two key questions:<\/p>\n<ul>\n<li>What is the maximum load my website can sustain before the performance starts to suffer?<\/li>\n<li>When my servers are overloaded, how does the system react? Does it fail gracefully or just fall over completely?<\/li>\n<\/ul>\n<p>Jad Meouchy defines load testing as:<\/p>\n<p><q>It is about simulating ordinary user activity and then applying stress until it reaches failure.<\/q><\/p>\n<p>So, how do you actually do load testing? Katie took us through her journey as she learned how to do load testing while on secondment to the BizOps team at the FT.<\/p>\n<h2>Choosing a Framework<\/h2>\n<p>The first thing you need to do is to choose a suitable load testing framework. Katie set herself six requirements for her choice of framework:<\/p>\n<ol>\n<li>As they were using Node.JS, the framework had to be available as an npm package.<\/li>\n<li>It needed to allow personalisation of the JS code.<\/li>\n<li>It had to be able to set the headers.<\/li>\n<li>Configuration should be easy (e.g. via YAML).<\/li>\n<li>Had to work with CI tools.<\/li>\n<li>Needed to provide detailed statistics.<\/li>\n<\/ol>\n<p>Using these criteria, Katie chose the Artillery framework. This allowed her to write simple code like the following to set the headers:<\/p>\n<p><script src=\"https:\/\/pastebin.com\/embed_js\/BDnGnzYR\"><\/script><\/p>\n<p>It can also easily handle multiple scenarios using YAML as follows:<\/p>\n<p><script src=\"https:\/\/pastebin.com\/embed_js\/Rz0Dd7ct\"><\/script><\/p>\n<h2>Specify the requests<\/h2>\n<p>Having chosen Artillery, Katie needed to decide what sort of requests to serve. The key thing was to choose requests that represent the sort of ordinary user journeys that your site will experience. As an example, she used the FT.com website. The typical user will go to the homepage. Then they skim through a few headlines before choosing a story. They click on the story and start to read through it. At the end, they decide they liked the story and so they click to share it via LinkedIn or Twitter.<\/p>\n<p>Next, you have to determine the shape of the load. This needs to reflect both the normal expected variations and the overload. If you have an existing system, you can predict this quite well by looking at your data. But before production, you have to guess. As an example, Katie gave us the figures from the FT website when they announced the <a href=\"https:\/\/www.ft.com\/content\/8f209dac-471f-11e9-b168-96a37d002cd3\">failure of Interserve<\/a>.<\/p>\n<p>Because the BizOps API was still under development, Katie chose to use four phases of traffic:<\/p>\n<ul>\n<li><b>Warm Up<\/b>: 60s with 10 virtual users arriving each second<\/li>\n<li><b>Ramp Up<\/b>: 120s with the number of users ramping up from 10-25 per second<\/li>\n<li><b>Cruise<\/b>: 1200s with 25 virtual users per second<\/li>\n<li><b>Crash<\/b>: 30s with 100 virtual users arriving each second<\/li>\n<\/ul>\n<p>This matches the typical pattern of activity on many websites.<\/p>\n<h2>Getting started<\/h2>\n<p>Having chosen a framework, defined some test cases and decided how to ramp up the traffic, now it\u2019s time to actually create the test. Start with the YAML configuration. The first part is the config. Here you choose things like the target of the tests, what plugins to use for metrics capture, etc. You also specify the testing phases.<\/p>\n<p><script src=\"https:\/\/pastebin.com\/embed_js\/xrGXKeLv\"><\/script><\/p>\n<p>Next, you have the actual scenario section. Here you specify what each fake user query will do. You can add weights to the different scenarios as well as specifying what operations will be done.<\/p>\n<p><script src=\"https:\/\/pastebin.com\/embed_js\/Dym7RNLk\"><\/script><\/p>\n<h2>Ready to go!<\/h2>\n<p>Now you are finally ready to start testing. This is as simple as typing:<\/p>\n<pre><code>$artillery run script.yaml<\/code><\/pre>\n<p>Artillery will now run the tests. Once it is done it will present you with a list of summary statistics.<\/p>\n<p><center><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1103 hoverZoomLink\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/image1-1-1024x553.png\" alt=\"\" width=\"1024\" height=\"553\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/image1-1-1024x553.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/image1-1-300x162.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/image1-1-768x415.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/image1-1.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/center>These include details of how many scenarios were run, the average request rate, statistics for the latency (in ms), a list of the scenario counts and a summary of the HTML codes seen.<\/p>\n<h2>Identifying the performance issue<\/h2>\n<p>As you can see in the above report, something odd was going on. There were 1,523 <b>500<\/b> errors (indicating an internal server error) and a whopping 3,928 <b>503<\/b> errors (where the server was inaccessible). Also, the median request latency had grown to over 30s. This shows there was a serious performance issue.<\/p>\n<p>So, next Katie had to try and track down what might have caused this issue. Looking in detail one query (relating to systems with bronze service tier) was hitting 100% processor load with just 10 requests per second. But was this an application issue, or something else? Was any one call causing this query to use so much CPU? To check this, Katie used <b>0x<\/b> to produce a flame graph which is designed to identify the hottest code paths.<\/p>\n<p><center><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1104 hoverZoomLink\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/image3-1024x530.png\" alt=\"\" width=\"1024\" height=\"530\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/image3-1024x530.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/image3-300x155.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/image3-768x397.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/image3.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/center>Unfortunately, no one code path was excessively hot.<\/p>\n<p>Next, she looked at the Neo4j database driver. She spotted that it was limited to a maximum of 100 connections, with any additional connection attempts timing out. She tried increasing the pool to 300 and reduced the timeout value to 10s. But this didn\u2019t solve the issues. Then Katie looked at parameterizing the Cypher query so that queries were being reused properly. This still didn\u2019t solve things. But maybe Cypher needed tuning? So Katie looked at the detailed performance of Cypher.<\/p>\n<p><center><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1106 hoverZoomLink\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/image2-1-1024x590.png\" alt=\"\" width=\"1024\" height=\"590\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/image2-1-1024x590.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/image2-1-300x173.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/image2-1-768x443.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/image2-1.png 1171w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/center>As can be seen, one query was getting over 14,000 hits, so Katie tuned things to reduce the number of hits without sacrificing performance. She managed to reduce the number of hits to 12,000, but there was still no performance improvement. By now Katie was beginning to wonder what could be going on!<\/p>\n<p>The final thought was that maybe this was down to resource starvation. So, Katie used the Node.JS calculator to work out what the ideal resource config should be. They were using shared resources with limited RAM. However, when they moved the system to dedicated resources with 4x as much RAM, the performance got WORSE!<\/p>\n<p>By now you\u2019ll all be dying to know what the fix was. Well, sadly, Katie never did manage to fix the problem. Overnight it simply went away! Suddenly, the systems all ran perfectly, coping well with the offered load.<\/p>\n<h2>So why use this example?<\/h2>\n<p>Katie told us she had shared this particular example because it had taught her a lot. She now has a personal toolbox of skills and knowledge related to load testing. Furthermore, she had been able to measure, assess and improve the performance of the application. In so doing, she had identified that there was a potential for future issues which the team can now keep an eye on.<\/p>\n<div id=\"hzImg\" style=\"border: 1px solid #ffffff; line-height: 0; overflow: hidden; padding: 2px; margin: 0px; position: absolute; z-index: 2147483647; border-radius: 3px; box-shadow: rgba(0, 0, 0, 0.33) 3px 3px 9px 5px; opacity: 1; top: 2998px; left: 0px; background-color: #ffffff; cursor: pointer; pointer-events: none; display: none;\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u201cWe are sorry. Our servers are under heavy load at present. Please try again in a few minutes.\u201d We have all seen messages like this when a service is struggling to cope with the load. But how can you test how well your website will cope under load? Katie Koschland of the FT had the&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/\">Read more<\/a><\/p>\n","protected":false},"author":7,"featured_media":950,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[36],"tags":[77],"collections":[],"class_list":{"0":"post-988","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-backend","8":"tag-codemotion-amsterdam","9":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Ready, Steady, Crash! One engineer\u2019s journey into the world of load testing - Codemotion Magazine<\/title>\n<meta name=\"description\" content=\"How can you test how well your website will cope under load? Katie Koschland of the FT had the answer in her talk at Codemotion Amsterdam 2019.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ready, Steady, Crash! One engineer\u2019s journey into the world of load testing\" \/>\n<meta property=\"og:description\" content=\"How can you test how well your website will cope under load? Katie Koschland of the FT had the answer in her talk at Codemotion Amsterdam 2019.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-11-30T12:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1013\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Toby Moncaster\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@tobym76\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Toby Moncaster\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/\"},\"author\":{\"name\":\"Toby Moncaster\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/8b9f025e7d76754fb3d4ffd428b0813b\"},\"headline\":\"Ready, Steady, Crash! One engineer\u2019s journey into the world of load testing\",\"datePublished\":\"2019-11-30T12:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/\"},\"wordCount\":1220,\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124.jpeg\",\"keywords\":[\"Codemotion Amsterdam\"],\"articleSection\":[\"Backend\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/\",\"name\":\"Ready, Steady, Crash! One engineer\u2019s journey into the world of load testing - Codemotion Magazine\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124.jpeg\",\"datePublished\":\"2019-11-30T12:00:00+00:00\",\"description\":\"How can you test how well your website will cope under load? Katie Koschland of the FT had the answer in her talk at Codemotion Amsterdam 2019.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/#primaryimage\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124.jpeg\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124.jpeg\",\"width\":1013,\"height\":675},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Backend\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/backend\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Ready, Steady, Crash! One engineer\u2019s journey into the world of load testing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Codemotion.Italy\/\",\"https:\/\/x.com\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/8b9f025e7d76754fb3d4ffd428b0813b\",\"name\":\"Toby Moncaster\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/126cc1a8360e8cfbfa77aefe9160c4cd916e20f2c3a849d91e1df00c48423ccc?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/126cc1a8360e8cfbfa77aefe9160c4cd916e20f2c3a849d91e1df00c48423ccc?s=96&d=mm&r=g\",\"caption\":\"Toby Moncaster\"},\"description\":\"I am an experienced freelance writer. I specialise in making complex topics accessible to wider audiences. My interests include TCP\/IP, data protection and AI. I currently work with B2B startups across the world. I hold 5 patents, edited 3 RFCs and received a PhD in computer science from the University of Cambridge.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/tobymoncaster\/\",\"https:\/\/x.com\/tobym76\"],\"url\":\"https:\/\/www.codemotion.com\/magazine\/author\/toby-moncaster\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ready, Steady, Crash! One engineer\u2019s journey into the world of load testing - Codemotion Magazine","description":"How can you test how well your website will cope under load? Katie Koschland of the FT had the answer in her talk at Codemotion Amsterdam 2019.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/","og_locale":"en_US","og_type":"article","og_title":"Ready, Steady, Crash! One engineer\u2019s journey into the world of load testing","og_description":"How can you test how well your website will cope under load? Katie Koschland of the FT had the answer in her talk at Codemotion Amsterdam 2019.","og_url":"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2019-11-30T12:00:00+00:00","og_image":[{"width":1013,"height":675,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124.jpeg","type":"image\/jpeg"}],"author":"Toby Moncaster","twitter_card":"summary_large_image","twitter_creator":"@tobym76","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Toby Moncaster","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/"},"author":{"name":"Toby Moncaster","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/8b9f025e7d76754fb3d4ffd428b0813b"},"headline":"Ready, Steady, Crash! One engineer\u2019s journey into the world of load testing","datePublished":"2019-11-30T12:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/"},"wordCount":1220,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124.jpeg","keywords":["Codemotion Amsterdam"],"articleSection":["Backend"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/","url":"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/","name":"Ready, Steady, Crash! One engineer\u2019s journey into the world of load testing - Codemotion Magazine","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124.jpeg","datePublished":"2019-11-30T12:00:00+00:00","description":"How can you test how well your website will cope under load? Katie Koschland of the FT had the answer in her talk at Codemotion Amsterdam 2019.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124.jpeg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124.jpeg","width":1013,"height":675},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/backend\/ready-steady-crash-one-engineers-journey-into-the-world-of-load-testing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Backend","item":"https:\/\/www.codemotion.com\/magazine\/backend\/"},{"@type":"ListItem","position":3,"name":"Ready, Steady, Crash! One engineer\u2019s journey into the world of load testing"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/8b9f025e7d76754fb3d4ffd428b0813b","name":"Toby Moncaster","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/126cc1a8360e8cfbfa77aefe9160c4cd916e20f2c3a849d91e1df00c48423ccc?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/126cc1a8360e8cfbfa77aefe9160c4cd916e20f2c3a849d91e1df00c48423ccc?s=96&d=mm&r=g","caption":"Toby Moncaster"},"description":"I am an experienced freelance writer. I specialise in making complex topics accessible to wider audiences. My interests include TCP\/IP, data protection and AI. I currently work with B2B startups across the world. I hold 5 patents, edited 3 RFCs and received a PhD in computer science from the University of Cambridge.","sameAs":["https:\/\/www.linkedin.com\/in\/tobymoncaster\/","https:\/\/x.com\/tobym76"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/toby-moncaster\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124-600x400.jpeg","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124-600x600.jpeg","author_info":{"display_name":"Toby Moncaster","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/toby-moncaster\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124.jpeg",1013,675,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124-150x150.jpeg",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124-300x200.jpeg",300,200,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124-768x512.jpeg",768,512,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124.jpeg",1013,675,false],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124.jpeg",1013,675,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124.jpeg",1013,675,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124.jpeg",100,67,false],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124-180x128.jpeg",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124-896x504.jpeg",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124-400x225.jpeg",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124-600x400.jpeg",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/SPARK011_20190402_0946_CODEMOTION_6124-600x600.jpeg",600,600,true]},"uagb_author_info":{"display_name":"Toby Moncaster","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/toby-moncaster\/"},"uagb_comment_info":0,"uagb_excerpt":"\u201cWe are sorry. Our servers are under heavy load at present. Please try again in a few minutes.\u201d We have all seen messages like this when a service is struggling to cope with the load. But how can you test how well your website will cope under load? Katie Koschland of the FT had the&#8230;&hellip;","lang":"en","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/988","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=988"}],"version-history":[{"count":2,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/988\/revisions"}],"predecessor-version":[{"id":1632,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/988\/revisions\/1632"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/950"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=988"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=988"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=988"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}