IT-Swarm.Net

WordPress MySQL & PHP Απόδοση

έχουν μια ιστοσελίδα (www.americanbankingnews.com) που παίρνει σήμερα 40.000-50.000 σελίδες. Αυτή τη στιγμή κάθεται σε ένα dedicated quad-core server Xeon με 8GB ram. Ο ιστότοπος τροφοδοτείται από το WordPress και το MySQL (που κάθονται στον ίδιο διακομιστή) και τώρα χρησιμοποιώ το W3 Total Cache για τη σελίδα και το ερώτημα MySQL Caching.

Δυστυχώς, αυτό δεν φαίνεται να αρκεί. Κατά τους χρόνους αιχμής της κυκλοφορίας, οι διακομιστές μου λαμβάνουν μερικά σφάλματα HTTP 500 και σελίδες που δεν αποθηκεύονται προσωρινά στη προσωρινή μνήμη.

Δεν χρησιμοποιώ αυτήν τη στιγμή Xcache ή άλλα εργαλεία PHP cache/acceleration.

Υπάρχουν πρόσθετα βήματα που πρέπει να λάβω για να προσπαθήσω να βελτιστοποιήσω την απόδοση MySQL και PHP; Ή πρέπει να περάσω για ένα επιπλέον διακομιστή. Συγκεκριμένα, θα ήθελα να ενδιαφέρονται για πρόσθετες προτάσεις για τη βελτίωση της απόδοσης της MySQL και για το κατά πόσο ή όχι εργαλεία όπως το xcache μπορούν να βοηθήσουν σε αυτή την κατάσταση

4
Matthew Paulson

Γεια σας Matthew Paulson,

Βλέπω τη χρήση του W3 Total Cache, αλλά η βάση δεδομένων και η προσωρινή μνήμη αντικειμένων σας έχουν ρυθμιστεί σε δίσκο. Το caching αντικειμένων και η βάση δεδομένων σας στο δίσκο μπορεί να έχει πραγματικά αρνητικό αποτέλεσμα απόδοσης, ειδικά αν σας πάρει τόσο μεγάλη κίνηση.

Μπορείτε να διαβάσετε περισσότερα σχετικά με τις επιδράσεις στη βάση δεδομένων και τα αντικείμενα στο δίσκο σε ένα άρθρο που έγραψα για το πώς νανα ρυθμίσετε το W3 Total CacheΟ συγγραφέας του plugin συμφωνεί με τις οδηγίες στις ρυθμίσεις μου.

Για να δείτε πραγματικά το όφελος της προσωρινής αποθήκευσης βάσεων δεδομένων και αντικειμένων, πρέπει να χρησιμοποιήσετε μια προσωρινή μνήμη PHP όπως το APC. Μπορείτε να ακολουθήσετε τις οδηγίες αντιγραφής και επικόλλησης στο plugin FAQ για να μεταγλωττίσετε και να ρυθμίσετε το APC. Εάν στο Ubuntu ή στο Debian μπορείτε απλά να εκτελέσετε την εντολή: apt-get apc-php5 για εγκατάσταση.

Όπως άλλοι ανέφεραν επίσης, θα πάρετε μια τεράστια ώθηση στην απόδοση και θα επιτρέψετε στον ιστότοπό σας να κλιμακωθεί πολύ μεγαλύτερος, δημιουργώντας ένα αντίστροφο proxy με το Nginx.

Δίνω λεπτομερείς οδηγίες σχετικά με τον τρόπο διαμόρφωσης και ρύθμισης του στοWordPress Performance Stackάρθρο.

Θα πρέπει επίσης να διαβάσετε μερικές από τις υπόλοιπες ερωτήσεις και απαντήσεις εδώ. Έχουν δοθεί πολλές καλές επιδόσεις και συμβουλές κλιμάκωσης.

Καλή τύχη στην αναζήτησή σας. Η διαχείριση του δικού σας διακομιστή μπορεί μερικές φορές να είναι πολύ αγχωτική.

Edit

Ακριβώς για να δείξετε την απόδοση που μπορείτε να κερδίσετε με την εγκατάσταση του Nginx ως αντίστροφη μεσολάβηση Δημοσιεύω μια δοκιμή Benchmark του Apache Τρέξαμε ακριβώς στον server μου:

x-wing ~: ab -n 1000 -c 80 http://wp-performance.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.Apache.org/

Benchmarking wp-performance.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/0.8.54
Server Hostname:        wp-performance.com
Server Port:            80

Document Path:          /
Document Length:        3132 bytes

Concurrency Level:      80
Time taken for tests:   0.066 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      3605000 bytes
HTML transferred:       3132000 bytes
Requests per second:    15164.15 [#/sec] (mean)
Time per request:       5.276 [ms] (mean)
Time per request:       0.066 [ms] (mean, across all concurrent requests)
Transfer rate:          53385.52 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   0.6      1       3
Processing:     1    4   0.8      4       5
Waiting:        1    3   0.8      3       5
Total:          3    5   0.6      5       7

Percentage of the requests served within a certain time (ms)
  50%      5
  66%      5
  75%      6
  80%      6
  90%      6
  95%      6
  98%      6
  99%      6
 100%      7 (longest request)

Θεωρητικά, είναι σε θέση να χειριστεί πάνω από 15.000 αιτήματα ανά δευτερόλεπτο. (Ίδιο Δίκτυο)

5
Chris_O

Γρήγορη, αξιόπιστη και οικονομικά προσιτή υπηρεσία cloud hosting

Εγγραφείτε και λάβετε $50 μπόνους εντός 30 ημερών!

Πολλές παρόμοιες ερωτήσεις και απαντήσεις: https://wordpress.stackexchange.com/search?q=mysql+optimize

Έρχεται η χρήση εργαλείων - όπως το mysqltuner - για τη διερεύνηση των σημείων συμφόρησης, τον έλεγχο των ημερολογίων για τα λάθη και τη χρήση της μνήμης, την προσωρινή αποθήκευση php opcode, την εκκαθάριση των αναθεωρήσεων μετά/σελίδων,.

2
markratledge

Γεια σου @ Matthew Paulson:

Μπορεί να ζητάς λάθος ερώτηση.

Με την επισκεψιμότητά σας μπορεί να θέλετε να δείτε την προσωρινή μνήμη front-end χρησιμοποιώντας nginx . Εδώ είναι Q & As για nginx εδώ στο site, πολλά σχετικά άρθρα σε μια αναζήτηση Google, και plugin που μπορεί να διασυνδέσει WordPress με nginx στο wordpress.org και, τέλος, ένα άρθρο σχετικά με την εγκατάσταση και τη διαμόρφωση:

Αν αυτό δεν βοηθάει ή αν δεν θέλετε να το κάνετε για κάποιο άλλο λόγο παρακαλούμε ενημερώστε μας ποια πρόσθετα που χρησιμοποιείτε. Τις περισσότερες φορές με τα προβλήματα απόδοσης του WordPress δεν είναι το προφανές, αλλά αντ 'αυτού είναι αποτέλεσμα ορισμένων ανεπαρκώς γραμμένων plugins.

1
MikeSchinkel

Έχετε κατανόηση για το τι ακριβώς γίνεται ένα εμπόδιο υπό υψηλό φορτίο; Θα μπορούσε να είναι διαφορετικός τύπος πόρων (φόρτωση CPU, διατήρηση δικτύου, εξάντληση μνήμης κ.λπ.).

Γενικά:

  • cache opcode (διατηρώντας compiled PHP κώδικα στη μνήμη) είναι ένας μούστος?
  • φαίνεται να έχετε μνήμη για εγγραφή, επομένως αξίζει να δοκιμάσετε μνήμη cache object (το W3TC το υποστηρίζει, κοιτάξτε το). Θα κάνει πολλά πράγματα πιο επίμονα και θα μετακινήσουν το φορτίο μακριά από την MySQL.
  • αν το λογισμικό διακομιστή ιστού είναι στενός (δεν αναφέρετε τι εκτελείτε, Apache;) ίσως θελήσετε να εξετάσετε εναλλακτικό διακομιστή ιστού (όπως το nginx) ή αντίστροφη μεσολάβηση (και πάλι - έχετε μνήμη για να κάψετε, άκουσα καλά πράγματα για το βερνίκι).
0
Rarst

Δεν αστειεύεστε, προσπαθήσατε να μεταβείτε στον ιστότοπό σας και πήρατε ένα 500 εσωτερικό σφάλμα. Ίσως μπορείτε να μειώσετε τον αριθμό των plugins που χρησιμοποιείτε και να βεβαιωθείτε ότι όλες οι εικόνες είναι βελτιστοποιημένες κ.λπ. για να κάνετε τα μεγέθη των σελίδων μικρότερα, ώστε να καταναλώνουν λιγότερο εύρος ζώνης για να φορτώσουν επομένως λιγότερα λάθη.

Μπορεί επίσης να θέλετε να δείτε το HIP HOP για PHP . Ποτέ δεν την υλοποίησα, αλλά κυκλοφόρησε ανοικτή πηγή από τους ανθρώπους των φακέλων οι οποίοι μετά τη δημιουργία και τη χρήση τους είδαν το φορτίο του διακομιστή τους να μειώνεται περίπου κατά 30%. Βασικά παίρνει κανονικά αρχεία php, τα μετατρέπει σε δυαδικά αρχεία C++ και εξυπηρετεί αυτά έξω.

0
user4511

Το υλικό που διαθέτετε πρέπει να αντιμετωπίσει εύκολα την αναφερθείσα επισκεψιμότητα (ως σημείο αναφοράς, ένας ιστότοπος που τρέχω σε 40k ημερήσιες προβολές σελίδας σε 2GB Slicehost VPS) - κάτι που υποδηλώνει κάτι εντελώς λανθασμένο.

Έτσι, όπως είπαν οι άλλοι, το πρώτο πράγμα που πρέπει να κάνετε είναι να καταλάβετε πού είναι το πρόβλημα/τα.

  1. Ποιες είναι οι πληροφορίες που σας δίνουν κορυφαία όταν βρίσκεστε υπό φόρτωση; Χρησιμοποιείτε τη μνήμη ανταλλαγής, το φορτίο σας συσσωρεύεται, όταν ταξινομείτε ανά μνήμη και cpu% ποιες είναι οι κορυφαίες διαδικασίες;

  2. Μπορείτε να εγκαταστήσετε κάτι σαν munin για να σας δώσουμε μια εικόνα στο διακομιστή σας;

  3. Αν υποθέσουμε ότι τρέχετε το Apache, πώς είναι διαμορφωμένο - τα σημαντικά πράγματα που πρέπει να γνωρίζετε είναι:

    • Τέλος χρόνου
    • Κρατήσει ζωντανή
    • MaxKeepAliveRequests
    • KeepAliveTimeout
    • (υποθέτοντας ότι εκτελείτε το Apache σε κατάσταση προφόρτωσης) - όλες τις γραμμές config στην ενότητα προφόρμας του αρχείου conf Apache.
  4. Η εκτέλεση αυτής της εντολής - ps -ylC httpd --sort:rss θα σας δώσει μια ένδειξη για το πόση μνήμη χρησιμοποιούν οι διαδικασίες Apache.

  5. Εγκαταστήστε mtop και mysqltuner - από αυτό που θυμάμαι και τα δύο είναι διαθέσιμα μέσω apt-get. Θα πρέπει επίσης ενεργοποιήστε την αργή καταγραφή της MySQL - κανονικά απλά πρέπει να αποσυνδέσετε μια γραμμή στο αρχείο my.cnf.

    • το mtop σας δίνει μια πραγματική προβολή των ερωτημάτων SQL (αργά). το mysqltuner θα σας δώσει κάποια αίσθηση για τις αλλαγές που πρέπει να κάνετε στη διαμόρφωση MySQL
  6. Όπως προτείνουν άλλοι, τι συμβαίνει εάν απενεργοποιήσετε τα plugins κατά τη διάρκεια μιας περιόδου απασχολημένου; Επιταχύνει ο ιστότοπος; Τι πρόσθετα έχετε εγκαταστήσει;

  7. Έχετε κάποια ιδέα για το πόση κυκλοφορία λαμβάνετε κατά τη διάρκεια των πολυάσχολων περιόδων σας - π.χ. 4000 προβολές σε 10 λεπτά.

Οπλισμένοι με πληροφορίες από αυτές τις πηγές, θα έχετε μια πολύ καλύτερη ιδέα για το τι συμβαίνει.

0
anu

δεν ξέρω τι προγράμματα που εγκαταστήσατε αλλά ίσως το πρόβλημα APC - Zend:

http://www.ivankristianto.com/web-development/server/alternative-php-cache-apc-not-compatible-with-zend-optimizer/1726/

Αυτό το πρόβλημα συμβαίνει στο VPS μου αφού εγκαταστήσω την Εναλλακτική PHP cache (APC). Και επίσης έχω ήδη εγκατεστημένο το Zend optimizer στο ίδιο VPS. Μετά την εγκατάσταση του APC, το blog του WordPress δείχνει παράξενη συμπεριφορά. Μερικές φορές έχω Error 500 Internal Server Error, και μερικές φορές έχω PHP θανατηφόρο λάθος.

0
Ünsal Korkmaz