~loggerhead-team/loggerhead/trunk-rich

« back to all changes in this revision

Viewing changes to HACKING

  • Committer: Robey Pointer
  • Date: 2007-01-02 07:14:03 UTC
  • Revision ID: robey@lag.net-20070102071403-3i0jr7p56z12z9b2
heh, duh.  i can't leave the shelf files open from multiple threads at once.
the shelf files in changecache and textindex are now only opened when they
are being used (and the lockfile is held), and closed afterwards.  no more
branches stomping on each other when they share cache/index.  in the process,
i made the textindex chew through 100 revisions at once now instead of 1.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
Loggerhead
2
 
==========
3
 
 
4
 
Overview
5
 
--------
6
 
 
7
 
This document attempts to give some hints for people that are wanting to work
8
 
on Loggerhead.
9
 
 
10
 
 
11
 
Testing
12
 
-------
13
 
 
14
 
You can run the loggerhead test suite as a bzr plugin. To run just the
15
 
loggerhead tests::
16
 
 
17
 
  bzr selftest -s bp.loggerhead
18
 
 
19
 
 
20
 
Load Testing
21
 
------------
22
 
 
23
 
As a web service, Loggerhead will often be hit by multiple requests. We want
24
 
to make sure that loggerhead can scale with many requests, without performing
25
 
poorly or crashing under the load.
26
 
 
27
 
There is a command ``bzr load-test-loggerhead`` that can be run to stress
28
 
loggerhead. A script is given, describing what requests to make, against what
29
 
URLs, and for what level of parallel activity.
30
 
 
31
 
 
32
 
Load Testing Multiple Instances
33
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
34
 
 
35
 
One way that Launchpad provides both high availability and performance scaling
36
 
is by running multiple instances of loggerhead, serving the same content. A
37
 
proxy is then used to load balance the requests. This also allows us to shut
38
 
down one instance for upgrading, without interupting service (requests are
39
 
just routed to the other instance).
40
 
 
41
 
However, multiple processes poses an even greater risk that caches will
42
 
conflict. As such, it is useful to test that changes don't introduce coherency
43
 
issues at load. ``bzr load-test-loggerhead`` can be configured with a script
44
 
that will make requests against multiple loggerhead instances concurrently.
45
 
 
46
 
To run multiple instances, it is often sufficient to just spawn multiple
47
 
servers on different ports. For example::
48
 
 
49
 
  $ bzr serve --http --port=8080 &
50
 
  $ bzr serve --http --port=8081 &
51
 
 
52
 
There is a simple example script already in the source tree::
53
 
 
54
 
  $ bzr load-test-loggerhead load_test_scripts/multiple_instances.script
55
 
 
56
 
 
57
 
 
58
 
.. vim: ft=rst tw=78
59