186
|
1 .. _scalability:
|
|
2
|
|
3 Scalability of Orthanc
|
|
4 ======================
|
|
5
|
|
6 One of the most common question about Orthanc is: *"How many DICOM
|
|
7 instances can be stored by Orthanc?"*
|
|
8
|
|
9 The source code of Orthanc imposes no such hard limit by itself. The
|
|
10 stress is actually put on the underlying database engine, and on the
|
|
11 storage area (check out :ref:`orthanc-storage`). As explained in the
|
|
12 :ref:`troubleshooting section <troubleshooting>`, the built-in SQLite
|
|
13 database engine should be replaced by an enterprise-ready database
|
|
14 engine as soon as the number of DICOM instances grow above about
|
|
15 50,000 (check out the :ref:`postgresql` and :ref:`mysql`). It is also
|
|
16 true that the performance of Orthanc in the presence of large
|
|
17 databases has continuously improved over time, especially when it comes
|
|
18 to the speed of :ref:`DICOM C-FIND <dicom-find>`.
|
|
19
|
|
20 Here is a generic setup that should provide best performance in the
|
|
21 presence of large databases:
|
|
22
|
|
23 * Make sure that :ref:`run-time debug assertions <troubleshooting>`
|
|
24 are turned off. A warning will show in the logs if this is not the
|
|
25 case.
|
|
26
|
|
27 * Make sure to use the latest release of Orthanc (1.5.3 at the time of
|
|
28 writing).
|
|
29
|
|
30 * We suggest to use the latest release of the :ref:`PostgreSQL plugin
|
|
31 <postgresql>` to store the database index (3.0 at the time of
|
|
32 writing). Make sure that ``EnableIndex`` is set to ``true``.
|
|
33
|
|
34 * We suggest to use the default filesystem storage area. Of course,
|
|
35 make sure that the filesystem is properly backup, and that
|
|
36 technologies such as RAID are enabled. Make sure that the option
|
|
37 ``EnableStorage`` of the PostgreSQL plugins is set to ``false``.
|
|
38
|
|
39 * Obviously, the PostgreSQL database should be stored on a high-speed
|
|
40 drive (SSD). This is less important for the storage area.
|
|
41
|
|
42 * The :ref:`Orthanc configuration file <configuration>` should have
|
|
43 the following values for performance-related options (but make sure
|
|
44 to understand their implication):
|
|
45
|
|
46 * ``StorageCompression = false``
|
|
47 * ``LimitFindResults = 100``
|
|
48 * ``LimitFindInstances = 100``
|
|
49 * ``KeepAlive = true``
|
|
50 * ``TcpNoDelay = true``
|
|
51 * ``SaveJobs = false``
|
|
52 * ``StorageAccessOnFind = Never``
|
|
53
|
|
54 * Make sure to carefully :ref:`read the logs <log>` in ``--verbose``
|
|
55 mode, especially at the startup of Orthanc. The logs may contain
|
|
56 very important information regarding performance.
|
|
57
|
|
58 * Make sure to read guides about the :ref:`tuning of PostgreSQL
|
|
59 <https://wiki.postgresql.org/wiki/Performance_Optimization>`__.
|
|
60
|