Question

Time To First Byte (TTFB) is unstable

Hello!

I’ve deployed my site on a droplet.

All seems fine, I have TTFB ~80ms, which is great for me.

I use caching with simple “file” driver, so cache data is stored in the files on FS.

I’ve noticed that with time (probably when there is no FS activity, about an hour maybe), TTFB goes down to ~500ms (on the same page, with the same cache).

If I flush all the application cache, TTFB goes back to ~80ms.

Is it the normal behavior? Should I use Redis for cache?

Thank you!


Submit an answer

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Want to learn more? Join the DigitalOcean Community!

Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in Q&A, subscribe to topics of interest, and get courses and tools that will help you grow as a developer and scale your project or business.

I can understand that VMs share disk IOPS, but I don’t understand why flushing of the file cache helps immediately.

Perhaps the disk is slow hence it’s faster when the stack doesn’t need to seek the files/objects off the disk (this is what happens when you flush it). Maybe run a non-aggressive benchmark against the disk to see if there are any irregularities.

Are you connecting to Redis via TCP or a socket? Try connecting to it via socket to see if that makes a difference.

Cheers

I’ve noticed that with time (probably when there is no FS activity, about an hour maybe), TTFB goes down to ~500ms (on the same page, with the same cache).

Do you mean it goes down to 50ms? Because 500ms is much higher than the TTFB you reported of 80ms with the same cache. Memory will definitely give you deterministic caching more so than “file” caching. So yes, Redis and/or Varnish will help you achieve that. The reason you can never guarantee a TTFB when caching on disk has to do with the fact that all VMs on a server share disk IOPS fairly. So someone else on the node could be serviced before you (or misbehaving). Memory on the other hand is guaranteed.

Cheers

@unixynet I switched to Redis yesterday.

And today I’ve seen ~500ms with Redis…

So, I’ve debugged my code carefully and found a problem in it.

Thank you very much for your help and useful advice!