FAQ |
Kalender |
2015-05-20, 13:04 | #1 | ||
|
|||
Medlem
|
Har en webbsida som kraschar allt för ofta. Har kontaktat webbhotellet som varje gång kan konstatera att det berott på överbelastat RAM. Och så har dom gjort några justeringar som kanske hjälper ett tag men sen uppkommer samma problem igen.
Och jag bara letar och letar efter verktyg för att kunna identifiera problemen. Webhotellet har installerat New Relic åt mig på servern så jag kan gå in via New Relic och se långsamma databasfrågor m.m. Men tyvärr kan ju samma databasfråga vara långsam en gång men supersnabb i övrigt beroende på hur belastad servern är. I New Relic kan man inte se hur många requests servern eller anslutningar databasen hade under tiden en fråga var långsam. Det här måste ju vara saker som alla webbutvecklare vill veta. Det måste ju finnas verktyg för att ta reda på exakt vad som belastar servern. Hur många, vilka, och hur tunga requests som kördes vid tillfället innan en krasch. Är det något verktyg som passerat mig förbi ögonen bara? Eller vad använder folk? Någon som förstår mitt problem? Känner en viss frustration över detta. |
||
Svara med citat |
2015-05-20, 13:32 | #2 | ||
|
|||
Flitig postare
|
Citat:
|
||
Svara med citat |
2015-05-20, 13:33 | #3 | ||
|
|||
Medlem
|
|||
Svara med citat |
2015-05-20, 13:37 | #4 | ||
|
|||
Medlem
|
Övervaka db connections samt långsamma queries. Det är troligen något som triggar antingen för många db kopplingar, eller queries som håller i sig tills max connections slås i och då stänger sidan.
Du kan ju även prova slå på display_errors = on, så du faktiskt ser hur det felar med error-koder. |
||
Svara med citat |
2015-05-20, 13:39 | #5 | ||
|
|||
Medlem
|
Citat:
|
||
Svara med citat |
2015-05-20, 13:42 | #6 | ||
|
|||
Flitig postare
|
Citat:
Queryn cache:as med andra ord. Hur långt tid tar en långsam query? |
||
Svara med citat |
2015-05-20, 13:50 | #7 | ||
|
|||
Medlem
|
När jag går in i New Relic > PHP Application och klickar på senaste "Critical" noteringen och klickar på en av de högsta staplarna innan den röda markeringen börjar i diagrammet. Alltså bland de senaste som hände innan servern la ner antar jag? Så klickar jag på den långsammaste queryn i nästa fönster. Då står det att den queryn med längst responstid tog 181,000 ms. Det är ju alltså 181 sekunder. Tar den alltså så lång tid, egentligen? Och att när den annars körs snabbt så är själva queryn alltså cachead?
Senast redigerad av Pettolajnen den 2015-05-20 klockan 14:00 |
||
Svara med citat |
2015-05-20, 16:12 | #8 | ||
|
|||
Supermoderator
|
Det är i sig positivt, man ska undvika queries som inte kan cacheas så långt det är möjligt. Du får köra queryn utan cache om du ska kunna jämföra körningarna. Om du kan identifiera en riktigt långsam query så ligger problemet sannolikt där. Förhoppningsvis kan du då snabba upp den genom att bara lägga till ett lämpligt index (och/eller skriva om queryn om det är nödvändigt). Att blind lägga till index för alla fält i sin query som föreslås av New Relic är kanske inte rätt väg att gå
__________________
Full-stack developer, free for smaller assignments Senast redigerad av tartareandesire den 2015-05-20 klockan 16:18 |
||
Svara med citat |
2015-05-20, 16:21 | #9 | ||
|
|||
Medlem
|
När ni talar om att cachea en query. Menar ni då att spara datan i t ex memcache, eller menar ni någon inbyggd cache som används i databasen? För jag använder ju memcache på sajten. Så oftast går det ju snabbt att hämta data. Men det registreras ändå ibland väldigt långsamma databasfrågor. Antar att det är när en memcache-item raderas och ny data ska sparas, då den kör en riktig databasfråga mot databasen. Det är förresten bara sånna jag talar om, riktiga databasfrågor mot databasen. Det är sånna som ibland går väldigt snabbt och ibland väldigt långsamt.
|
||
Svara med citat |
2015-05-20, 16:37 | #10 | |||
|
||||
Bara ett inlägg till!
|
Har du ingen error-hantering implementerad i din PHP? Får du ett fatalt fel bör du kunna fånga det med följande metod:
http://stackoverflow.com/a/2146171 I värsta fall får du väl begränsa access till din webbplats (t.ex. via ett filter i .htaccess) och slå på visning av fel i produktion och försöka provocera fram felet. Att en databasfråga skulle generera fatala fel låter inte bra. Du bör ju sätta limit på alla frågor som kan generera mer data än vad du har minne till. |
|||
Svara med citat |
Svara |
|
|