Best Practices to Reduce EWS (Microsoft Exchange server (on-premises)) Timeouts in Nylas v3

If you're experiencing 504 timeout errors with EWS accounts in Nylas v3, here are key optimizations that can help improve performance:

 

1. Optimize Page Sizes

  • Use smaller page sizes when listing objects
  • Recommended limits:
    • Threads: 20 items (default)
    • Other resources: 50 items maximum
    • Avoid using large limits like 100 or 200

2. Implement Field Selection

  • Use the select parameter to request only needed fields for events, messages, threads etc.
    Documentation
  • Example:select=subject,body,id
  • Avoid requesting unnecessary fields like:
    • include_headers for messages (use in_reply_to instead)
    • master_event_id for events unless specifically needed
    • attachments

3. Use Efficient Filters

  • Avoid using the any_email filter, as it is not optimized for EWS.

  • The to, cc, and bcc filters are also not optimized.

  • Instead usefrom parameter for sender filtering.

4. Request Pattern Optimization

  • Avoid making sudden bursts of concurrent requests
  • Implement exponential backoff for retries, especially for send requests. When retrying, be sure to introduce some randomness (or "jittering") to avoid the thundering-herd problem: https://en.wikipedia.org/wiki/Thundering_herd_problem
  • Avoid making another API request to fetch an object if you received a webhook notification for that object. Webhook is inflated. The values will not be different between the webhook object you received and the API response you get.

5. Using Webhooks with Local Caching

  • Configure webhooks to receive notifications when emails, calendar events, or contacts change
    For implementation details, see our webhooks documentation.
  • Store the data you receive from Nylas in your local database
  • Update your cache when webhook notifications arrive
  • Serve requests from your cache instead of making API calls

For more details on implementing these optimizations, see our rate limits documentation.

If you continue to experience issues after implementing these optimizations, please contact our support team with:

  • Specific endpoint examples
  • Grant IDs affected
  • Timestamps of failures
  • Any error messages received

Updated

Was this article helpful?

0 out of 0 found this helpful

Have more questions? Submit a request

Comments

0 comments

Please sign in to leave a comment.