{"id":534,"date":"2022-09-27T23:18:39","date_gmt":"2022-09-27T23:18:39","guid":{"rendered":"https:\/\/blog.get-map.org\/?p=534"},"modified":"2022-09-27T23:18:39","modified_gmt":"2022-09-27T23:18:39","slug":"upcoming-mutiple-render-queues","status":"publish","type":"post","link":"https:\/\/blog.get-map.org\/index.php\/2022\/09\/27\/upcoming-mutiple-render-queues\/","title":{"rendered":"Upcoming: mutiple render queues"},"content":{"rendered":"<p><a name=\"preamble\"><\/a> <\/p>\n<p>I&#8217;m currently testing an implementation of multiple render queues, to be rolled out to the public production server, soon.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.get-map.org\/wp-content\/uploads\/2022\/09\/queue-status-1.png\" style=\"border-width: 0; vertical-align: text-bottom;\" alt=\"align=right\"><\/p>\n<p><!--more--><\/p>\n<p>So far all render requests were processed by a single render service process only, leading to all requests being processed in a serialized first-come-first-serve way.<\/p>\n<p>This lead to long running requests, like especially the multi page renders, starving the requests that came in after them. Also with the render API probably getting to see quite a few more requests in the future these could start to compete with regular user requests, and API clients may file multiple request within a short time span.<\/p>\n<p>By having multiple render queues served by different render service processes part of this can be handled in a more graceful way, and at the same time increase total render throughput by having more than just a single render process on a machine with many CPU cores.<\/p>\n<p>For a start there will be three different queues:<\/p>\n<dl>\n<dt> default <\/dt>\n<dd> this is the classic queue for interactive requests <\/dd>\n<dt> multipage <\/dt>\n<dd> interactive requests for multi page map booklets go here as they usually take longer to render <\/dd>\n<dt> api <\/dt>\n<dd> all requests coming in via the API will end up here so that they do not starve regular requests by web UI users <\/dd>\n<\/dl>\n<p>So far testing went well, so if nothing unexpected pops up in the last minute I will roll out the changes to the public server on Friday.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m currently testing an implementation of multiple render queues, to be rolled out to the public production server, soon.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/posts\/534"}],"collection":[{"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/comments?post=534"}],"version-history":[{"count":2,"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/posts\/534\/revisions"}],"predecessor-version":[{"id":552,"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/posts\/534\/revisions\/552"}],"wp:attachment":[{"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/media?parent=534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/categories?post=534"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/tags?post=534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}