PC Strokovnjak

Na pomoč! Apache in mysql sta požrešna!

Objavil: Mitja Herbaj na petek, 27. november, 2009

shorto mi je že pred časom omenil, da mu apache (na precej dobrem serverju) porabi cel CPU in da se na koncu pride celo do tega, da se strežnik ponovno zažene. Problem je zagotovo posledica pomankanja RAM-a. Tako da najprej nadgradite to, če le imate možnost. Če ne pomaga, pa bo tale how-to ravno za vas :) Vsaj če imate debian ali Ubuntu strežnik – drugje pa bo tudi dosti podobno.

S “top” pogledamo porabo apacheja in mysqla. Približno si zapomnimo te številke, da bomo lahko naredili primerjavo. Najlažje je, če si razporedite po porabi rama (shift+m, izhod s q).

Najprej bomo preleteli apache2 konfiguracijo. S tem ne bomo zmanjšali koliko pomnilnika porabi, bomo pa preprečili, da porabi preveč pomnilnika. Najprej bomo staro konfiguracijo shranili.

# cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.back

Sedaj s poljubnim urejevalnikom odprimo konfiguracijsko datoteko in pri nastavitvah nastavimo tele vrednosti.

# nano /etc/apache2/apache2.conf (odpremo konfiguracijsko datoteko.)

Nastavitve naj pa zgledajo tako:

Timeout 45
KeepAlive On
MaxKeepAliveRequests 200
KeepAliveTimeout 3
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 25
MaxRequestsPerChild 2000
</IfModule>

Shranimo in reštartamo apache2.

#apache2ctl restart

Sedaj pa napadimo mysql.

Kot pri apache2-ju bomo najprej naredili varnostno kopijo konfiguracije.

# cp /etc/mysql/my.cnf /etc/mysql/my.cnf.back

S poljubnim urejevalnikom odprimo my.cnf.

# nano /etc/mysql/my.cnf

Lociramo “#skip-innodb” in odkomentiramo vrstico. Laično – odstrani # na začetku.

Potem najdemo skip-external-locking in dodamo

skip-locking

Potem najdemo sekcijo Fine Tuning in popravimo številke, da vse skupaj zgleda nekako takole:

key_buffer = 16K
max_allowed_packet = 1M
thread_stack = 64K
thread_cache_size = 4
sort_buffer = 64K
net_buffer_length = 2K
#max_connections = 100
#table_cache = 64
#thread_concurrency = 10

Reštartamo mysql in voila!

# /etc/init.d/mysql restart

S “top” ponovno preverimo rezultat. Če so se vrednosti zmanjšale, vse čestitke :) Če pa vas zanima še kaj, pa pustite komentar.

Objavljeno v: Triki in nasveti, Članki.

Pusti odgovor