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
|
188
|
9 The source code of Orthanc imposes no such hard limit by itself. At
|
|
10 the time of writing, we know that Orthanc is being used in production
|
|
11 in hospitals with more than 15TB of data, 125,000 studies and around
|
|
12 50 millions of instances (please `get in touch with us
|
|
13 <https://www.orthanc-server.com/static.php?page=contact>`__ if you can
|
|
14 share other testimonials).
|
|
15
|
|
16 The stress is actually put on the underlying database engine, and on
|
|
17 the storage area (check out :ref:`orthanc-storage`). As explained in
|
|
18 the :ref:`troubleshooting section <troubleshooting>`, the built-in
|
|
19 SQLite database engine should be replaced by an enterprise-ready
|
|
20 database engine once Orthanc must store several hundreds of thousands
|
|
21 of DICOM instances (check out the :ref:`postgresql` and
|
|
22 :ref:`mysql`). It is also true that the performance of Orthanc in the
|
|
23 presence of large databases has continuously improved over time,
|
|
24 especially when it comes to the speed of :ref:`DICOM C-FIND
|
|
25 <dicom-find>`.
|
186
|
26
|
|
27 Here is a generic setup that should provide best performance in the
|
|
28 presence of large databases:
|
|
29
|
|
30 * Make sure to use the latest release of Orthanc (1.5.3 at the time of
|
|
31 writing).
|
|
32
|
|
33 * We suggest to use the latest release of the :ref:`PostgreSQL plugin
|
|
34 <postgresql>` to store the database index (3.0 at the time of
|
|
35 writing). Make sure that ``EnableIndex`` is set to ``true``.
|
|
36
|
187
|
37 * Make sure that :ref:`run-time debug assertions <troubleshooting>`
|
|
38 are turned off. A warning will show in the logs if this is not the
|
188
|
39 case. Note that all pre-built binaries provided by Osimis are
|
|
40 correctly configured in that respect.
|
187
|
41
|
186
|
42 * We suggest to use the default filesystem storage area. Of course,
|
|
43 make sure that the filesystem is properly backup, and that
|
|
44 technologies such as RAID are enabled. Make sure that the option
|
|
45 ``EnableStorage`` of the PostgreSQL plugins is set to ``false``.
|
|
46
|
|
47 * Obviously, the PostgreSQL database should be stored on a high-speed
|
|
48 drive (SSD). This is less important for the storage area.
|
|
49
|
|
50 * The :ref:`Orthanc configuration file <configuration>` should have
|
|
51 the following values for performance-related options (but make sure
|
189
|
52 to understand their implications):
|
186
|
53
|
|
54 * ``StorageCompression = false``
|
|
55 * ``LimitFindResults = 100``
|
|
56 * ``LimitFindInstances = 100``
|
|
57 * ``KeepAlive = true``
|
|
58 * ``TcpNoDelay = true``
|
|
59 * ``SaveJobs = false``
|
|
60 * ``StorageAccessOnFind = Never``
|
|
61
|
|
62 * Make sure to carefully :ref:`read the logs <log>` in ``--verbose``
|
|
63 mode, especially at the startup of Orthanc. The logs may contain
|
|
64 very important information regarding performance.
|
|
65
|
187
|
66 * Make sure to read guides about the `tuning of PostgreSQL
|
186
|
67 <https://wiki.postgresql.org/wiki/Performance_Optimization>`__.
|