Is your archive slower than you would like it to be?

Here are some tips, and general directions for tuning the dcm4chee system.

Always make a complete backup before modifying the dcm4chee deployment, and test thoroughly before using in production!

Server(s)

If you want to install everything (database and dcm4chee) on one machine, it is good to have a lot of memory and processing power to satisfy the needs of the system. Volume, types of images, number of concurrent users (DICOM, HL7, and human), and throughput requirements all play into the hardware decision. In general it is a good idea to run the database and the dcm4chee system on separate machines in a production environment. There will be network overhead between the two servers, but the benefit lies in the dedication of appropriate memory, processors, and storage to each application (dcm4chee and database).

If the need arises (because of volume increases or requirements, etc.), you could have multiple application (dcm4chee) servers, accessing a single database server. See the Clustering page for more information on multi-server environments.

Storage

It's definitely a good idea to have separate storage areas for the system (dcm4chee application), the database, and the image (and other clinical) data. This reduces disk contention, and allows you to optimize the type of storage to the usage. The database can grow big (see below), but the true storage need is for the image (and other clinical) data. A single study or series can be many megabytes in size, with total storage reaching into the Gigabyte or even Terabyte range - depending on the type of data you are storing and how long it is retained. In addition, since this data is very sensitive, a redundant or fault tolerant storage architecture is recommended. Different types of storage (single disk, RAID, SAN, NAS, DAS, tape, DVD, etc.) has different qualities (speed, throughput, quality, redundancy, accessibility, etc.), and can all be highly tuned in many different ways. Determining storage requirements, and tuning the storage architecture of a production medical imaging system is not for the faint of heart (the same could be said of the database as well), and should be done by an expert. However, there are many good books and internet resources on determining and tuning storage architectures. Feel free to add your storage experiences and recommendations related to dcm4chee.

Network

The amount of data transferred between the machine and the rest of the world can be enormous. Don't rely on the fact you have Gb ethernet in the server. The traffic might be slowed elsewhere - in some 100Mb switch forgotten somewhere on the main data transfer path.

Database

The database tends to grow huge, possibly even growing infinitely. dcm4chee saves information about the data it stores in the database - most of the columns being varchars. For a server with tens of thousands of studies the size of the database can easily get close to 5-10GB! Database access speed is vital for fluent server operation. In addition, since this data is very sensitive, a redundant or fault tolerant storage architecture is recommended.

JBoss

dcm4chee is a J2EE application deployed within the JBoss Application Server. This means that it relies heavily on the JBoss EJB container, datasource management, JMS, connection pooling, among other JBoss services. Configuration of the datasource was mentioned before, however there's much more that can be configured with regards to the other items.

If you want to be sure you're getting maximum performance from the application server, you might have to dig into JBoss performance tunig.. One good step however is to give the server enough memory - see the Installation notes to see how. To find out more about JBoss tuning see JBoss wiki page on the topic. JBoss tuning (like database tuning) is an endeavor unto itself, and the JBoss website, wiki, and forums are the places to go for that type of information.

dcm4chee Application

There are many things you can configure for optimal performance. Here is an list of items to think about (note that this is not an exhaustive list):