WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Optimera webbplats (https://www.wn.se/forum/showthread.php?t=33180)

xsajt 2008-11-10 15:40

Har lite problem med en webbplats som vid vissa operationer tar väldigt långt tid på sig. Kan handla om 10-20 sekunder. Det är inga uppenbara fel i koden och har försökt felsöka med att sätta ut lite alerts här å där. Men det är så mycket kod att det blir väldigt jobbigt att ta reda på felet.
Vet att man i andra språk som ex Java kan köra koden steg för steg och se vad som går segt. Men det är ju inte webbaserat, vilket kan skapa lite problem. Finns det något sätt att göra detta i PHP? Jag är inte så hoppfull men lika bra att chansa om någon vet.

Ha de fint!

DjFaDDe 2008-11-10 16:29

Arbetar din webbplats mot tunga databaser?

hnn 2008-11-10 16:48

Indexera din databas.. Det gör underverk.

Om du använder MySQL, så kör EXPLAIN på frågorna.

xsajt 2008-11-10 17:30

Det är egetnligen inga tunga databaser och tror själv det ligger i phpkodens if satser någonstans. Känns som att när jag kör $_GET och $_POST så segar det. Vet inte om det är att scripten som jag tar emot datan med förutsätter att GET/POST är deklarerade, men så är inte alltid fallet. Kanske kan hjälpa att använda sig mer av isset innan. Vad tror ni om det?

Indexera databasen har jag inte tänkt på, det kan mycket väl snabba upp det lite. Även om jag inte tror att databasen är den stora boven!

DjFaDDe 2008-11-10 18:13

Låter mysko. Jag har inga erfarenheter av att $_GET eller $_POST skulle sega ner det för en. Det kanske finns några skumma loopar som hela tiden ställer frågor mot databasen? Det skulle krävas tiotusentals if-satser om de skulle vara boven i dramat. Till 95% skulle jag vilja säga att problemet ligger i tabellerna och sql-frågorna. Kör indexering och kontrollera sql-frågorna så du inte ser något skumt.

xsajt 2008-11-10 18:44

Ok, men då vet jag iallafall! tack för hjälpen, får ta mig en titt på sqlen.

Clarence 2008-11-10 19:00

Ett par isset lär inte göra någon märkbar skillnad.

Förmodligen är det just några SQL-frågor. Det låter som om det är en färdig programvara du använder och isåfall har du förmodligen också en databas-klass där du kan skriva ut svarstiderna för frågan. Har kontroll över sql-servern kan du annars slå på slow query log.

Är det mot förmodan några dumheter i PHP-koden eller något i den stilen och du dels har väldigt stor kodbas och sedan inte har någon koll på var felet kan finnas kan du använda en PHP debugger. Två gratis sådana är xdebug (xdebug.org) och DBG (dd.cron.ru/dbg).

Magnus_A 2008-11-10 20:20

Om du ligger på webhotell finns det två saker att tänka på. För det första är många mysql-installationer felkonfigurerade och måste slå upp dns hela tiden. Det märker man på att det tar upp till tio sekunder innan sidan laddas.
Nästa grej som kan spöka är överlastade servrar på webhotellen. Dina frågor kastas ut ur cachen och måste läsas in igen. Det tar också tid. Kolla hur snabbt det går lågtrafiktid, typ kl 6 söndag morgon.

xsajt 2008-11-10 21:09

Ok, har egen server dedikerad men problemet kanske kan vara att jag har dåligt med minne iden. Har en del sidor och ligger bara på 1gig i minne nu. Kanske inte är så bra :D

eg0master 2008-11-11 08:04

Jag tror faktiskt inte 1GB minne är ditt problem. Som flera sagt tidigare; kolla dina SQL satser. och när du gjort det så kollar du dina SQL satser och sedan dina SQL satser. Det är en mycket stor sannolikhet att ditt problem finns där.

Och et annat generellt tips på vägen: Optimera aldrig för vad du tror, optimera det du vet är ett problem.

coredev 2008-11-11 09:26

Vad du är ute efter är en Profiler.. Med en profiler kan du se vilka funktioner / vilken rad som äter tid. Det är dock avancerade verktyg och du bör vara mycket kunnig i både flinux, php och apache för att få till det.

Men i ditt fall är det säkert en SQL-fråga som spökar. Vad du kan göra är att ersätta alla dina mysql_query mot en egen global funktion där du loggar alla frågor + response time.

dotvoid 2008-11-11 15:33

Det är en onödig liten missuppfattning att det inte går att debugga PHP likt andra programmeringsspråk. Kolla in http://xdebug.org/. Går att integrera i Eclipse/PDT. Funkar finfint. Om du vill betala så har Zend Framework integrerade produkter för ca 300€ om jag inte minns priset helt galet. (Dock är Zend IDE lite långsammare än PDT trots att de bygger på samma bas av Eclipse).

xsajt 2008-11-11 16:46

Varför jag inte tror det är en sql fråga är för att det inte görs så mycket frågor i koden. Är mest phpkod för bildbehandling vilket jag tror käkar upp minne.
Ska kolla lite på xdebug som du säger, tack!

crazzy 2008-11-11 18:25

Citat:

Originally posted by xsajt@Nov 11 2008, 16:46
Varför jag inte tror det är en sql fråga är för att det inte görs så mycket frågor i koden. Är mest phpkod för bildbehandling vilket jag tror käkar upp minne.
Ska kolla lite på xdebug som du säger, tack

Käkar minne kan jag lova att det gör. Skrev ett galleri med php-gd och testade på min Sun ultra 10 med bara 512mb ram. Gick slöare än win xp på en 286:a.

eg0master 2008-11-12 10:20

Citat:

Originally posted by xsajt@Nov 11 2008, 17:46
Varför jag inte tror det är en sql fråga är för att det inte görs så mycket frågor i koden. Är mest phpkod för bildbehandling vilket jag tror käkar upp minne.
Ska kolla lite på xdebug som du säger, tack!

Varför sa du inte det på en gång :P
Grundtipset består dock - optimera bara det du vet behöver optimeras. Jobba inte i blindo!

Magnus_A 2008-11-12 10:31

Då var det inte Mysql som var problemet denna gång.
För den som ändå vill optimera mysql rekommenderas följande script:
Mysql Tuning Primer

xsajt 2008-11-12 10:41

Citat:

Originally posted by eg0master@Nov 12 2008, 11:20
Grundtipset består dock - optimera bara det du vet behöver optimeras. Jobba inte i blindo!
Minne kan väl aldrig skada :)
Det kan faktiskt lösa ett annat problem med att min smtp server inte tar emot vissa mail och är allmänt seg, hoppas det!

eg0master 2008-11-12 14:59

Citat:

Ursprungligen postat av xsajt
Citat:

Ursprungligen postat av eg0master
Grundtipset består dock - optimera bara det du vet behöver optimeras. Jobba inte i blindo!

Minne kan väl aldrig skada :)
Det kan faktiskt lösa ett annat problem med att min smtp server inte tar emot vissa mail och är allmänt seg, hoppas det!

Att bara stoppa in mer minne är som att ta en värktablett när du har tandvärk. Det hjälper för stunden, men du adresserar inte det egentliga problemet vilket riskerar att bli ohanterbart i framtiden.

martine 2008-11-13 17:43

Om det nu handlar om problem vid GET/POST så kan det handla om enormt ogenomtänkta regexp:ar som loopar på något sätt. Med dåligt skrivna regexp:ar kan du utan vidare få php att time-out:a vid medelstora textmängder. Men antagligen och mer sannolikt är att det är sql-frågor som är dåligt genomtänkta (loopar) eller inte är indexerade.

emilv 2008-11-13 18:15

Gör du bildbehandling varje gång sidan laddas? Bildbehandlingen bör bara göras en gång och sedan cachas. Förslagsvis gör du behandlingen redan när bilden laddas upp.


Alla tider är GMT +2. Klockan är nu 04:52.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson