Uploaded image for project: 'James Server'
  1. James Server
  2. JAMES-3123

Manage properly Cassandra queries concurrency

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • cassandra
    • None

    Description

      We have several parameters regarding Cassandra usage in James:

      • cassandra driver queue size
      • cassandra driver threadpool size
      • reactor concurrency tuning

      We frequently fine tune these parameters based on metrics feedback: for example https://github.com/linagora/james-project/pull/3218 tries to limit the impact of counters computation on the user queries

      However, this "try, measure, fix" strategy could be handle by engineering a better execution framework.

      I suggest this one:

      • use two specific reactor workqueues for running cassandra queries, one for interactive queries and another one for background queries
      • ensure we don't schedule more queries than the Cassandra queue size can handle by using back-pressure
      • send queries to the right workqueue depending on the expected execution characteristics

      Attachments

        Activity

          People

            Unassigned Unassigned
            matthieu Matthieu Baechler
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: