Performance Optimization

The heaviest part of Noodle is the RDBMS and to make it fast you need to:

  1. Upgrade software:
    • OS
    • Java
    • DB
    • Noodle
  2. Configure your software properly:
    • set the DB to use your RAM, and otherwise optimize its settings (postgres.conf).
    • set the HTTP pool sizes appropriately (server.xml).
    • make sure the DB and temp folders are not virus scanned.
    • remove or fix Windows domain if rights are timing out.
    • make sure caching is enabled on client browsers.
    • do backups and other CPU/RAM/disk heavy operations on the server after hours.
    • maintenance:
      • PGSQL: REINDEX DATABASE noodledb; VACUUM ANALYZE;
      • MSSQL: ALTER INDEX ALL ON table REBUILD; -- per table (although correct config should do that for you).

Options that make your RDBMS faster:

  1. More disk space if you're using a NTFS volume over 90%.
  2. As much RAM as possible (up to the size of your database+ whatever your OS uses) but at least 1GB + your index size:
    • PGSQL: SELECT SUM(pg_indexes_size(oid)) FROM pg_class;
    • MSSQL: SELECT SUM(used_page_count) FROM dm_db_partition_stats;
  3. Multi-core CPU (more than 4 cores has less effect and more than 30 is pointless).
  4. Putting as many HDD as you can in RAID_0 (you should see a linear performance boost) and /or using SSD or hybrid drives or hybrid volumes.

More, right from the source:

Recommended requirements:

  • Minimal: 500MHz CPU, 500MB RAM, 1GB HDD
  • Small: 1GHz CPU, 1GB RAM, 1GB HDD
  • Optimal: 4 core CPU(s), 4GB RAM, 1TB hybrid volume
  • Large: 8 core CPU(s), 24GB RAM, 1TB SSD