MS Office 365 Outlook Calendar really slow

Solution 1:

tl;dr: Having many Shared Calendars caused excessive CPU utilization & poor performance due to lengthy Outlook syncs. Removing the Shared Calendars solved my performance issues...

Well, I've got a 2019 16" MacBook Pro with 32GB RAM and an Intel 8-core i9 CPU. I've been fighting performance issues with Outlook for weeks/months and finally figured out the culprit (for me, at least): Shared Calendars.

Here were my Outlook for Mac symptoms:

  • Slow to open and VERY slow to respond either when being launched from an active session or when resuming from a sleep state.

  • Excessive and prolonged CPU utilization during either state mentioned above

  • When viewed in Activity Monitor during these states, frequent "Outlook not responding" messages

  • When clicking to respond to a meeting reminder pop-up, spinning pinwheels of death for prolonged periods (sometimes several minutes).

  • Performance impact mostly seen when doing anything related to Calendar functions

Here are my specs from an Outlook for Mac Diagnostic Log:

Outlook for Mac 2021 Build: 16.52.21080801

Activation Type: Subscription

License Type: Microsoft 365 Subscription

Microsoft AutoUpdate Build: 4.38.21080801

Mac OS Version: Version 11.5.1 (Build 20G80)

CPU Architecture: Intel x86_64

OK, so far, so good. Then I saw these two lines:

Number of reminders: 84,135

Number of Calendar Items: 158,532

No, those are not typos, so WTH is happening?!? Here's what I speculate...

For convenience, I had added about 25 Shared Calendars to my Calendar view but never displayed more than 2 or 3 at once. They're handy because you can quickly toggle someone's calendar on to check availability, schedule meetings, etc. The problem is that when you add that many calendars, Outlook both downloads all those calendar items to a local cache (more on that below) but also keeps ALL those calendars sync'd. I presume that when you first open Outlook or resume from a sleep state, it triggers a Calendar sync and then chokes on all those Calendar Items and Reminders across your personal calendar AND ALL the Shared Calendars.

I'm not an Outlook expert, but know it creates a local cache of all your Outlook items so you can view them when you're offline. In the Windows world, Outlook historically saved all this cached info in a single OST file. However, on MacOS it appears that Outlook uses a local SQLite DB to index the cached items but stores all of them (emails, calender items, etc.) as files deep inside your Outlook Profile directory. For example, Bill Smith would have his Calendar Items stored here:

/Users/bill.smith/Library/Group Containers/UBF8T346G9.Office/Outlook/Outlook 15 Profiles/Main Profile/Data/Events

BTW, ever done a unfiltered Finder search using Spotlight and seen a ton of files with descriptions of "olk15_event" or "olk15_message" in the Kind column? You guessed it: those are your Calendar Items and Emails stored as INDIVIDUAL files in your Outlook Profile's directory structure.

So what's the fix? Remove any Shared Calendars you absolutely do not need daily access to. As soon as you remove them, Outlook will start deleting all these cached files out of your Outlook Profile folders. After I removed all my Shared Calendars, my stats looked like this:

Number of reminders: 220

Number of Calendar Items: 1,215

But the best part is that Outlook now launches and resumes from sleep in just a few seconds and the CPU spikes only last a few seconds before settling to under 10% and then under 1%. And...NO MORE SPINNING PINWHEELS OF DEATH!

In a perfect world, there would be an option you could set that only downloaded and sync'd a Shared Calendar when you actually selected it. I'm not holding my breath that that will ever happen.

After speaking with my IT Support Desk, I'm going to see if there's a way to change the retention on old Calendar Items that's independent of Email retention. I mean, who needs access to Calendar Items that are a year or more old, right? Emails, sure, but Meetings & Appointments?

I'm documenting all this because I'm shocked that there haven't been more posts about this particular issue. Hope this helps someone out there!