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>
|