[CalendarServer-users] Performance

Cyrus Daboo cdaboo at apple.com
Mon Jul 2 07:11:17 PDT 2007

Hi Andreas,

--On July 2, 2007 2:22:44 AM +0200 Andreas Brodbeck <dassi at hispeed.ch> 

> I have a test setup here, and I observe quite a long "calculation time"
> for report queries. I have some few dates in the calendar, including
> reccurent dates. It typically takes up to 500ms to give me a time range
> for 30 days (equals to approx. 30 events) or so. (On a really fast
> server machine). And for a whole year it takes up seconds...
> How can I speed up this? What are the performance issues in general?
> What is this load-balancing thing in the config file?
> Any help is very much appreciated! (Thanks to Apple having this Calendar
> Server open source!)

Can you describe exactly what the query is you are doing (i.e. send the XML 
report body)? I would like to know if its just a time-range query or 
whether it also does some text-matching. Also, I want to know whether you 
are requesting the calendar-data to be returned with the report and whether 
you are returning all the data or just part of it. The other question is 
how large is the calendar you are targeting the report at? i.e. how many 
resources in it?

Some things to note: a time-range only query should utilize only the sqlite 
database and so ought to be fast. If you include any property/parameter 
text searches then it will slow down a lot as currently we don't index 
calendar text data - in that case the server has to open and search each 
resources. Obviously that is far from ideal and we will be adding a lot 
more indexing in the future to aid with that.

The other issue is returning partial calendar again - again to do that the 
server has to open and parse each resource that is matched by the query, 
and then write them up via a filter that only includes the selected 
properties etc. Writing the entire calendar data is a lot easier - it just 
streams the entire "raw" resource data from disk to the network. Whilst it 
might be possible to utilize the index for the partial data case, a better 
first step would be to optimize the iCalendar parser/generator.

Cyrus Daboo

More information about the calendarserver-users mailing list