SLOW_GET_HELPER Error on Ghost 3.36.0

Hello, Am using Ghost 3.36.0 on my blog https://cloud-nodelab.com/ and I keep on getting a SLOW_GET_HELPER Error which in the end crashes my site and makes it inaccessible. Most Times I have to restart my ghost instance for it to work again but the error keeps coming back after browsing 1-5 posts. Below is the error shown.

  • How was Ghost installed and configured?
    Using Ghost CLI…I use Fastcomet as my hosting provider.
  • What Node version, database, OS & browser are you using?
    Node Version is v10.15.0, SQLite for Database, Chrome & Microsoft Edge for browsers.

{“name”:“Log”,“hostname”:“**”,“pid”:4154830,“level”:40,“err”:{“id”:“30efb170-1d31-11eb-ad1e-59ffa900996d”,“domain”:“https://cloud-nodelab.com”,“code”:“SLOW_GET_HELPER”,“name”:“HelperWarning”,“statusCode”:500,“level”:“normal”,“message”:“{{#get}} helper took 220ms to complete”,“stack”:“HelperWarning: {{#get}} helper took 220ms to complete\n at HelperWarning.GhostError (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/@tryghost/errors/lib/errors.js:10:26)\n at new HelperWarning (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/@tryghost/errors/lib/errors.js:66:20)\n at /home/cloudnod/cloud-nodelab/versions/3.36.0/core/frontend/helpers/get.js:171:31\n at PassThroughHandlerContext.finallyHandler (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/finally.js:56:23)\n at PassThroughHandlerContext.tryCatcher (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/util.js:16:23)\n at Promise._settlePromiseFromHandler (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:547:31)\n at Promise._settlePromise (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:604:18)\n at Promise._settlePromise0 (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:649:10)\n at Promise._settlePromises (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:729:18)\n at _drainQueueStep (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:93:12)\n at _drainQueue (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:86:9)\n at Async._drainQueues (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:102:5)\n at Immediate.Async.drainQueues [as _onImmediate] (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:15:14)\n at runCallback (timers.js:705:18)\n at tryOnImmediate (timers.js:676:5)\n at processImmediate (timers.js:658:5)\n at process.topLevelDomainCallback (domain.js:120:23)”,“hideStack”:true,“errorDetails”:“{"api":"v3.postsPublic.browse","apiOptions":{"include":"tags","limit":"3"},"returnedRows":3}”},“msg”:“{{#get}} helper took 220ms to complete”,“time”:“2020-11-02T17:31:07.656Z”,“v”:0}

In addition, this is the other error that I get in my development.error.log file for Ghost.

{“name”:“Log”,“hostname”:“**”,“pid”:4154830,“level”:50,“err”:{“id”:“2e5ecd60-1d31-11eb-ad1e-59ffa900996d”,“domain”:“https://cloud-nodelab.com”,“code”:null,“name”:“BadRequestError”,“statusCode”:400,“level”:“normal”,“message”:“Error parsing filter”,“stack”:“BadRequestError: Error parsing filter\n at new BadRequestError (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/ghost-ignition/lib/errors/index.js:113:23)\n at Child.applyDefaultAndCustomFilters (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/models/plugins/filter.js:104:23)\n at Function.getFilteredCollection (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/models/base/index.js:850:28)\n at Function.findPage (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/models/base/index.js:926:37)\n at Object.query (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/api/canary/posts-public.js:33:32)\n at Object.query (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/api/shared/pipeline.js:156:24)\n at Promise.resolve.then.then.then.then (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/api/shared/pipeline.js:243:35)\n at tryCatcher (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/util.js:16:23)\n at Promise._settlePromiseFromHandler (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:547:31)\n at Promise._settlePromise (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:604:18)\n at Promise._settlePromise0 (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:649:10)\n at Promise._settlePromises (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:729:18)\n at _drainQueueStep (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:93:12)\n at _drainQueue (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:86:9)\n at Async._drainQueues (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:102:5)\n at Immediate.Async.drainQueues [as _onImmediate] (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:15:14)\n at runCallback (timers.js:705:18)\n at tryOnImmediate (timers.js:676:5)\n at processImmediate (timers.js:658:5)\n at process.topLevelDomainCallback (domain.js:120:23)\n\nError: Query Error: unexpected character in filter at char 7\n(tags:+id:-)+type:post\n-------^\nExpecting ‘NULL’, ‘TRUE’, ‘FALSE’, ‘NUMBER’, ‘LITERAL’, ‘STRING’, got ‘RBRACKET’\n at Parser.parser.parseError (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/@nexes/nql-lang/dist/parser.js:328:12)\n at Parser.parse (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/@nexes/nql-lang/dist/parser.js:245:22)\n at Object.exports.parse (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/@nexes/nql-lang/lib/nql.js:18:44)\n at Object.api.parse (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/@nexes/nql/lib/nql.js:15:31)\n at Object.api.querySQL.qb [as querySQL] (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/@nexes/nql/lib/nql.js:49:44)\n at Builder.query (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/models/plugins/filter.js:101:24)\n at Object.query (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bookshelf/lib/helpers.js:57:14)\n at Child.query (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bookshelf/lib/model.js:1256:22)\n at Child.applyDefaultAndCustomFilters (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/models/plugins/filter.js:94:22)\n at Function.getFilteredCollection (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/models/base/index.js:850:28)\n at Function.findPage (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/models/base/index.js:926:37)\n at Object.query (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/api/canary/posts-public.js:33:32)\n at Object.query (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/api/shared/pipeline.js:156:24)\n at Promise.resolve.then.then.then.then (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/api/shared/pipeline.js:243:35)\n at tryCatcher (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/util.js:16:23)\n at Promise._settlePromiseFromHandler (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:547:31)\n at Promise._settlePromise (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:604:18)\n at Promise._settlePromise0 (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:649:10)\n at Promise._settlePromises (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:729:18)\n at _drainQueueStep (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:93:12)\n at _drainQueue (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:86:9)\n at Async._drainQueues (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:102:5)”},“msg”:“Error parsing filter”,“time”:“2020-11-02T17:31:03.353Z”,“v”:0}

The SLOW_GET_HELPER warning shouldn’t be crashing your site, but if you want to try and isolate the issue, you can disable the warning by adding this to the “logging” section of your config:

        "slowHelper": {
            "level": "warn",
            "threshold": 2000
        }

Note that I bumped the threshold from 200ms to 2000ms (2s)

Note that this is just a warning and highlighting that your use of the get helper might mess with page load times a bit


The error in your development log is from an API request, and should also not cause issues - I ran your log through bunyan (the logger used by ghost) and it’s showing that the request failed successfully - returned 400 and provided the context as to why the filter is invalid. Pretty log:

[2020-11-02T17:31:03.353Z] ERROR: Log/4154830 on **: Error parsing filter (err.id=2e5ecd60-1d31-11eb-ad1e-59ffa900996d, err.domain=https://cloud-nodelab.com, err.code=null, err.statusCode=400, err.level=normal)
    BadRequestError: Error parsing filter
        at new BadRequestError (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/ghost-ignition/lib/errors/index.js:113:23)
        at Child.applyDefaultAndCustomFilters (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/models/plugins/filter.js:104:23)
        at Function.getFilteredCollection (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/models/base/index.js:850:28)
        at Function.findPage (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/models/base/index.js:926:37)
        at Object.query (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/api/canary/posts-public.js:33:32)
        at Object.query (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/api/shared/pipeline.js:156:24)
        at Promise.resolve.then.then.then.then (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/api/shared/pipeline.js:243:35)
        at tryCatcher (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/util.js:16:23)
        at Promise._settlePromiseFromHandler (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:547:31)
        at Promise._settlePromise (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:604:18)
        at Promise._settlePromise0 (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:649:10)
        at Promise._settlePromises (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:729:18)
        at _drainQueueStep (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:93:12)
        at _drainQueue (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:86:9)
        at Async._drainQueues (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:102:5)
        at Immediate.Async.drainQueues [as _onImmediate] (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:15:14)
        at runCallback (timers.js:705:18)
        at tryOnImmediate (timers.js:676:5)
        at processImmediate (timers.js:658:5)
        at process.topLevelDomainCallback (domain.js:120:23)

    Error: Query Error: unexpected character in filter at char 7
    (tags:[]+id:-)+type:post
    -------^
    Expecting 'NULL', 'TRUE', 'FALSE', 'NUMBER', 'LITERAL', 'STRING', got 'RBRACKET'
        at Parser.parser.parseError (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/@nexes/nql-lang/dist/parser.js:328:12)
        at Parser.parse (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/@nexes/nql-lang/dist/parser.js:245:22)
        at Object.exports.parse (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/@nexes/nql-lang/lib/nql.js:18:44)
        at Object.api.parse (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/@nexes/nql/lib/nql.js:15:31)
        at Object.api.querySQL.qb [as querySQL] (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/@nexes/nql/lib/nql.js:49:44)
        at Builder.query (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/models/plugins/filter.js:101:24)
        at Object.query (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bookshelf/lib/helpers.js:57:14)
        at Child.query (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bookshelf/lib/model.js:1256:22)
        at Child.applyDefaultAndCustomFilters (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/models/plugins/filter.js:94:22)
        at Function.getFilteredCollection (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/models/base/index.js:850:28)
        at Function.findPage (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/models/base/index.js:926:37)
        at Object.query (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/api/canary/posts-public.js:33:32)
        at Object.query (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/api/shared/pipeline.js:156:24)
        at Promise.resolve.then.then.then.then (/home/cloudnod/cloud-nodelab/versions/3.36.0/core/server/api/shared/pipeline.js:243:35)
        at tryCatcher (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/util.js:16:23)
        at Promise._settlePromiseFromHandler (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:547:31)
        at Promise._settlePromise (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:604:18)
        at Promise._settlePromise0 (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:649:10)
        at Promise._settlePromises (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/promise.js:729:18)
        at _drainQueueStep (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:93:12)
        at _drainQueue (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:86:9)
        at Async._drainQueues (/home/cloudnod/cloud-nodelab/versions/3.36.0/node_modules/bluebird/js/release/async.js:102:5)
1 Like

I took some time and created a new ghost setup. After the default installation in a new folder, I could successfully browse all the default ghost site content without my website crashing. And when I imported all my content from backup (posts only) it came back with both posts and some images (I didn’t restore my any images to the images folder) and still I could browse my site successfully without error. However when I edited one post with new fresh images My site crashed again below is the error log.

{“name”:“Log”,“hostname”:“in5.fcomet.com”,“pid”:7465,“level”:50,“req”:{“meta”:{“requestId”:“4405300b-40fa-4625-b964-1ca358ca5b7b”,“userId”:null},“url”:“/content/images/size/w1000/2020/11/vcvc-1.png”,“method”:“GET”,“originalUrl”:“/content/images/size/w1000/2020/11/vcvc-1.png”,“params”:{},“headers”:{“host”:“127.0.0.1:2368”,“user-agent”:“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36”,“accept”:“image/avif,image/webp,image/apng,image/,/*;q=0.8”,“sec-fetch-site”:“same-origin”,“sec-fetch-mode”:“no-cors”,“sec-fetch-dest”:“image”,“referer”:“https://cloud-nodelab.com/how-to-rdp-to-a-linux-virtual-machine-in-azure-2/",“accept-encoding”:"gzip, deflate, br”,“accept-language”:“en-US,en;q=0.9”,“cookie”:“REDACTED”,“x-https”:“1”,“x-forwarded-proto”:“https”,“x-forwarded-for”:“154.226.204.254”,“x-forwarded-host”:“(sitelink)”,“x-forwarded-server”:“(sitelink)”,“connection”:“close”},“query”:{}},“res”:{“_headers”:{“x-powered-by”:“Express”,“cache-control”:“no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0”,“content-type”:“text/html; charset=utf-8”,“etag”:“W/"5de-kcurusdtEfydOieXWKgigzrxUlA"”,“vary”:“Accept-Encoding”,“content-encoding”:“gzip”},“statusCode”:500,“responseTime”:“224ms”},“err”:{“id”:“401ed3f0-1eb8-11eb-a814-65438b565c20”,“domain”:“https://cloud-nodelab.com/",“code”:“IMAGE_PROCESSING”,“name”:“InternalServerError”,“statusCode”:500,“level”:“critical”,“message”:"Unable to manipulate image.”,“stack”:“InternalServerError: Unable to manipulate image.\n at new InternalServerError (/home/cloudnod/test-blog/versions/3.37.1/node_modules/@tryghost/errors/node_modules/ghost-ignition/lib/errors/index.js:90:23)\n at fn.catch (/home/cloudnod/test-blog/versions/3.37.1/node_modules/@tryghost/image-transform/lib/transform.js:88:15)\n at tryCatcher (/home/cloudnod/test-blog/versions/3.37.1/node_modules/bluebird/js/release/util.js:16:23)\n at Promise._settlePromiseFromHandler (/home/cloudnod/test-blog/versions/3.37.1/node_modules/bluebird/js/release/promise.js:547:31)\n at Promise._settlePromise (/home/cloudnod/test-blog/versions/3.37.1/node_modules/bluebird/js/release/promise.js:604:18)\n at Promise._settlePromise0 (/home/cloudnod/test-blog/versions/3.37.1/node_modules/bluebird/js/release/promise.js:649:10)\n at Promise._settlePromises (/home/cloudnod/test-blog/versions/3.37.1/node_modules/bluebird/js/release/promise.js:725:18)\n at _drainQueueStep (/home/cloudnod/test-blog/versions/3.37.1/node_modules/bluebird/js/release/async.js:93:12)\n at _drainQueue (/home/cloudnod/test-blog/versions/3.37.1/node_modules/bluebird/js/release/async.js:86:9)\n at Async._drainQueues (/home/cloudnod/test-blog/versions/3.37.1/node_modules/bluebird/js/release/async.js:102:5)\n at Immediate.Async.drainQueues [as _onImmediate] (/home/cloudnod/test-blog/versions/3.37.1/node_modules/bluebird/js/release/async.js:15:14)\n at runCallback (timers.js:705:18)\n at tryOnImmediate (timers.js:676:5)\n at processImmediate (timers.js:658:5)\n at process.topLevelDomainCallback (domain.js:120:23)\n\nError: vips2png: unable to write to target\n”},“msg”:“Unable to manipulate image.”,“time”:“2020-11-04T16:10:26.372Z”,“v”:0}

I’ve just changed my host from Fastcomet and put my blog up on an Azure App service. I receive the same error as above but the blog runs perfectly fine even when I switch between multiple posts. Is there a setting in the webserver (Apache2) that could possibly be a wrong configuration at my other host @fastcomet. Any ideas are welcome?

That suggests it’s a file permissions problem with your images directory