{"id":1821,"date":"2014-12-16T17:45:31","date_gmt":"2014-12-16T17:45:30","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1821"},"modified":"2023-06-28T01:24:29","modified_gmt":"2023-06-28T08:24:29","slug":"using-nginx-php-fpm-couchbase-how-and-why","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/","title":{"rendered":"Using nginx &amp; PHP-FPM with Couchbase \u2013 The How, and the Why"},"content":{"rendered":"<p>Before we get started, I\u2019d like to point you a blog by my colleague Michael Nitschinger, in which you can learn about the best way to set up your basic PHP and Couchbase Environment, if not using nginx &amp; PHP-FPM:\u00a0<br \/><a href=\"https:\/\/nitschinger.at\/Getting-Started-with-Couchbase-and-PHP\" target=\"_blank\" rel=\"noopener\">https:\/\/nitschinger.at\/Getting-Started-with-Couchbase-and-PHP<\/a><\/p>\n<p>Recently, we\u2019ve been seeing many people using the Couchbase PHP SDK alongside nginx and php-FPM.\u00a0\u00a0 There has, however, been some recurring issues amongst these users, that I aim to troubleshoot in this article!<\/p>\n<p>The issue you may be experiencing is that you are not able to control the number of connections made, through FPM to Couchbase; You are at the mercy of the number of PHP child processes. The fact is; in FPM you do not need as many connections to Couchbase as you have processes.<\/p>\n<p>You will notice a huge performance impact.\u00a0 Let\u2019s say we have our FPM max_children set to 300; under load, you&#039;ll have 300 PHP processes running, and each one of those may have 4 persistent CouchbaseClient instances. Across 16 machines, this is almost 20,000 client objects. These multiple parallel FPM processes cannot share 1 Couchbase connection, and this is our main issue.\u00a0 Our other issue is that once 300 processes are reached, these connections will be torn down and restarted. This is expensive and something we should wish to avoid.<\/p>\n<p>Let&#039;s step back a bit and get back to the root of the issue. Our Couchbase Smart Clients keep a connection open to the cluster REST manager; to be notified about changes in the topology.\u00a0 This works fine for most languages in which we would typically use a limited number of processes, and perhaps just 2-3 objects in each of them; so that each server would probably just have 5 such connections to the cluster.\u00a0\u00a0 However, in a PHP deployment with FPM &#8211; people typically spin up around 2000 of such processes and if you just use _ONE_ Couchbase object in each of them, each server will then occupy 2k of connections to our REST server.<\/p>\n<p>There are a couple of ways of solving these issues, though.\u00a0 One way, is by using the <em><strong>Couchbase Configuration Cache<\/strong><\/em>\u00a0 (Available in the PHP SDK v1.1.5 +). \u00a0When using the config_cache, creating a new client instance first looks for a cached version of the cluster config; if it&#039;s found, then it doesn&#039;t query the node at all for the config, it just uses the cached value.\u00a0 If it can&#039;t connect via a cached config, only then will it open a connection (on port 8091, speaking HTTP) to one of the Couchbase nodes you pass to the constructor in your code.<\/p>\n<p>The config_cache is an optional path to a directory where the library may store files containing the cluster topology. (Used to cache the configuration instead of connecting to the REST server each time to download it.) \u00a0You can enable the connection cache by putting the following line into your <em><strong>Couchbase.ini<\/strong><\/em> file:<\/p>\n<p><span class=\"geshifilter\"><code class=\"php geshifilter-php\">couchbase<span style=\"color: #339933\">.<\/span>config_cache <span style=\"color: #339933\">=<\/span> <span style=\"color: #0000ff\">\"\/PATH\/TO\/SOME\/DIRECTORY\"<\/span><\/code><\/span><\/p>\n<p>You can read more about the Config Cache here: <a href=\"https:\/\/www.couchbase.com\/wiki\/display\/couchbase\/libcouchbase+configuration+cache\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.couchbase.com\/wiki\/display\/couchbase\/libcouchbase+configuration+cache<\/a><\/p>\n<p>By utilising the Config_Cache, we can remove roughly \u00be of the connections that would have been made, saving resources, and partly fixing the issue.\u00a0 The persistent connections are shared more, as well, so that can provide some more efficiency.\u00a0 We can also change the FPM Config to not run so many parallel processes by reducing the\u00a0 max_children and increasing the max_requests.\u00a0 I suggest we try tweaking the pm.max_requests value from 300 up to 3000 or 5000 (depending on what kind of memory bloat you see in your PHP processes over time), which will also reduce the number of times these client objects have to be recreated. \u00a0We can also reduce the number of pm.max_children down to 100 or so.<\/p>\n<p>Have a look at my sample FPM.conf file for reference: <a href=\"https:\/\/gist.github.com\/rbin\/82e47f7f75f2072f02fd\" target=\"_blank\" rel=\"noopener\">https:\/\/gist.github.com\/rbin\/82e47f7f75f2072f02fd<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Before we get started, I\u2019d like to point you a blog by my colleague Michael Nitschinger, in which you can learn about the best way to set up your basic PHP and Couchbase Environment, if not using nginx &amp; PHP-FPM:\u00a0https:\/\/nitschinger.at\/Getting-Started-with-Couchbase-and-PHP [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8968],"class_list":["post-1821","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Using nginx &amp; PHP-FPM with Couchbase \u2013 The How, and the Why - The Couchbase Blog<\/title>\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.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using nginx &amp; PHP-FPM with Couchbase \u2013 The How, and the Why\" \/>\n<meta property=\"og:description\" content=\"Before we get started, I\u2019d like to point you a blog by my colleague Michael Nitschinger, in which you can learn about the best way to set up your basic PHP and Couchbase Environment, if not using nginx &amp; PHP-FPM:\u00a0https:\/\/nitschinger.at\/Getting-Started-with-Couchbase-and-PHP [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-16T17:45:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-28T08:24:29+00:00\" \/>\n<meta name=\"author\" content=\"The Couchbase Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"The Couchbase Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-nginx-php-fpm-couchbase-how-and-why\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-nginx-php-fpm-couchbase-how-and-why\\\/\"},\"author\":{\"name\":\"The Couchbase Team\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/764f4a6771ee19bc7af70b70a326fb93\"},\"headline\":\"Using nginx &amp; PHP-FPM with Couchbase \u2013 The How, and the Why\",\"datePublished\":\"2014-12-16T17:45:30+00:00\",\"dateModified\":\"2023-06-28T08:24:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-nginx-php-fpm-couchbase-how-and-why\\\/\"},\"wordCount\":660,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-nginx-php-fpm-couchbase-how-and-why\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-nginx-php-fpm-couchbase-how-and-why\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-nginx-php-fpm-couchbase-how-and-why\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-nginx-php-fpm-couchbase-how-and-why\\\/\",\"name\":\"Using nginx &amp; PHP-FPM with Couchbase \u2013 The How, and the Why - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-nginx-php-fpm-couchbase-how-and-why\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-nginx-php-fpm-couchbase-how-and-why\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T17:45:30+00:00\",\"dateModified\":\"2023-06-28T08:24:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-nginx-php-fpm-couchbase-how-and-why\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-nginx-php-fpm-couchbase-how-and-why\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-nginx-php-fpm-couchbase-how-and-why\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-nginx-php-fpm-couchbase-how-and-why\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using nginx &amp; PHP-FPM with Couchbase \u2013 The How, and the Why\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/admin-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/764f4a6771ee19bc7af70b70a326fb93\",\"name\":\"The Couchbase Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g7befc37d02226b59499817eafdec60c3\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g\",\"caption\":\"The Couchbase Team\"},\"description\":\"Jennifer Garcia is a Senior Web Manager at Couchbase Inc. As the website manager, Jennifer has overall responsibility for the website properties including design, implementation, content, and performance.\",\"sameAs\":[\"https:\\\/\\\/www.couchbase.com\"],\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/author\\\/jennifer-garcia\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using nginx &amp; PHP-FPM with Couchbase \u2013 The How, and the Why - The Couchbase Blog","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.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/","og_locale":"en_US","og_type":"article","og_title":"Using nginx &amp; PHP-FPM with Couchbase \u2013 The How, and the Why","og_description":"Before we get started, I\u2019d like to point you a blog by my colleague Michael Nitschinger, in which you can learn about the best way to set up your basic PHP and Couchbase Environment, if not using nginx &amp; PHP-FPM:\u00a0https:\/\/nitschinger.at\/Getting-Started-with-Couchbase-and-PHP [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-16T17:45:30+00:00","article_modified_time":"2023-06-28T08:24:29+00:00","author":"The Couchbase Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"The Couchbase Team","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/"},"author":{"name":"The Couchbase Team","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/764f4a6771ee19bc7af70b70a326fb93"},"headline":"Using nginx &amp; PHP-FPM with Couchbase \u2013 The How, and the Why","datePublished":"2014-12-16T17:45:30+00:00","dateModified":"2023-06-28T08:24:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/"},"wordCount":660,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/","url":"https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/","name":"Using nginx &amp; PHP-FPM with Couchbase \u2013 The How, and the Why - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T17:45:30+00:00","dateModified":"2023-06-28T08:24:29+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/using-nginx-php-fpm-couchbase-how-and-why\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using nginx &amp; PHP-FPM with Couchbase \u2013 The How, and the Why"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/764f4a6771ee19bc7af70b70a326fb93","name":"The Couchbase Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g7befc37d02226b59499817eafdec60c3","url":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g","caption":"The Couchbase Team"},"description":"Jennifer Garcia is a Senior Web Manager at Couchbase Inc. As the website manager, Jennifer has overall responsibility for the website properties including design, implementation, content, and performance.","sameAs":["https:\/\/www.couchbase.com"],"url":"https:\/\/www.couchbase.com\/blog\/author\/jennifer-garcia\/"}]}},"acf":[],"authors":[{"term_id":8968,"user_id":2,"is_guest":0,"slug":"jennifer-garcia","display_name":"The Couchbase Team","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/1821","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=1821"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/1821\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=1821"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=1821"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=1821"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=1821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}