- Use SMTP archiving instead of IMAP
IMAP is inherently slower than SMTP. Furthermore, MailArchiva's SMTP server is a high-performance server that employs non-blocking sockets. If performance is a real concern, its far better to use SMTP to forward emails to MailArchiva. MailArchiva's SMTP is very efficient and can handle very high loads.
- Adjust IMAP settings
The following settings are best for high performance archiving with IMAP: a) Disable partial fetches b) Max. simultaneous messages 50 c) Disable IMAP Idle (d) Polling interval set to 10-50 msec
- Increase amount of memory
If the server has more memory, garbage collections will be less frequent and the server will work faster. Ensure that the server allocated sufficient memory as described Memory Settings.
- Increase maximum mounted archive files
MailArchiva writes data to 4096 AES encrypted ZIP archive files. By default, only 410 of these archive files can be open at any time. If a server is archiving or indexing heavily, archiving performance may be severely impacted by this limitation. By increasing the maximum number of mounted archive files in Configuration->Archive settings, the server will be able to write to more archive files simultaneously and contention will be reduced. Although archiving will occur faster, the server will consume more memory. Thus, if the maximum number of mounted archive files is increased, ensure that the server is allocated more memory as described in Memory Settings.
- Increase the number of archiving threads
The number of archiving threads is adjusted in Configuration->Archive settings. The default no archiving threads is six. If your server has a large number of CPU cores, the number of archiving threads can be increased to 20 or more. However, if this value is increased, the server will also need to be allocated more memory as described in Memory Settings.
- Use Locally Attached / Fibre Channel Storage
Its always better to use locally attached storage. You might find that your Ethernet cable is the bottle-neck. MailArchiva can only ever be as fast as the time it takes to write to the storage device. If you are writing over a network, you are limited to the width of the ethernet pipe. If you have high performance needs and you require write over a network, consider using Fibre Channel controllers.
- Change to V1 Archive Format (when using NFS/SMB shares)
In some environments, the V2 archive format (enabled by default) is slow to archive on NFS and SMB shares. This is likely due to the complex locking mechanisms of the V2 archive format. If faster archiving performance is absolutely required, switch the volume format to V1 in Configuration->Archive and thereafter create a new volume. The server will write data in a more simplified manner, and archiving performance should increase substantially.
There are a few things to consider when attempting to maximize search times:
- Specify an initial date range and set volume search strategy in Configuration->Search.
In Configuration->Search, Configure MailArchiva to default searches to the past three months and set the volume search strategy to "by create date". Using this configuration, only the volumes whose created date falls between the selected search dates will be searched (provided the user is searching by archive date).
- Store searches indexes locally (not on a networked drive)
The indexes are accessed extensively during searching. Thus, any latency in network/disk IO will seriously affect search performance. That being said, the performance penalty of keeping the archives on network drives is minimal, as the emails in the archives are typically accessed during archiving or retrieval (not searching). Thus, it is reasonable (though not ideal) to store indexes locally and archives on a remote NAS/SAN disk.
- Switch off search immediately on search page load
MailArchiva searches immediately when the search page loads. You can change this behaviour by unchecking "Search immediately when search page loaded (disable if searching is slow)" in Configuration->Search.
- Switch off sorting.
Search performance will be improved x16 by switching off sorting in the General tab.
- Increase Amount of Heap Space/Virtual Memory
Your server needs lots of heap/virtual memory to be able to search through millions of documents. Ensure that MailArchiva is configured to take full advantage of the amount of RAM installed on your server. See Memory Settings for instructions on how to allocate more memory to the server.
- Select "Read index once per session" in General configuration options
This causes the search engine to cache the results across searches and improves search time significantly.
- Store indexes on separate hard disks.
A concurrent search will run much faster if the indexes associated with each volume are on different hard disks.
- Store you indexes on a fast disk
Use a solid state storage disk (SSD) for storing the index. As seek-times for SSD's are about 100 times faster than traditional platter-based harddrives, the usual penalty for seeking is virtually eliminated.
- Unmount older volumes
Unmounted volumes are not searchable. MailArchiva will search for all configured volumes except those that are unmounted or ejected.
- Do not index attachments
Set "index.attachments=no" in server.conf.
- Do not index message bodies
Set "index.messagebody=no" in server.conf
Found this information useful? Visit mailarchiva.com to learn more about MailArchiva.