[CalendarServer-users] CalendarServer Performance

Andre LaBranche dre at apple.com
Mon Nov 28 14:58:34 PST 2016


> On Nov 27, 2016, at 8:36 AM, Gaurav Jain <monkeyfdude at gmail.com> wrote:
> Hi,
> * Could you please share documents of CalendarServer performance and load/stress testing?
> * How much memcached helps with performance of CalendarServer?
> For eg. I found this. 55,000 seems quite low number.
> Test Scenario: With a well tuned multi-server deployment of identically configured caldav servers behind a load balancer, and a separate Postgres server with a fast RAID 0, in a low-latency lab environment using simulated iCal client load, it takes 5 or 6 caldav servers to saturate the postgres server (which becomes i/o bound at a load of about 55,000 simulated users in this test).

We don't really have anything published specifically about performance. The excerpt you reference above (from our MultiServerDeployment.rst <https://github.com/apple/ccs-calendarserver/blob/master/doc/Admin/MultiServerDeployment.rst> document) is kind of old, and beyond that, doesn't sufficiently explain the parameters of the test scenario. The amount of load generated by clients depends a great deal on specifically what kinds of requests those clients are issuing, and what the general workflow is. For example, 1000 people posting one 'non-scheduled' event (which is our strange term for events with no attendees, although they do occur at a time) per day would present WAY less load than 100 users posting one event with 10 attendees per day. Accordingly, any sort of performance / scalability talk must take the workload into account as the most important factor.

We have good tools for characterizing the workload of any CalendarServer, through analysis of access.log - check out contrib/tools/protocolanalysis.py <https://github.com/apple/ccs-calendarserver/blob/master/contrib/tools/protocolanalysis.py>  This tool outputs a report summarizing the activity on your server, looking at the activity from a lot of different angles. The results might not make a lot of sense to you, but we could probably help you understand them and set expectations with respect to scalability.

We also have a pretty nice load simulator <https://github.com/apple/ccs-calendarserver/tree/master/contrib/performance/loadtest>, and it's actually documented - check out LoadSimulation.rst <https://github.com/apple/ccs-calendarserver/blob/master/doc/Admin/LoadSimulation.rst>  The default profile it uses provides what we consider to be a good mix of request types for an 'average' server where people are taking advantage of most of the server's features. It's also configurable, with the goal of allowing you to create a load sim profile that closely approximates what you see in production. There are several example profiles in there to look at for reference.

memcached is rather important, and it becomes more important as general activity level rises. We tried to get rid of it not too long ago, and ended up bringing it back because stuff was too slow without it. The service is not designed to allow memcached to be optional.

Also I think I would challenge the characterization of 55,000 users as 'quite low', unless you mean "low for that amount of hardware, compared to other common services", in which case... well, yeah, kinda. It is hard to compare CalDAV to other common types of services like email because the data model is soooo much more complex, with tons of inter-dependcies.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-users/attachments/20161128/ade19929/attachment.html>

More information about the calendarserver-users mailing list