![]() |
Hej
Vi har en hemsida med ca 5000 unika besökare om dagen. Vi kör denna på en HP dual XEON 3.0 64-bit server med 2GB RAM och RAID0 SCSI diskar. Mjukvaran är Debian Sarge, PHP5, Apache2 (MPM prefork) och MySql. Allt funkar men jag upplever att servern är seg och skulle behöva lite tips från någon som kan konfigurera en server med ovanstående setup. Själv kan jag väldigt lite, detta är min första installation så jag har säkert gjort en massa nybörjartabbar. Det är precis som om servern bara klarar att hantera en request åt gången, med det menar jag att den inte svarar på något annat innan den requesten är slutbehandlad. Om jag exempelvis kör igång ett script som gör lite databashantering så svarar inte servern på andra requests. Sedan är minnet upptaget hela tiden, även när servern är nystartad så är minnet upptaget till typ 90%. Kan detta bero på att vi kör Apache mpm-prefork som ej verkar ha stöd för threading. mpm-worker verkar ha det men funkar ej PHP. Kolla mer här: http://www.debianhelp.co.uk/apachephp5.htm Kan det göra något med att vi kör mod_revrite? Är det någon inställning man behöver göra för att lagra/rensa cachning av sidor eller liknande? Jag testade minnet och diskarna i servern och de funkar som de skall enligt diverse analysprogram. tacksam för tips! /jalle |
I din httpd.conf bör det finnas ett <IfModule prefork.c></IfModule>-block. Kolla upp vad du har för inställningar där till att börja med. Prefork som sådant ska i alla fall inte vara problemet.
|
Citat:
StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 20 MaxRequestsPerChild 0 </IfModule> vad ska det vara här? sedan har jag kollat upp lite annat oxå, jag misstänkar att apache kanske inte utnyttjar båda processorerna så jag körde: cat /proc/cpuinfo och fick då fram följande: processor : 0 vendor_id : GenuineIntel cpu family : 15 model : 4 model name : Intel® Xeon CPU 3.00GHz stepping : 1 cpu MHz : 3000.253 cache size : 1024 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 5 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm pni monitor ds_cpl cid bogomips : 5989.99 kan du se något som är fel i dessa inställningar och i så fall, vad skall ändras? mvh /ed |
Citat:
vår httpd.conf innehåller bara följande: # This is here for backwards compatability reasons and to support # installing 3rd party modules directly via apxs2, rather than # through the /etc/apache2/mods-{available,enabled} mechanism. # #LoadModule mod_placeholder /usr/lib/apache2/modules/mod_placeholder.so mvh /ed |
Hmm du måste kompilera in en ny kärna med SMP stöd. föresten har ni HT påslaget på cpun? så fall acpi stödet med. som de ser ut där så nyttjar den bara en cpu.
|
Citat:
/ed |
Kompilerar man Apache2 själv så heter config-filen httpd.conf, men jag gissar att du installerat från paket med apt-get och saker heter annat då. Värdena för prefork ser i alla fall inte ut att vara någon felkälla.
Har du aktiverat mod_status? Med den aktiverad går det att se var Apache har för sig för stunden vad gäller antalet aktiva workers, request etc. Kanske kan ge nån ledtråd till varför saker är sega. |
Oki, har installerat mod_status och får följande output:
Server Version: Apache/2.0.54 (Debian GNU/Linux) mod_ssl/2.0.54 OpenSSL/0.9.7e Server Built: Jul 28 2006 09:04:55 -------------------------------------------------------------------------------- Current Time: Thursday, 24-Aug-2006 12:14:07 CEST Restart Time: Thursday, 24-Aug-2006 12:11:14 CEST Parent Server Generation: 0 Server uptime: 2 minutes 53 seconds 11 requests currently being processed, 5 idle workers .WKW.W__.KC_K_.W....C......W_..C.................. .............. .................................................. .............. .................................................. .............. .................................................. .............. en annan konstig sak är att det tog minst 5 minuter att göra en forcad restart av apache2, något som normalt bara borde ta några sekunder eller? några uppslag? tack igen /ed |
Om du har HT påslagen bör du se i BIOS sen kanske dmesg kan säga något om det med.
kör en uname -a så ser du va du har för kernel o så.. men antar du kör debian standard dvs 2.6.8-2-386. |
jag skall kolla upp lite saker och göra en ominstallation. återkommer med mer info. klart är i varje fall att vi Apache2 med bara en processor, jag antar att det är denna guiden som vi skall följa:
http://www.skolelinux.no/~klaus/sarge/x2003.html tack för hjälpen så länge! /ed |
Ja, den går med att göra om du vill köra med debians 2.6.8-2-smp kernel
annars om ni har någon kunnig rekommenderar jag att köra in den nyaste 2.6kerneln från www.kernel.org |
eftersom vi inte har någon större koll på detta så installerade vi enligt den guiden. jag får upp två CPU och den visar fulla minnet på 2GB när jag kör cat /proc/cpuinfo
det skumma är då att minnet är helt upptaget, det står så här: top - 08:59:58 up 10:01, 1 user, load average: 0.40, 0.26, 0.26 Tasks: 54 total, 1 running, 53 sleeping, 0 stopped, 0 zombie Cpu0 : 1.0% us, 0.3% sy, 0.0% ni, 98.3% id, 0.3% wa, 0.0% hi, 0.0% si Cpu1 : 21.9% us, 10.4% sy, 0.0% ni, 63.6% id, 4.0% wa, 0.0% hi, 0.0% si Mem: 2076380k total, 2044536k used, 31844k free, 240456k buffers Swap: 2714944k total, 0k used, 2714944k free, 601860k cached är det verkligen normalt att minnet skall vara helt upptaget? /ed |
hrmm om ni fortsätter i top ser ni vilket som har mest memuse..
den brukar iofs ta mycket minne o sen buffra det. men detta såg inte friskt ut.. jag tror på en felaktig my.cnf(sql) eller apache som spökar. min top.. CPU states: 1.8% user, 0.0% nice, 2.0% system, 0.2% interrupt, 96.1% idle Mem: 407M Active, 1186M Inact, 265M Wired, 92M Cache, 112M Buf, 52M Free Swap: 2048M Total, 13M Used, 2035M Free |
här är listan över processer:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 24406 www-data 16 0 21468 9688 17m S 0.7 0.5 0:00.52 apache2 24224 www-data 17 0 21480 9756 17m S 0.3 0.5 0:01.07 apache2 1 root 16 0 1504 512 1352 S 0.0 0.0 0:00.57 init 2 root RT 0 0 0 0 S 0.0 0.0 0:00.01 migration/0 3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 4 root RT 0 0 0 0 S 0.0 0.0 0:00.01 migration/1 5 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1 6 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 events/0 7 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 events/1 8 root 12 -10 0 0 0 S 0.0 0.0 0:00.00 khelper 9 root 7 -10 0 0 0 S 0.0 0.0 0:00.00 kacpid 39 root 5 -10 0 0 0 S 0.0 0.0 0:00.03 kblockd/0 40 root 5 -10 0 0 0 S 0.0 0.0 0:00.02 kblockd/1 50 root 15 0 0 0 0 S 0.0 0.0 0:00.29 pdflush 51 root 16 0 0 0 0 S 0.0 0.0 0:00.00 pdflush 52 root 16 0 0 0 0 S 0.0 0.0 0:00.33 kswapd0 vad jag kan se så är det ingenting som tar upp något minne knappt. detta är infon i vår my.cnf som inte är bortkommaterat: [client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /var/tmp language = /usr/share/mysql/english skip-external-locking old_passwords = 1 bind-address = 127.0.0.1 key_buffer = 16M max_allowed_packet = 16M thread_stack = 128K query_cache_limit = 1048576 query_cache_size = 16777216 query_cache_type = 1 log-bin = /var/log/mysql/mysql-bin.log expire-logs-days = 20 max_binlog_size = 104857600 #binlog-do-db = include_database_name #binlog-ignore-db = include_database_name skip-bdb [mysqldump] quick quote-names max_allowed_packet = 16M [mysql] #no-auto-rehash # faster start of mysql but no tab completition [isamchk] key_buffer = 16M något som är galet? /ed |
Kul tråd. WN i ett nötskal. Killen har grymt mycket överkapacitet i form av CPU-kraft så jag förstår inte varför det ens är värt att lägga ner tid på att bygga en SMP-kernel.
eddman: Kolla upp vad inställningarna i blocket <IfModule prefork.c> betyder samt keepalive så har du svaret varför inte fler kan kan surfa samtidigt. |
hej kullervo,
ja, jag vet att jag inte är någon hacker på linuxservrar:) kan du inte ge mig en hint på vad jag skall ändra i configen för att det ska funka fint? så här ser den ut idag: <IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 20 MaxRequestsPerChild 0 </IfModule> /ed |
Citat:
<IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule> |
Eftersom du har massor med minne så antar jag att det är ok om en hel del går åt till apache. Någonting liknande borde funka hyffsat:
<IfModule prefork.c> StartServers 200 MinSpareServers 10 MaxSpareServers 30 MaxClients 200 MaxRequestsPerChild 0 </IfModule> Sen sätter du KeepAliveTimeout till 10 (vilket är högt men eftersom du har mycket minne har du råd med att apache har många processer igång och drar därmed en hel del minne). MaxClients bestämmer hur många apache2-processer som får vara igång samtidigt. Du kan se antalet som är igång just nu genom att köra: ps -e | grep apache2 | wc -l Om den drar igång närmare 200 processer under högtrafik bör du öka MaxClients eller sänka KeepAliveTimeout. Om du kör med persistent connections för mysql bör du se upp för då kommer den hålla en anslutning mot mysql per apache-process. Du måste alltså dels tillåta lika många mysql-anslutningar som apache-processer och dels måste du se till att det inte kommer dra för mycket minne så att burken börjar swappa eller att något annat blir lidande. Du bör läsa i manualen om hur det fungerar så du har koll på grejerna. |
kullervo: klart det är bättre o köra in SMP kerneln. om du syftade på mitt inlägg om att han skulle ha smp. om man har dual cpu varför ska han då bara nyttja ena?
låter jävligt dumt köpa en dual om du inte ska nyttja den.. |
jag tror dock inte att det är någon med ifmodule som strular, det lär vara något större/allvarligare. Jag antar detta eftersom det dels tar 10 min att boota om servern och nästan lika lång tid att köra en forcad reboot av Apache.
finns det någon bra logg fil där man kan kolla om det är något fel? det får nog bli en ominstallation av apache, mysql och php. får man bort allt med apt-get remove? försvinner alla configurations inställningar av dessa program oxå eller måste man ta bort något manuellt? tack för er hjälp! /ed |
ja, vi använder mysql_pconnect.
När jag kollar på servern med top kommandot så ser jag ju inte alla processer, mitt fönster räcker inte till och jag vet inte hur jag skall se resten under. Men det är helt klart mer apache2 processer än det är mysql. Jag ser bara två mysql processer: 4253 root 23 0 2512 1240 2380 S 0.0 0.1 0:00.00 mysqld_safe 4290 mysql 15 0 144m 40m 8628 S 0.0 2.0 0:02.87 mysqld Kan detta vara orsaken till att två saker inte kan utföras samtidigt på servern? Att om en apache2 process använder mysql så måste andra apache2 processer vänta till den första är klar osv? /ed |
Alla tider är GMT +2. Klockan är nu 04:16. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson