cdaboo at apple.com
Mon Jul 2 07:11:17 PDT 2007
--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.
More information about the calendarserver-users