Slow, basic, Plone 5.2.6 site with Python 3.6,

I have a simple project (that got delayed due to Covid, so) it runs on Python3.6.2.

I set up a 'test site' (just for my customer) behind Apache and turned on Caching in Plone (without Proxy), but the site seem MUCH slower than similar 'things' I have done on Python 2.7 (with the same setup, just apache in front). The site will just have a few (test) users, but I need to avoid it 'sleeping' (so the customer can test it before 'finishing the project')

Any suggestions? ( the site is here: http://portal.flaktveitik.no )

Plone 5.2.6 (5214)
CMF 2.5.4
Zope 4.6.3
Python 3.6.2 (default, Jul 17 2017, 23:14:31) [GCC 5.4.0 20160609]
PIL 6.2.2 (Pillow)
WSGI: On
Server: waitress 1.4.4

I can see some calls to //None (eg /forside/bestill/copy_of_keeper_voksen_rod/None). Seems fast, caching is ok. Sometimes collectionfilter query takes like 1.5 secs. Also the 301 not modified gets a lot (more than 400ms). theme js and css are not minified.

the view itself is very fast (about 40ms).

  • try to enable http2 on apache
  • remove all the 404 on the page
  • debug mode is slow, does it change using production mode?

It is not in debug mode.

It looks to me that it gets slow after 'inactivity', could it be that Waitres 'goes to sleep'. Maybe it would be enough to just have a cron job that visits the site?

Is there some tool (or website, like uptime robot) that can check a site regulary and send notice if 'response is slow' ? Maybe just change the timeout settings?

(this is the message I got from my customer (translated): 'The site responds very slowly periodically. This can quickly become an irritation. Can you do something about it?')

You could use curl (in a cron job) to measure http(s) response times like:

curl -o /dev/null -s --write-out '%{time_total}' "https://demo.plone.org/en"

And if the result is too slow do whatever you need.

For finer granularity you could use other time variables like time_namelookup, time_connect, time_appconnect, time_pretransfer, time_redirect, or time_starttransfer.

Thanks a lot

I added a file ("@curl-format.txt) with

    time_namelookup: %{time_namelookup}\n
    time_connect: %{time_connect}\n
    time_appconnect: %{time_appconnect}\n
    time_pretransfer: %{time_pretransfer}\n
    time_redirect: %{time_redirect}\n
    time_starttransfer: %{time_starttransfer}\n
    ———\n
    time_total: %{time_total}

So now, curl -w "@curl-format.txt" -o /dev/null -s "http://mysite .no"

I get all(?) the stats similar to this

    time_namelookup: 0.005180
    time_connect: 0.048368
    time_appconnect: 0.000000
    time_pretransfer: 0.048424
    time_redirect: 0.000000
    time_starttransfer: 0.103415
    ———
    time_total: 0.147025