##// END OF EJS Templates
docs: tweak formatting of the performance page - replace the odd numbered list with sections
Mads Kiilerich -
r6337:d02c715e default
parent child Browse files
Show More
@@ -4,43 +4,54 b''
4 Optimizing Kallithea performance
4 Optimizing Kallithea performance
5 ================================
5 ================================
6
6
7 When serving a large amount of big repositories, Kallithea can start
7 When serving a large amount of big repositories, Kallithea can start performing
8 performing slower than expected. Because of the demanding nature of handling large
8 slower than expected. Because of the demanding nature of handling large amounts
9 amounts of data from version control systems, here are some tips on how to get
9 of data from version control systems, here are some tips on how to get the best
10 the best performance.
10 performance.
11
11
12 Follow these few steps to improve performance of Kallithea system.
12
13 Fast storage
14 ------------
13
15
14 1. Kallithea is often I/O bound, and hence a fast disk (SSD/SAN) is
16 Kallithea is often I/O bound, and hence a fast disk (SSD/SAN) and plenty of RAM
15 usually more important than a fast CPU.
17 is usually more important than a fast CPU.
16
18
17 2. Increase cache
19
20 Caching
21 -------
18
22
19 Tweak beaker cache settings in the ini file. The actual effect of that
23 Tweak beaker cache settings in the ini file. The actual effect of that is
20 is questionable.
24 questionable.
21
25
22 3. Switch from SQLite to PostgreSQL or MySQL
26
27 Database
28 --------
23
29
24 SQLite is a good option when having a small load on the system. But due to
30 SQLite is a good option when having a small load on the system. But due to
25 locking issues with SQLite, it is not recommended to use it for larger
31 locking issues with SQLite, it is not recommended to use it for larger
26 deployments. Switching to MySQL or PostgreSQL will result in an immediate
32 deployments.
27 performance increase. A tool like SQLAlchemyGrate_ can be used for
33
28 migrating to another database platform.
34 Switching to MySQL or PostgreSQL will result in an immediate performance
35 increase. A tool like SQLAlchemyGrate_ can be used for migrating to another
36 database platform.
37
29
38
30 4. Scale Kallithea horizontally
39 Horizontal scaling
40 ------------------
31
41
32 Scaling horizontally can give huge performance benefits when dealing with
42 Scaling horizontally means running several Kallithea instances and let them
33 large amounts of traffic (many users, CI servers, etc.). Kallithea can be
43 share the load. That can give huge performance benefits when dealing with large
34 scaled horizontally on one (recommended) or multiple machines.
44 amounts of traffic (many users, CI servers, etc.). Kallithea can be scaled
45 horizontally on one (recommended) or multiple machines.
35
46
36 It is generally possible to run WSGI applications multithreaded, so that
47 It is generally possible to run WSGI applications multithreaded, so that
37 several HTTP requests are served from the same Python process at once. That
48 several HTTP requests are served from the same Python process at once. That can
38 can in principle give better utilization of internal caches and less
49 in principle give better utilization of internal caches and less process
39 process overhead.
50 overhead.
40
51
41 One danger of running multithreaded is that program execution becomes much
52 One danger of running multithreaded is that program execution becomes much more
42 more complex; programs must be written to consider all combinations of
53 complex; programs must be written to consider all combinations of events and
43 events and problems might depend on timing and be impossible to reproduce.
54 problems might depend on timing and be impossible to reproduce.
44
55
45 Kallithea can't promise to be thread-safe, just like the embedded Mercurial
56 Kallithea can't promise to be thread-safe, just like the embedded Mercurial
46 backend doesn't make any strong promises when used as Kallithea uses it.
57 backend doesn't make any strong promises when used as Kallithea uses it.
@@ -65,7 +76,9 b' 4. Scale Kallithea horizontally'
65 that will separate regular user traffic from automated processes like CI
76 that will separate regular user traffic from automated processes like CI
66 servers or build bots.
77 servers or build bots.
67
78
68 5. Serve static files directly from the web server
79
80 Serve static files directly from the web server
81 -----------------------------------------------
69
82
70 With the default ``static_files`` ini setting, the Kallithea WSGI application
83 With the default ``static_files`` ini setting, the Kallithea WSGI application
71 will take care of serving the static files found in ``kallithea/public`` from
84 will take care of serving the static files found in ``kallithea/public`` from
General Comments 0
You need to be logged in to leave comments. Login now