Could not load content - GET_HELPER errors

I’m testing Ghost for a large content site with 56,000 posts and will eventually grow to 100,000. All posts are text only and not using any images. I have tried different themes but the ‘featured_posts’ always break every theme. When I disable featured_posts, everything works great, performance is snappy

Error Code: ABORTED_GET_HELPER

Error Code: SLOW_GET_HELPER

{{#get}} took longer than 5000ms and was aborted

Server Specs:

AMD Threadripper 32 Core with 128GB RAM, Gen 4 PCIE NVME
Windows 11 - Docker WSL 2
Cloudflare with local NPM proxy
Ghost CMS - 5.119.2
MySQL - 8.0.42 (database is used for Ghost CMS only)

Is Ghost CMS not designed to handle large content sites? Is there anything I can do at the database or config level to improve performance? Based on server specs, it should not take 5 seconds to fetch a featured post.

@Dmitry_Spodarets @jannis @Cathy_Sarisky - Any suggestions?

Pretty sure the issue is not getting one featured post, but finding the featured posts in the ocean of posts.

If you run your MySQL database inside WSL (or worse: on Docker inside WSL), I’d bet WSL is the issue.

I have a 64GB RAM, Intel Core Ultra 9 185H with an NVMe drive here, and could not get decent performance with a database setup there (it was non-Ghost work, but ran a MySQL nonetheless).

WSL is basically a virtualisation. Docker is another virtualisation layer. So, either way you twist it, you will not get near-native performance, if you run this setup.

I’d try running the same workload on a native Ubuntu/Debian if you can. I’d bet that the performance is significantly better and you might get your result in under 5 seconds (for Ghost not to abort).

1 Like

Thank you for your response. I made a rather silly mistake with MySQL config - The default “innodb-buffer-pool-size” with default docker image was 128MB :frowning: I changed it to 10GB and now have 99% buffer free and the site has excellent performance!

It maybe an overkill but I added the following to my docker-compose file -

  --innodb-buffer-pool-size=10G
  --innodb-buffer-pool-instances=8
  --innodb-log-file-size=2G
  --innodb-log-buffer-size=256M
  --max-connections=500
  --tmp-table-size=512M
  --max-heap-table-size=512M
  --innodb-io-capacity=4000
  --innodb-io-capacity-max=10000
  --innodb-flush-log-at-trx-commit=2
  --sort-buffer-size=16M
  --join-buffer-size=16M
  --read-buffer-size=8M
1 Like