I talked to someone who helped me further. We explored the nginx log and found some issues:
2019/02/17 00:38:05 [alert] 2459#2459: *46471 pread() read only 8553 of 8563 from "/var/www/domain.com/htdocs/wp-content/uploads/bb-plugin/cache/18-layout-preview.css" while sending response to client, client: 172.58.22.150, server: domain.com, request: "GET /wp-content/uploads/bb-plugin/cache/18-layout-preview.css?ver=4d453a398eb115bac296bd8be6f5cfb9 HTTP/2.0", host: "domain.com", referrer: "https://domain.com/?fl_builder"
We searched for "search pread() read only xxxx of yyyy" and this led us to look at the nginx config file. My friend, who is an nginx expert and runs a hosting company, compared the file with one of his, and we ended up commenting out three lines in the webinoly config file that were not present in his setup:
31: #open_file_cache_valid 3m;
32: #open_file_cache max=129485 inactive=5m;
69: #open_log_file_cache max=1000 inactive=30s valid=1m;
In my other webinoly server, one of the lines was slightly different:
32: #open_file_cache max=245817 inactive=5m;
This appears to have solved the problem. I haven't seen the errors I was having since then. I wonder what these lines are there for, or how they're generated, or why they differ across two servers?
Hope this is helpful to someone!