File: performance-tuning.xml

package info (click to toggle)
otrs2-doc 20120224-1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 36,060 kB
  • sloc: xml: 57,412; sh: 126; makefile: 12
file content (374 lines) | stat: -rw-r--r-- 12,652 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">


<!-- $Id: performance-tuning.xml,v 1.35 2012/02/23 13:44:35 mg Exp $ -->
<chapter id="performance-tuning">
<title>Leistungsverbesserung</title>

<abstract>
<para>
Hier finden Sie eine Liste verschiedener Techniken der Leistungssteigerung
Ihrer OTRS-Installation, einschließlich Konfiguration, Programmierung,
Speichernutzung und mehr.
</para>
</abstract>

<section id="performance-tuning-otrs">
<title>OTRS</title>
<para>
Es gibt verschiedene Ansätze zur Leistungssteigerung von OTRS.
</para>

<section id="performance-tuning-otrs-index">
<title>TicketIndexModule</title>
<para>
Zur Verfügung stehen zwei Backend-Module für den Ticket Index:
</para>

<para>
<itemizedlist mark='opencircle'>

<listitem>
<para>
Kernel::System::Ticket::IndexAccelerator::RuntimeDB (Standard), generiere
jede Queue-Ansicht dynamisch aus der Ticket Tabelle. Sie werden keine
Probleme mit der Leistung bekommen bis zu etwa 60.000 Tickets (oder 6000
offenen) in Ihrem System.
</para>
</listitem>

<listitem>
<para>
Kernel::System::Ticket::IndexAccelerator::StaticDB, das leistungsfähigste
Modul. Es sollte ab 80.000 Tickets oder mehr als 6000 offenen eingesetzt
werden. Benutzt eine extra ticket_index Tabelle, arbeitet wie eine Ansicht
(View). Führen Sie <filename>bin/otrs.RebuildTicketIndex.pl</filename> zum
erstmaligen Aufbau des Index aus.
</para>
</listitem>

</itemizedlist>
</para>

<para>
Sie können den IndexAccelerator per SysConfig einstellen.
</para>

</section>

<section id="performance-tuning-otrs-storage">
<title>TicketStorageModule</title>
<para>
Es stehen zwei Module für das Speichern der Tickets und Artikel bereit:
</para>

<para>
<itemizedlist mark='opencircle'>

<listitem>
<para>
Kernel::System::Ticket::ArticleStorageDB (Standard), speichert Anhänge
u. A. in der Datenbank. Merke: Benutzen Sie diese Option nicht für größere
Systeme.
</para>
<para>
Pro: Ist der Benutzer, unter dem der Webserver läuft, nicht der Benutzer
'otrs', können Sie mit diesem Modul Dateiberechtigungsprobleme vermeiden.
</para>
<para>
Contra: Es ist nicht wirklich ratsa,, Anhänge in Ihrer Datenbank zu
speichern. Achten Sie darauf, dass Ihre Datenbank das kann. Für MySQL setzen
Sie in dessen Konfiguration bspw. "set-variable = max_allowed_packet=8M", um
8 MB große Objekte zu speichern (Standard ist 2M).
</para>
</listitem>

<listitem>
<para>
Kernel::System::Ticket::ArticleStorageFS, speichert Anhänge u. A. im lokalen
Filesystem ab. Merke: Benutzen Sie dies für große Installationen.
</para>
<para>
Pro: Schneller!
</para>
<para>
Contra: Der Benutzer, unter dem der Webserver läuft, sollte der Benutzer
'otrs' sein (Dateisystemberechtigungen!). Wenn Sie mehrere
OTRS-Frontendserver haben, müssen Sie sicherstellen, dass das Dateisystem
gemeinsam genutzt wird. Sie können es z. B. auf ein NFS-Share oder
vorzugsweise ein SAN oder eine vergleichbare Lösung legen.
</para>
</listitem>

</itemizedlist>

</para>

<para>
	Merke: Sie können während des Betriebs von einem Backend auf das andere
wechseln. Stellen Sie dazu das Backend in der SysConfig um, und führen Sie
<filename>otrs.ArticleStorageSwitch.pl</filename> aus, um die Artikel aus
der Datenbank ins Dateisystem zu überführen oder umgekehrt. Sie können die
<emphasis>-s</emphasis> und <emphasis>-d</emphasis> Option verwenden, um das
Quell- und Zielbackend anzugeben. Der Prozess kann eine ganze Weile dauern,
je nach Menge der Artikel sowie System- und Netzwerkleistung.
</para>

<para>
<programlisting>
shell> bin/otrs.ArticleStorageSwitch.pl -s ArticleStorageDB -d ArticleStorageFS
</programlisting>
</para>
<para>
<emphasis>Skript: Wechsel des TicketStorage-Backends von Datenbank zu
Dateisystem.</emphasis>
</para>
</section>

<section>
    <title>Tickets archivieren</title>

    <para>
        Da OTRS als revisionssicheres System betrieben werden kann, ist das Löschen
von geschlossenen Tickets möglicherweise nicht empfehlenswert. Daher haben
wir eine Funktion implementiert, mit der Sie Tickets archivieren können.
    </para>
    <para>
        Kokret ist darunter zu verstehen, dass Tickets, die bestimmte Kriterien
erfüllen, als "archiviert" markiert werden. Diese Tickets werden dann bei
regulären Suchabfragen oder von GenericAgent-Jobs nicht mehr erfasst. Somit
muss sich das System mit einer großen Ticketmenge nicht mehr befassen, weil
dann nur noch die "aktuellsten" Tickets betrachtet werden. Das kann auf
großen Systemen eine signifikante Performanceverbesserung bewirken.
    </para>
    <para>
        Befolgen Sie folgende Schritte, um die Archivierungsfunktion zu nutzen:
    </para>
    <orderedlist>
        <listitem>
            <para>
                Archivsystem in der SysConfig aktivieren
            </para>
            <para>
                Wählen Sie in der SysConfig die Gruppe <literal>Ticket</literal> aus.  In
<literal>Core::Ticket</literal> finden Sie die Option
<literal>Ticket::ArchiveSystem</literal>, die standardmäßig auf "Nein"
steht. Ändern Sie diese auf "Ja" und speichern Sie die Änderung ab.
            </para>
        </listitem>
        <listitem>
            <para>
                Anlegen eines GenericAgent-Jobs
            </para>
            <para>
                Wählen Sie im Administrationsbereich den "GenericAgent" aus und legen Sie
dort einen neuen Job an. <orderedlist>
                    <listitem>
                        <para>
                            Job-Einstellungen
                        </para>
                        <para>
                            Geben Sie dem Job einen geeigneten Namen und angemessene Optionen.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Ticket-Filter
                        </para>
                        <para>
                            Der Ticketfilter ist eine Ticketsuche, die Tickets nach bestimmten Kriterien
auswählt. Es könnte empfehlenswert sein, nur Tickets zu archivieren, die
seit einigen Monaten im Status "geschlossen" sind.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Ticket-Aktion
                        </para>
                        <para>
                            Im Abschnitt "Ticket-Aktion" werden Sie eine Aktion "Ausgewählte Tickets
archivieren" finden. Wählen Sie dort "Tickets archivieren" aus.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Job speichern
                        </para>
                        <para>
                            Am Ende der Seite finden Sie einen Knopf zum Speichern des Jobs.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Betroffene Tickets
                        </para>
                        <para>
                            Das System wird dann alle Tickets anzeigen, die beim Ausführen des
GenericAgent-Jobs archiviert werden.
                        </para>
                    </listitem>
                </orderedlist>
            </para>
        </listitem>
        <listitem>
            <para>
                Ticketsuche
            </para>
            <para>
                Wenn Sie nun nach Tickets suchen, werden standardmäßig nur Tickets gefunden,
die nicht archiviert sind. Wenn Sie auch in archivierten Tickets suchen
wollen, fügen Sie "Archivsuche" zu Ihren Suchkriterien hinzu.
            </para>
        </listitem>
    </orderedlist>
</section>

</section>


<section id="performance-tuning-database">
<title>Datenbank</title>
<para>
Einstellungen sind immer spezifisch für die jeweils eingesetzte
Datenbank. Bei Problemen lesen Sie die Dokumentation und fragen Sie Ihren
Datenbankadministrator.
</para>

<section id="performance-tuning-database-mysql">
<title>MySQL</title>
<para>
Wenn Sie den Tabellentyp MyISAM (Standard) benutzen, und einen großen Teil
einer Tabelle gelöscht haben, oder wenn Sie sehr viele Änderungen an einer
Tabelle mit Zeilen variabler Länge vorgenommen haben (Tabellen mit VARCHAR,
BLOB oder TEXT Spalten), sollten Sie die Datendateien mit dem "optimize"
Kommando behandeln.
</para>
<para>
Dies bietet sich an, wenn MySQL viel CPU Zeit braucht. Optimieren Sie die
Tabellen ticket, ticket_history und article.
</para>

<para>
<programlisting>
shell$ mysql -u user -p database
mysql$ optimize table ticket;
mysql$ optimize table ticket_history;
mysql$ optimize table article;
</programlisting>
</para>

<para>
<emphasis>Skript: Optimierung von Datenbanktabellen.</emphasis>
</para>

</section>

<section id="performance-tuning-database-postgresql">
<title>PostgreSQL</title>
<para>
PostgreSQL konfigurieren Sie am besten in der postgresql.conf Datei in Ihrem
PostgreSQL Datenverzeichnis. Hier gibt es Hilfe dazu:
</para>

<para>
    <itemizedlist>
        <listitem>
            <para>
            <ulink url="http://www.revsys.com/writings/postgresql-performance.html">
<citetitle>http://www.revsys.com/writings/postgresql-performance.html</citetitle>
</ulink>
            </para>
        </listitem>
        <listitem>
            <para>
            <ulink url="http://varlena.com/GeneralBits/Tidbits/perf.html">
<citetitle>http://varlena.com/GeneralBits/Tidbits/perf.html</citetitle>
</ulink>
            </para>
        </listitem>
        <listitem>
            <para>
            <ulink url="http://varlena.com/GeneralBits/Tidbits/annotated_conf_e.html">
<citetitle>http://varlena.com/GeneralBits/Tidbits/annotated_conf_e.html</citetitle>
</ulink>
            </para>
        </listitem>
    </itemizedlist>
</para>

<para>
Ist die Leistung immer noch nicht genügend, empfehlen wir, Fragen auf der
"PostgreSQL Performance Mailing Liste" ( <ulink
url="http://www.postgresql.org/community/lists/">
http://www.postgresql.org/community/lists/ </ulink> )  zu stellen. Die
Teilnehmer der PostgreSQL Liste sind sehr freundlich und können
wahrscheinlich helfen.
</para>
</section>

</section>

<section id="performance-tuning-webserver">
<title>Webserver</title>
<para>
Natürlich empfehlen wir mod_perl 2.0 (<ulink
url="http://perl.apache.org/">http://perl.apache.org/</ulink>). Es ist sehr
viel schneller (etwa um den Faktor 100) als pures CGI, braucht aber auch
mehr Speicher. Ihr httpd wird mit mod_perl also größer sein.
</para>

<section id="performance-tuning-webserver-db">
<title>Persistente Datenbankverbindungen</title>
<para>
Sie können die Datenbankverbindung bereits beim Start des Webservers
herstellen lassen. Dies spart ebenso Zeit (siehe auch README.webserver).
</para>
</section>

<section id="performance-tuning-webserver-startup">
<title>Vorgeladene Module - startup.pl</title>
<para>
Nutzen Sie das Start Skript
<filename>scripts/apache2-perl-startup.pl</filename>, um die Perl Module
vorzuladen (siehe README.webserver). Dadurch wird der Webserver schneller
und braucht weniger Speicher.
</para>
</section>
<section id="performance-tuning-webserver-reload">
<title>Perl Module bei Änderung neu laden</title>
<para>
By default Apache::Reload is used in
scripts/apache2-httpd.include.conf. Disable it and you will get 8% more
speed. But remember to restart the web server if you install any modules via
the OTRS Package Manager, or any values in your SysConfig or in
Kernel/Config.pm. Important: this would also mean you can't use the OTRS
Package Manager via the web interface, you need to use the command line
variant - <filename>bin/otrs.PackageManager.pl</filename>.
</para>
</section>

<section id="performance-tuning-webserver-strategy">
<title>Die richtige Strategie wählen</title>
<para>
If you have a larger installation, say over 1,000 new tickets per day and
over 40 agents, it is a good idea to read the chapters on Performance of the
mod_perl User's Guide ( <ulink
url="http://perl.apache.org/docs/2.0/user/index.html"><citetitle>http://perl.apache.org/docs/2.0/user/index.html</citetitle></ulink>
).
</para>
</section>

<section id="performance-tuning-webserver-gzip">
<title>mod_gzip/mod_deflate</title>
<para>
Falls Ihre Bandbreite ein wenig schmal sein sollte, benutzen Sie mod_deflate
für Apache2. Eine HTML-Seite von 45k wird mod_gzip/mod_deflate auf etwa 7k
zusammendrücken. Allerdings wird dadurch die Last auf dem Server erhöht.
</para>
</section>

</section>

</chapter>