Diagnostiser WordPress-ytelsesproblemer med New Relic

Hva du skal skape

Denne opplæringen fortsetter der vi sluttet seg i Bruke New Relic til å overvåke WordPress Performance. Her vil jeg gi deg en konseptuell oversikt over WordPress-ytelsen og veilede deg gjennom å bruke New Relic for å undersøke ditt eget nettsteds ytelse.

Hvis du kom hit fra Optimaliser WordPress med Varnish og W3 Total Cache-opplæringen, har du allerede et ganske godt optimalisert WordPress-fundament. Hvis ikke, kan du gå tilbake og se gjennom denne artikkelen.

Bruke New Relic Med WordPress

WordPress er et kraftig open source blogging system som kan støtte både små individuelle blogger og større nettsteder for store media organisasjoner. Men faktisk kjører WordPress bra, og skalering det med hell og rimelig, krever en stor grad av raffinement.

New Relics ytelsesovervåkingstjenester gir en utmerket måte å sikre at WordPress-konfigurasjonen fortsetter å fungere jevnt og effektivt.

Merk: New Relic advarer om at tjenestene er best brukt til å optimalisere WordPress på dedikerte servere, ikke virtuelle eller delte servere, som de som tilbys av mange skybaserte leverandører. Hvis du kjører WordPress på en delt vert, kan New Relic kanskje ikke være så nyttig for deg som for nettsteder som kjører på dedikerte servere.

Hvis du vil lære mer om New Relic før du går inn i denne oppføringsguiden, har Tuts + et bredt utvalg av artikler på sine tjenester.

Hva gjør WordPress raskt eller sakte?

I 2013 skrev Frederick Townes, skaperen av den gratis W3 Total Cache WordPress-plugin, et blogginnlegg for New Relic som beskriver aspekter av ytelse vi må vurdere: WordPress Performance Optimization med New Relic. Det er et utmerket sammendrag som jeg vil vurdere.

Townes fremhever kjerneområdene som vi må fokusere på:

1. Disk ytelse. En ikke-delt lokal disk vil alltid gi best mulig og pålitelig ytelse. For eksempel bruker en vert som tilbyr SSD-stasjoner eller høyhastighets harddisker, ideelt.

2. MySQL Query Cache. Spørringsbufferen beholder resultatene for vanlige databasespørsmål og kan returnere resultatene umiddelbart uten å måtte utføre dem flere ganger. Townes anbefaler at du kjører MySQLTuner for å hjelpe deg med optimal tuning av databasekonfigurasjonen.

3. Bruk av spørringer av WordPress-temaene og pluginene. Ut av boksen er WordPress konfigurert til å kjøre bra, men når vi legger til plugins og temaer fra tredjeparter, kan vi løpe inn i en rekke dårlig kode som kan føre til ytelsesproblemer.

4. Filstørrelse på WordPress-temaene og pluginene. Redusering av filstørrelse og antall filer (og dermed HTTP-transaksjoner) har en dramatisk innvirkning på brukernes opplevelse med nettstedet ditt. Dessverre kan ikke alle Cascading Style Sheets (CSS) eller JavaScript (JS) enkelt konsolideres og minimeres.

5. Optimalisering av PHP, som er relativt sakte. Raskere versjoner av PHP som HHVM kan være egnet for WordPress i fremtiden, men jeg har lest at den ikke er stabil for denne oppgaven. I mellomtiden tilbyr Townes en liste over forslag: Reduser minnekortet på skriptene dine, bruk autoload, bruk memorisering, unngå sløyfer, reduser kjøretid, minimer antall filer som er åpnet for å redusere samtaler til disk og minnebruk, og bruk inkludere og krever heller enn include_once og require_once.

6. Bruke Opcode Caching for eksempel APC, et open source-caching-rammeverk for PHP-kode. Sier Townes: "APC beholder den tolkede (kjørbare) versjonen av koden din i minnet, slik at forespørsler om det ikke må tolkes igjen."

"WordPress" -objektbufferen er hvor mye magi skjer. Det finnes ulike grupper av objekter som genereres av WordPress når det behandler sideforespørsler. Disse gruppene tjener mange formål, og avhengig av hvordan du bruker WordPress, er en meget betydelig ytelsesøkning realisert ved vedvarende å lagre objektene ved hjelp av memcached eller APC backend butikker for eksempel. "

Townes 'W3 Total Cache implementerer dette på sidens caching nivå, slik at scenarier der deler av en gitt side fortsatt kan genereres av PHP, mens større deler av siden som ikke er endret, blir cached og ikke regenerert.

"W3TC vil tillate deg å velge en datalager annet enn MySQL som memcached, som er designet for høyhastighets tilgang fra flere applikasjonsservere. Så i stedet for hver sideforespørsel som allerede trenger å hente respektive informasjon om besøkende eller andre dynamiske elementer, MySQL er nå i stand til å fokusere (og justeres for) bare de dynamiske delene av malene dine. "

Sier Townes, "Fragment caching vil redusere kjøringen din etter størrelsesorden."

7. Bruke Page Caching. Den mest fordelaktige teknikken for å skalere et typisk nettsted er caching av sider. I stedet for å treffe hele stakken med hver sideforespørsel - WordPress, Theme, Plugins, HTML og MySQL - henter vi bare statisk HTML fra web cachen, ofte fra minnet. Trafikkskalering på et ukrysset WordPress-område kan ta det ned i løpet av sekunder, mens trafikkskalering på forhåndskrevne HTML-filer fra en hurtigbuffer er massivt skalerbar.

Sier omstendigheter: "Omvendte proxyer gir ofte caching som sitter mellom webapplikasjonen og det offentlige Internett. Målet er å lette belastningen på webserverne bak dem. Omvendte proxyer er optimalisert for å returnere innhold generert av den underliggende applikasjonen. Varnish, Nginx eller til og med Apache kan konfigureres for å gi omvendt proxy-funksjonalitet. " 

Jeg bruker oftest Larn med Apache og W3 Total Cache i kombinasjon for å skala WordPress. Hvis du er interessert i disse konfigurasjonene, sjekk ut: Optimalisering av WordPress med Varnish og W3 Total Cache (Tuts +).

8. Content Delivery Networks (CDNs) er skybaserte caching-tjenester for ofte brukte filer og medier. Townes sier: "Med en CDN spiller det ingen rolle hvor nettstedet ditt er vert. Hvis du har besøkende i andre deler av verden, cacher CDN det innholdet nær dem og barberer sekunder i aggregat ut av den totale sidelastetiden for nettstedet ditt. "

Nå som vi kjenner noen av hovedkonseptene av hva som går ut på at WordPress går bra, la oss se på hvordan New Relic kan hjelpe oss.

Bruke New Relic til å overvåke WordPress

New Relic er en ytelsesovervåkningstjeneste som kjører med en rekke server- og språketeknologier, inkludert PHP, som gjør det flott for å optimalisere WordPress.

New Relic gir ytelsesovervåking av fullstabelen - hva slutbrukerne opplever - men gir også detaljert serverovervåkning. Sier Townes, "New Relic gjør det trivielt å spre spinnene i ditt miljø."

Når du kjører New Relic på serveren din, kan du få detaljerte resultatovervåkingsgrafer og statistikk om serveren din og PHP, inkludert: svartid, Apdex-poengsum (forholdet mellom tilfredsstillende responstider og utilfredsstillende responstider), gjennomstrømning (forespørsler per minutt) , webtransaksjoner f.eks API-forespørsler fra tredjeparter, feilfrekvens, nyere hendelser og serverinformasjon.

Videre overvåker New Relic Browser hele livscyklusdataene - langt utover den første sidebelastningen. For hver sluttbrukersidebelastning fanger New Relic Browser:

  • Tid brukt i frontenden (nettleser)
  • kode og hendelser utført i nettleseren (JavaScript, Ajax og sluttbrukerinteraksjoner)
  • Tid brukt i bakenden (nettverk og nettapp)
  • geografisk opprinnelse
  • nettlesertype og -versjon og operativsystem

Du kan se dataene globalt på tvers av alle brukere og se det skåret og krysset av nettside, nettleser, brukerøkt og sted.

Jeg dekket New Relic Browser mer fullstendig i Front End Monitoring med New Relic Browser (Tuts +).

New Relic Synthetics lar deg sette opp vanlige tester av nettstedet ditt fra hele verden for å varsle deg umiddelbart om problemer når de oppstår. Jeg skal dekke Synthetics i en kommende opplæring, så besøk min Tuts + instruktørside for å se når den utgives.

Bruke New Relic Med W3 Total Cache

Jeg forklarte registrerings- og installasjonsprosessen for integrering av W3 Total Cache New Relic-tjenesten i denne opplæringen: Bruke New Relic til Monitor WordPress Performance (Tuts +).

Fra WordPress Administration Console, klikk Ytelse> Overvåking. Klikk for å registrere deg for en gratis konto. Kopier detaljene for API- og lisensnøkkelen til W3 Total Cache-innstillingspanelet nedenfor:

Aktivering av New Relic på serveren din sørger for overvåking fra W3TC dashbordet, som vist nedenfor:

For flere detaljer, kan du besøke New Relic nettside og logge på kontoen din.

Overvåker WordPress-ytelsen

Vurderer serverytelse

På høyt nivå gir overvåkingen av New Relic Server deg oversikt over CPU-bruk, minnebruk og disk og nettverk I / O, samt informasjon om maskinvare og mest aktive prosesser. Dette kan gi deg et fugleperspektiv av hva som skjer med konfigurasjonen og varsle deg om noen betydelige problemer:


Prosessen-fanen viser deg minnet og CPU-utnyttelsen av hver prosess:

Du kan også se en historie med varsler, som indikerer røde flagg med nettstedets ytelse:

Evaluere WordPress Performance

New Relic er nyttig for å evaluere WordPress-ytelse på tre viktige måter:

1. Apdex. New Relic bruker Apdex-scoring for å hjelpe deg med å evaluere hvor godt Wordpress-programmet din utfører for sluttbrukerne dine, ifølge en måling av bransjestandard. Dette hjelper deg med å gi bedre data for feilsøking, og få en klarere forståelse av hvilken prosentandel av brukerne du er frustrert eller fornøyd med. Apdex-scoring gir også mer spesifikk sammenheng enn en generell "siden er sakte" klage som kanskje ikke engang kommer til deg før timer etter hendelsen. Apdex gir deg også en mer objektiv måte å måle hvor godt ytelsesforbedringene dine blir følt av dine faktiske brukere.

2. MySQL-ytelse. Wordpress plugins og temaer kan misbruke din mySQL database. Du kan finne ut hvilke som forårsaker problemer ved å se på sakte SQL i New Relic. For eksempel kan du se at valgene på wp_terms, som brukes til kategorier og koder, kan spise opp 20% av den totale databasetiden din. Du kan også merke langsomme INSERT-setninger som kan forbedres med en godt plassert indeks eller et raffinert søk.

3. Overvåke ytelsen til Tredjeparts plugins og APIer. Ved hjelp av sosiale medier plugins, overvåking plugins og andre kule widgets er veldig enkelt i WordPress, men det kan ikke være umiddelbart opplagt hvordan disse tredjepartsavhengighetene påvirker bloggen din eller markedsføringsstedet. New Relic gjør at du kan se eksterne serviceanrop "rullet opp" for en mer helhetlig visning, og du kan også overvåke responstidene fra de tredjepartene i hver av webtransaksjonene New Relic-fangster.

Vi kan bruke New Relic's Browser til å studere WordPress-ytelse mer detaljert. Du vil spesielt se etter kode fra våre temaer og plugins som kan påvirke ytelsen negativt.

Dashbordet gir deg en oversikt over sidetidstiden fordelt på Apdex og gjennomstrømning:

Her er en zoomet på grunn av min Apdex-poengsum i løpet av de siste 24 timene:

Du kan også vise ytelse ved sidevisning:

Når du driller ned, kan du se ytelsen til de enkelte filene som lastes inn av nettstedet ditt. Du vil se etter tema eller plugin-filer som tar en mistenkelig tid:

MySQL analyse

Ny reliksserverovervåking kan også følge ytelsen til MySQL-spørringene:

Du kan drill ned for ytterligere detaljer:

Og diagnostiser de tregeste spørsmålene:

Dette kan være spesielt nyttig for å identifisere sakte spørringer opprettet av dårlig plugin kode.

Session Traces

Sessionsspor gir deg synlighet i hele livssyklusen til en nettside, inkludert brukerinteraksjoner, innlasting av aktiva, iframes, tid brukt til å vente på Ajax-samtaler, feil og mer sporing av den virkelige opplevelsen av en ekte bruker fra start til slutt. 

Ikke bare identifiserer spor problemer, men de kan også vise deg hva brukeren gjorde før og etter at feilen oppstod. 

Her er en detaljert drill ned i øktene dine. Dette kan bidra til å vurdere ytelsen til koden innenfor temaer, samt plugins: 

Sessionsspor hjelper deg å forstå:

  • hvordan brukerne opplever sideloaden din, inkludert tid til DOM-belastning, tid som venter på Ajax-forespørsler om å fullføre, og brukerens samhandling med siden
  • sekvensen av JavaScript og nettleser hendelser, som tar lengre tid enn andre, og når hver hendelse oppstår
  • hvor flaskehalsene oppstår, og hva som kan forårsake dem
  • hvorfor en sidebelastning kan være langsommere enn andre, ved å gi sammenheng for individuelle hendelser i løpet av en økt

Du kan se nøyaktig hva som skjedde i en bestemt brukeres nettleser til enhver tid. Sessionsspor gir deg detaljert og intuitiv visualisering av alle hendelser i brukerens økt, og kan bidra til å finne problemområder og enkelt identifisere løsninger. Les mer om bruk av øktspor.

Ajax og JavaScript

Ajax-siden lar deg se hva som skjer med eventuelle interaktive samtaler du har på siden, og hjelper deg med å identifisere problemer med brukerens opplevelse når du har tidkrevende eller sviktende samtaler:

Merk at New Relic Browser ikke registrerer automatisk Ajax-data automatisk. Du må slå den på per app i området New Relic-innstillinger. Les mer om Ajax-instrumentbrettet.

I JavaScript-kontrollpanelet i nettleseren kan du raskt se hvilke feil som skjer i din liveproduksjon, JavaScript over tid, hvilke nettlesere. Du kan undersøke feil basert på antall ganger hver enkelt forekom og antall unike sidelaster som oppsto den feilen. 

Dette lar deg identifisere feilene som påvirker virkelige brukeres erfaringer på nettstedet ditt; Det er en spesielt kraftig måte å lære av JavaScript-feil som ikke vises i din egen testing - eller på nettlesere som du kanskje har utelatt fra testbeltet ditt.

Ser fremover

Self-hosting WordPress krever en høy grad av teknisk ferdighet. Hvis du ikke klarer det, er administrerte verter et bedre alternativ. Mange av disse bruker New Relic internt for å optimalisere sine egne nettsteder, f.eks. Page.ly.

Dykking dypere inn i New Relic krever en investering av tid, men resultatene er vel verdt det. Med dette verktøyet kan du se inne i WordPress-stakken for raskt å velge ut problemområder som trenger adressering.

Hvis du gjør selvverten, kan New Relics tjenester være utrolig kraftige måter å se på i ditt eget hosting miljø og WordPress-stakken, temaene og plugins-og tamme ytelsen. 

I utrullingsprosessen din (og utviklingsprosessen din hvis du bygger dine egne temaer og plugins), vil du definitivt bore deg ned på nettstedet ditt med New Relic.

Mens du kan bruke New Relic Lite for alltid, når testen på to uker utløper, vil du sannsynligvis oppgradere til Pro-planen ($ 149 / måned) for å beholde de samme tjenestene. New Relic Browser, Synthetics and Insight har sine egne prisstrukturer - lære mer på New Relic-nettstedet.

Hvis du har spørsmål eller rettelser, vennligst legg inn dem i kommentarene. Hvis du vil fortsette med mine fremtidige Tuts + opplæringsprogrammer og andre serier, vennligst besøk min instruktørside eller følg @reifman.

Relaterte linker

  • Bruke New Relic til å overvåke WordPress Performance (Tuts +)
  • Optimalisering av WordPress med Varnish og W3 Total Cache (Tuts +)
  • Front-End Monitoring med New Relic Browser (Tuts +)
  • Registrer deg på NewRelic på W3 Total Cache Partnership Page
  • WordPress Performance Optimization med New Relic