Maximaler RAM für MySQL5

MySQL, PostgreSQL, SQLite
theomega
Userprojekt
Userprojekt
Posts: 696
Joined: 2003-01-27 14:36

Maximaler RAM für MySQL5

Post by theomega » 2006-06-27 16:01

Hallo Leute,
ich habe folgendes Problem: Mein Server hat 2GB Ram und den Kernel 2.6.16-hardened-r7 auf einem Gentoo ~x86. Auf diesem Server läuft ein MySQL5.0 Server. Ich habe der einfachheithalber einfach eine Konfiguration von einem Debian64-bit MySQL4.0 Server übernommen. Dabei ist die Konfiguration so angepasst das der MySQL ca. 1,8GB Ram allokiert (jedoch selten wirklich benutzt).
Mit dieser Konfiguration bekomme ich auf dem Gentoo 32bit System aber beim Starten des Server folgende Warnungen:

Code: Select all

^G/usr/sbin/mysqld: Out of memory (Needed 744484864 bytes)
^G/usr/sbin/mysqld: Out of memory (Needed 558363648 bytes)
^G/usr/sbin/mysqld: Out of memory (Needed 418771968 bytes)
Danach startet der Server jedoch wie gehabt, nur berichten die Benutzer von total komischen Fehlern (Inno-DB-Daten werden nicht gefunden). Ich habe nun die Buffer-Einträge in der Konfig immer weiter gesenkt und siehe da: die Fehler verschwinden wenn der Server unter 1GB allokiert.

Meine Frage: Ist das normal bei einem 32bit OS? Wäre ja echt ärgerlich, weil was mach ich dann mit dem verbliebenen GB, das ganze ist ein ausschließlicher Datenbank-Server! HighMem-4GB Support ist im Kernel aktiviert, falls das hilft. Ich dachte eigentlich das Limit sei 2GB pro Prozess!

Wer hat mir nen Tipp?

Danke
TO

captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Maximaler RAM für MySQL5

Post by captaincrunch » 2006-06-27 16:15

Siehe http://pax.grsecurity.net/docs/segmexec.txt
While Linux effectively does not use segmentation by creating 0 based and
4 GB limited segments for both code and data accesses (therefore logical
addresses are the same as linear addresses), it is possible to set up
segments that allow to implement non-executable pages.

The basic idea is that we divide the 3 GB userland linear address space
into two equal halves and use one to store mappings meant for data access
(that is, we define a data segment descriptor to cover the 0-1.5 GB linear
address range) and the other for storing mappings for execution (that is,
we define a code segment descriptor to cover the 1.5-3 GB linear address
range). Since an executable mapping can be used for data accesses as well,
we will have to ensure that such mappings are visible in both segments
and mirror each other. This setup will then separate data accesses from
instruction fetches in the sense that they will hit different linear
addresses and therefore allow for control/intervention based on the access
type. In particular, if a data-only (and therefore non-executable) mapping
is present only in the 0-1.5 GB linear address range, then instruction
fetches to the same logical addresses will end up in the 1.5-3 GB linear
address range and will raise a page fault hence allow detecting such
execution attempts.
http://en.wikipedia.org/wiki/PaX_(Linux) wäre dir auch sehr ans Herz zu legen.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc

theomega
Userprojekt
Userprojekt
Posts: 696
Joined: 2003-01-27 14:36

Re: Maximaler RAM für MySQL5

Post by theomega » 2006-06-27 16:17

Oki, danke, aber kann man diese Tatsache ändern? Ich mein GRSec und PAX wollte ich eigentlich nutzen.

theomega
Userprojekt
Userprojekt
Posts: 696
Joined: 2003-01-27 14:36

Re: Maximaler RAM für MySQL5

Post by theomega » 2006-06-27 18:03

Hab die Kernel-Option gefunden, danke