Λύσεις τεχνικής βελτιστοποίησης για διακομιστές. SO Βελτιστοποίηση υποδομής διακομιστή. βασικές παράμετροι τεχνικής βελτιστοποίησης

Πρόσφατα έλαβα ένα αίτημα για βοήθεια για τη δημιουργία ενός αποκλειστικού διακομιστή για τη λειτουργία ενός ηλεκτρονικού καταστήματος στο 1C-Bitrix. Ο λόγος για το αίτημα είναι η αργή λειτουργία του ιστότοπου.
Κοιτάξαμε τον ιστότοπο - πράγματι, μερικές σελίδες χρειάζονται περισσότερο από ένα λεπτό για να φορτωθούν!!! Το πρώτο πράγμα που μου ήρθε στο μυαλό όταν κοιτούσαμε τον ιστότοπο ήταν η μη βέλτιστη απόδοση των στοιχείων που αναπτύχθηκαν από άλλον προγραμματιστή. Όχι όμως στο ίδιο ποσό...

Αρχικά δεδομένα: Διακομιστής σε Xeon - μνήμη 2 GB, RAID. OS - FreeBSD. ΛΕΩΦΟΡΕΙΟ - Επιχείρηση.

Λοιπόν, ας προσπαθήσουμε με κάποιο τρόπο να διορθώσουμε την κατάσταση...
Επιτρέψτε μου να κάνω μια κράτηση αμέσως ότι αυτό το άρθρο δεν είναι οδηγίες για την εργασία με τη μονάδα, απλώς μια πραγματική περίπτωση χρήσης της μονάδας. Ίσως θα είναι χρήσιμο σε κάποιον.

Μετά τον έλεγχο, εντοπίστηκαν τα ακόλουθα κύρια προβλήματα:
1. Πρέπει να εγκαταστήσετε έναν επιταχυντή PHP στον διακομιστή
2. Στη σελίδα /price/, το στοιχείο "nvisions:menu.sections" έχει μεγάλα προβλήματα - δημιουργείται ένα αίτημα στη βάση δεδομένων το οποίο υποβάλλεται σε επεξεργασία για σχεδόν ένα λεπτό - αυτός είναι ο κύριος λόγος για τον μεγάλο χρόνο φόρτωσης της σελίδας , καθώς και μεγάλο φόρτο στον διακομιστή.
3. Η βάση δεδομένων λειτουργεί αργά (687 αιτήσεις εγγραφής ανά δευτερόλεπτο είναι πολύ λίγες), το πρόβλημα μπορεί να είναι στη διαμόρφωση του διακομιστή. Πρέπει να μετατρέψετε πίνακες σε InnoDB και να διαμορφώσετε το InnoDB
4. Το σύστημα αρχείων δεν είναι πολύ γρήγορο, αυτό μπορεί να οφείλεται σε χαρακτηριστικά υλικού του διακομιστή (για παράδειγμα RAID), αλλά κατ 'αρχήν ο ιστότοπος θα πρέπει να λειτουργεί καλά με αυτήν την ταχύτητα
5. Υπάρχει πρόβλημα στο πρότυπο του ιστότοπου (υπάρχουν ανύπαρκτοι σύνδεσμοι), πρέπει να αφαιρεθεί - απαιτεί πολλούς πόρους.
6. Είναι απαραίτητο να διαμορφώσετε μια αρχιτεκτονική δύο επιπέδων στον διακομιστή (εξυπηρέτηση στατικού περιεχομένου μέσω nginx), αυτό θα μειώσει σημαντικά το φόρτο στον διακομιστή Apache, θα σταθεροποιήσει την κατανάλωση μνήμης κατά τη διάρκεια των φορτώσεων, επομένως θα επιταχύνει την εργασία και θα αυξήσει την αξιοπιστία του έργο στο σύνολό του.

Ας αναλύσουμε τις πληροφορίες από τη μονάδα απόδοσης 1C-Bitrix:

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


Προφανή προβλήματα με τον κώδικα ή τα στοιχεία στη σελίδα /price/index.php
Ύποπτα μεγάλος χρόνος παραγωγής για το /bitrix/urlrewrite.php – κοιτάξτε περαιτέρω:

Ναι, αυτή είναι η πηγή των προβλημάτων: το πρότυπο περιέχει έναν σύνδεσμο προς μια ανύπαρκτη εικόνα, αυτό δημιουργεί ένα σφάλμα 404 και αναγκάζει τον Apache να επεξεργαστεί αυτό το σφάλμα και να δημιουργήσει μια πλήρη σελίδα.

Το ίδιο πρόβλημα επηρεάζει όλες τις σελίδες στον ιστότοπο που σχετίζονται με το προβληματικό πρότυπο:


Και εδώ είναι τα προβληματικά στοιχεία στη σελίδα:


Το στοιχείο μενού έχει απενεργοποιημένη την προσωρινή αποθήκευση.
Περίληψη σελίδας:

Λοιπόν, εδώ είναι μια γρήγορη ανάλυση. Πόσο βολικό σας λέει η μονάδα απόδοσης "πού βρίσκονται τα προβλήματα". Ας ξεκινήσουμε την αντιμετώπιση προβλημάτων:

Προσθέσαμε μια εικόνα στην οποία υπήρχε σύνδεσμος, προσθέσαμε απλώς μια εικόνα και δεν αφαιρέσαμε τους συνδέσμους, επειδή... υπήρχαν πολλοί σύνδεσμοι, συμπεριλαμβανομένων των στοιχείων τρίτων. Επίσης σε αυτήν τη σελίδα απενεργοποιήσαμε ένα προβληματικό στοιχείο τρίτου μέρους (nsvision:menu.sections), επειδή ο σκοπός του δεν είναι ξεκάθαρος. (μετά την αποσύνδεση, τίποτα δεν έχει αλλάξει εξωτερικά)
Αποτέλεσμα:


Το Urlrewrite.php δεν καλείται πλέον σε κάθε επιτυχία



Όπως μπορείτε να δείτε, η ταχύτητα εργασίας έχει αυξηθεί κατά 2 φορές (!).

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







Αποτέλεσμα μετά την εγκατάσταση του eAccelerator: Άλλη μια διπλάσια αύξηση στην παραγωγικότητα.

Ας προχωρήσουμε: Βελτιστοποίηση της βάσης δεδομένων(μεταφορά στο InnoDB και βελτιστοποίηση ρυθμίσεων)


Όπως φαίνεται από τη δοκιμή της μονάδας απόδοσης, η ταχύτητα της βάσης δεδομένων έχει αυξηθεί σημαντικά
Γενικά, η συνολική απόδοση μετά τη βελτιστοποίηση της βάσης δεδομένων παρέμεινε αμετάβλητη, πιθανώς λόγω της αργής λειτουργίας του συστήματος αρχείων.

ΕΚΣΥΓΧΡΟΝΙΖΩ:
Συστάσεις ενότητας απόδοσης.
Ακολουθώντας τις συστάσεις της ενότητας, απενεργοποιούμε την παράμετρο "open_basedir", επειδή ο διακομιστής είναι αφιερωμένος μόνο στο έργο μας, εννοούμε ότι η ασφάλεια στο σύνολό της δεν θα διακυβευτεί.

Αποτέλεσμα:


Το αποτέλεσμα, όπως λένε, είναι ΔΙΑΘΕΣΙΜΟ

Το μόνο που μένει είναι να ξαναγράψουμε τα «στραβά» συστατικά και το έργο θα πετάξει.

Εγκαταστήσαμε και ρυθμίσαμε επίσης το nginx ως διακομιστή μεσολάβησης για τον Apache. Δεν συμπεριλαμβάνω φωτογραφίες γιατί... οι αριθμοί παρέμειναν ουσιαστικά αμετάβλητοι. Αλλά σύμφωνα με υποκειμενική εκτίμηση, οι σελίδες φορτώνουν τώρα μερικές φορές πιο γρήγορα.

Το πρότυπο χρειάζεται ακόμη πολύ χρόνο για να δημιουργηθεί (ο χρόνος δημιουργίας είναι σχεδόν ίδιος με τον πυρήνα του συστήματος) - προφανώς, ο κώδικας δεν γράφτηκε με τον καλύτερο τρόπο από τον προηγούμενο προγραμματιστή. Δεν υπάρχει χρόνος, προϋπολογισμός, επιθυμία ανάλυσης του κώδικα κάποιου άλλου. Είναι πιο εύκολο, πιο γρήγορο και οικονομικό να γράψετε τον κώδικά σας από την αρχή.

Γενικά: Το Performance Module είναι ένα πολύ χρήσιμο και βολικό εργαλείο για τον εντοπισμό σφαλμάτων στη λειτουργία ενός έργου και ενός διακομιστή. Για αυτό, χάρη στους προγραμματιστές του.

ΥΣΤΕΡΟΓΡΑΦΟ. Προσωπικά, έχω λίγη εμπειρία να δουλεύω με Linux. Γνώρισα από κοντά το FreeBSD για πρώτη φορά. Ήμουν έκπληκτος που μετά την εγκατάσταση κάποιου λογισμικού, τα αρχεία διαμόρφωσης είναι εντελώς άδεια (για παράδειγμα, MySQL). Ήμουν ικανοποιημένος με την ευκολία εγκατάστασης του λογισμικού από τις "θύρες".

», κατεύθυνση «Συστήματα μετάδοσης δεδομένων».

Πριν προχωρήσουμε στις τεχνικές περιπλοκές της βελτιστοποίησης WAN, ας καταλάβουμε τι είναι και σε τι προορίζεται.

Πρόσφατα, έχει γίνει εμφανής η μετάβαση των δομών πληροφορικής σε ένα αποκεντρωμένο υπολογιστικό μοντέλο, στο οποίο οι εταιρείες διανέμουν τα κέντρα επεξεργασίας τους σε όλο τον κόσμο. Ως αποτέλεσμα, ο όγκος των δεδομένων και ο αριθμός των πόρων πληροφορικής που είναι αποθηκευμένοι εκτός εταιρικών κέντρων δεδομένων (DC) έχει αυξηθεί και οι επικεφαλής των τμημάτων αναζητούν τώρα τρόπους για να ενοποιήσουν την υποδομή πληροφορικής τους. Οι επιχειρήσεις έχουν συνειδητοποιήσει τα οφέλη που επιφέρει η ενοποίηση όσον αφορά τη μείωση της πολυπλοκότητας των υποδομών, τη μείωση του κόστους, τη βελτίωση της χρήσης πόρων και την προστασία των δεδομένων.

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

Για να λύσουν το πρόβλημα, οι οργανισμοί επεκτείνουν τη χωρητικότητα των συνδέσεων WAN σε μια προσπάθεια να μειώσουν τους χρόνους απόκρισης. Στη συνέχεια ανακαλύπτουν ότι η επέκταση των καναλιών δεν έχει ουσιαστικά καμία (ή ελάχιστη) επίδραση στην ταχύτητα των εφαρμογών, καθώς το πρόβλημα έγκειται στη μεγάλη καθυστέρηση στη μετάδοση δεδομένων μέσω του καναλιού και στη χρήση πρωτοκόλλων που είναι αναποτελεσματικά για εργασία με WAN. Επιπλέον, η επέκταση του εύρους ζώνης εκτός της Μόσχας μπορεί να μην είναι συνολικά οικονομικά αποδοτική. Και είναι ακριβώς για τέτοιες εργασίες που χρησιμοποιείται εξοπλισμός βελτιστοποίησης καναλιών WAN.

Σε παγκόσμιο επίπεδο, τέτοιες λύσεις βελτιστοποίησης WAN μπορούν να μειώσουν το κόστος για τους οργανισμούς με διάφορους τρόπους:

    μείωση του κόστους του εύρους ζώνης καναλιών επικοινωνίας. Στην πραγματικότητα, οι οργανισμοί θα μπορούν να κάνουν χωρίς να αγοράζουν επιπλέον εύρος ζώνης, κάτι που αποτελεί βασική προϋπόθεση για πολλές εταιρείες κατά την έναρξη έργων για την εφαρμογή βελτιστοποιητών WAN.

    ενοποίηση υποδομής σε κέντρο δεδομένων. Οι εταιρείες θα μπορούν να αφαιρούν σημαντικό μέρος της υποδομής πληροφορικής (διακομιστές αρχείων και αλληλογραφίας, διακομιστές διανομής λογισμικού, πύλες SharePoint, μονάδες κασετών κ.λπ.) από απομακρυσμένα γραφεία χωρίς απώλεια απόδοσης και διαχειρισιμότητας.

    απλοποίηση της υποδομής απομακρυσμένων γραφείων. Ορισμένοι κατασκευαστές προσφέρουν μια πλατφόρμα λογισμικού στις συσκευές τους που επιτρέπει στους χρήστες να φιλοξενούν ορισμένες από τις υπηρεσίες που απομένουν μετά την ενοποίηση του κέντρου δεδομένων (για παράδειγμα, διακομιστής εκτύπωσης, διακομιστής DHCP, υπηρεσίες αρχείων) απευθείας στη συσκευή βελτιστοποίησης. Αυτό καθιστά δυνατή την περαιτέρω μείωση του λειτουργικού κόστους.

Τι είναι η βελτιστοποίηση WAN; Η λύση για τη βελτιστοποίηση της λειτουργίας των εφαρμογών δικτύου χρησιμοποιεί την αρχιτεκτονική πελάτη-διακομιστή και την αρχή συνεδρίας των εφαρμογών δικτύου. Το κύριο καθήκον του είναι η βελτιστοποίηση των συνεδριών εφαρμογών. Ουσιαστικά πρόκειται για ένα σύνολο συσκευών για τη βελτίωση της απόδοσης των εφαρμογών που είναι εγκατεστημένες στο κέντρο και σε κάθε περιφερειακό (τοπικό) γραφείο της εταιρείας. Περνούν όλη την κίνηση μέσω του εαυτού τους, «αναχαιτίζοντας» και βελτιστοποιώντας τις συνεδρίες εργασίας εφαρμογών.

Υπάρχουν αρκετοί κατασκευαστές που προσφέρουν λύσεις στον τομέα της βελτιστοποίησης της μετάδοσης κίνησης σε μεγάλα κανάλια WAN. Τα πιο διάσημα από αυτά στη ρωσική αγορά περιλαμβάνουν το Riverbed (με το προϊόν SteelHead), τη Cisco (προϊόν WAAS), το Juniper (προϊόν WXC) και το BlueCoat (προϊόν ProxySG).

Η διαδικασία βελτιστοποίησης του εξοπλισμού που προσφέρουν βασίζεται στους ίδιους περίπου μηχανισμούς, οι οποίοι περιλαμβάνουν συμπίεση δεδομένων, caching, βελτιστοποίηση του πρωτοκόλλου TCP και βελτιστοποίηση της λογικής λειτουργίας των ίδιων των επιχειρηματικών εφαρμογών.

Όλοι οι εξεταζόμενοι μηχανισμοί βελτιστοποίησης εφαρμογών χρησιμοποιούν τμηματοποίηση συνεδρίας, χωρίζοντάς την μεταξύ του πελάτη και του διακομιστή σε τρία τμήματα: μεταξύ της συσκευής βελτιστοποίησης και του σταθμού εργασίας, μεταξύ συσκευών μέσω του δικτύου WAN και μεταξύ της συσκευής βελτιστοποίησης και του κέντρου δεδομένων (διακομιστής). Στο πρώτο και το τρίτο τμήμα, η περίοδος λειτουργίας εκτελείται μέσω του LAN και οι ελλείψεις στο πρωτόκολλο TCP δεν επηρεάζουν την καθυστέρηση της εφαρμογής. Το δεύτερο τμήμα βελτιστοποιείται με την προσαρμογή της ταχύτητας TCP. Ως αποτέλεσμα, διασφαλίζονται τα απαραίτητα ελάχιστα: όσον αφορά την καθυστέρηση κατά τη μετάδοση κίνησης μέσω του WAN και τον χρόνο απόκρισης της εφαρμογής. Ας δούμε τους μηχανισμούς που, με τη μία ή την άλλη μορφή, αποτελούν τη βάση των αποφάσεων κάθε κατασκευαστή βελτιστοποιητών.

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

Η συμπίεση κυκλοφορίας εξαλείφει αυτό το μειονέκτημα. Οι μηχανές βελτιστοποίησης εφαρμογών χρησιμοποιούν έναν αλγόριθμο συμπίεσης δεδομένων χωρίς απώλειες (όπως ο Lempel-Ziv) και έναν αλγόριθμο εξάλειψης διπλών μπλοκ. Ο συνδυασμός αυτών των δύο αλγορίθμων μας επιτρέπει να επιτύχουμε τον υψηλότερο βαθμό συμπίεσης πληροφοριών χωρίς απώλειες, εξασφαλίζοντας έτσι γρήγορη μετάδοση πληροφοριών ακόμη και σε κανάλια σχετικά χαμηλής ταχύτητας.

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

Μηχανισμοί προσωρινής αποθήκευσηςσυμβάλλουν επίσης στη μείωση του όγκου της μεταδιδόμενης κίνησης. Σε ένα κατανεμημένο δίκτυο, συχνά προκύπτουν καταστάσεις όταν όλοι οι εργαζόμενοι μιας εταιρείας πρέπει να μεταφέρουν τα ίδια δεδομένα. Για παράδειγμα, κατά την ενημέρωση προϊόντων λογισμικού ή βάσεων δεδομένων λογισμικού προστασίας από ιούς, μετάδοση αιτημάτων από τη διοίκηση της εταιρείας, αρχεία πολυμέσων και εκπαιδευτικά προγράμματα, δημόσιες βιβλιοθήκες εγγράφων. Η χρήση συσκευών βελτιστοποίησης επιτρέπει σε αυτές τις πληροφορίες να αποθηκεύονται προσωρινά, δηλαδή να μεταδίδονται μία φορά μέσω του WAN και στη συνέχεια να παρέχονται σε κάθε χρήστη τοπικά (από τον σκληρό δίσκο της πλησιέστερης συσκευής βελτιστοποίησης), αντί από έναν απομακρυσμένο παγκόσμιο πόρο.

Μια σημαντική διαφορά από τις συμβατικές συσκευές προσωρινής αποθήκευσης είναι το γεγονός ότι οι βελτιστοποιητές σπάνε τις πληροφορίες σε μέρη/μπλοκ και τις αποθηκεύουν στον σκληρό δίσκο. Αυτό είναι ενδιαφέρον από την άποψη ότι εάν αλλάξουμε ορισμένες από τις πληροφορίες στο αρχείο που μεταφέρθηκε πρόσφατα (για παράδειγμα, εισάγουμε μια διαφάνεια ή μια εικόνα σε ένα έγγραφο), τότε θα μεταφερθεί η αλλαγή και όχι ολόκληρο το αρχείο . Οι μηχανισμοί για τη δυναμική διαίρεση των μεταδιδόμενων πληροφοριών σε μπλοκ και την παρακολούθηση αλλαγών είναι αποκλειστικοί και δεν υπόκεινται σε αποκάλυψη. Αν μιλάμε για τα χαρακτηριστικά της εργασίας, οι κατασκευαστές χρησιμοποιούν 2 προσεγγίσεις. Χαρακτηριστικό του πρώτου από αυτά είναι η ενοποίησή του, δηλ. κατά τη μεταφορά ενός αρχείου σε διαφορετικούς κλάδους, μόνο ένα αντίγραφο του αρχείου θα αποθηκευτεί στο κεντρικό εργαλείο βελτιστοποίησης για όλες τις συσκευές απομακρυσμένης βελτιστοποίησης. Στη δεύτερη περίπτωση, ο χώρος του σκληρού δίσκου διαιρείται δυναμικά ανάλογα με τον αριθμό των απομακρυσμένων γραφείων (απομακρυσμένα βελτιστοποιητές) και εάν ένα αρχείο μεταφερθεί σε όλα τα υποκαταστήματα, ένα παρόμοιο αντίγραφο θα αντικατοπτρίζεται σε κάθε τμήμα σκληρού δίσκου που είναι «υπεύθυνο» για το υποκατάστημά του.

Προφανώς, ο μηχανισμός προσωρινής αποθήκευσης λειτουργεί παράλληλα με τον μηχανισμό συμπίεσης. Χάρη σε αυτούς τους δύο μηχανισμούς, οι κατασκευαστές βελτιστοποιητών εμφανίζουν όμορφα γραφήματα όπου το επίπεδο βελτιστοποίησης μπορεί να φτάσει τα 150-200Χ. Μπορέσαμε να λάβουμε τα ίδια δεδομένα κατά την αποστολή του ίδιου μεγάλου αρχείου δεδομένων πολλές φορές, επειδή μετά την πρώτη μεταφορά αποθηκεύτηκε στην κρυφή μνήμη της συσκευής και στη συνέχεια μεταφέρθηκαν μόνο kilobyte συνδέσμων που έδειχναν τη θέση του αρχείου στον σκληρό δίσκο. Εδώ τίθεται αμέσως ένα λογικό ερώτημα: ποια είναι η χωρητικότητα του σκληρού δίσκου και είναι δυνατή η σύνδεση εξωτερικού χώρου αποθήκευσης με βελτιστοποιητές; Κάποιοι κατασκευαστές ανέφεραν κάποτε την πιθανότητα εμφάνισης αυτού του είδους εξοπλισμού (αλλά θα προορίζεται ήδη αποκλειστικά για εγκατάσταση στο κέντρο δεδομένων).

Μηχανισμοί βελτιστοποίησης TCPεργασία σε επίπεδο μεταφορών. Αυτό είναι το κύριο «πεδίο μάχης» των κατασκευαστών βελτιστοποιητών προτού αρχίσουν να «σκαρφαλώνουν» σε υψηλότερα επίπεδα (εφαρμογή). Το πρωτόκολλο μεταφοράς TCP αναπτύχθηκε το 1980 και σήμερα δεν έχει υποστεί σημαντικές αλλαγές, ενώ οι τεχνολογίες μετάδοσης δεδομένων έχουν αλλάξει σημαντικά. Όταν χάνονται πακέτα, το τυπικό πρωτόκολλο TCP μειώνει απότομα την ταχύτητα - σχεδόν στο μισό, και η αύξησή του από αυτό το επίπεδο στη συνέχεια γίνεται γραμμικά και σε μικρά βήματα. Επομένως, ακόμη και ένα σχετικά μικρό επίπεδο απώλειας πακέτων (2-3% των απωλειών θεωρείται φυσιολογικό) οδηγεί σε συχνές και απότομες απώλειες στην ταχύτητα του δικτύου.

Το βελτιστοποιημένο πρωτόκολλο TCP, όταν συμβαίνει απώλεια, μειώνει την ταχύτητα όχι κατά 2 φορές, αλλά μόνο κατά μερικά τοις εκατό, και με μία απώλεια πακέτου, η ταχύτητα μειώνεται πολύ ελαφρά. Αποδεικνύεται ότι η λύση για τη βελτιστοποίηση της λειτουργίας των εφαρμογών δικτύου αυξάνει κυρίως την ταχύτητα μεταφοράς πληροφοριών. Η μέγιστη χρήση ολόκληρου του εύρους ζώνης των καναλιών μετάδοσης δεδομένων διασφαλίζεται από τη βελτιωμένη διαδικασία λειτουργίας του πρωτοκόλλου TCP.

Μηχανισμοί Βελτιστοποίησης Επιπέδου Εφαρμογήςπροσφέρουν επιτάχυνση των ίδιων των επιχειρηματικών εφαρμογών μέσω καναλιών WAN. Είναι η εφαρμογή κάποιων πρωτοκόλλων σε δημοφιλή προϊόντα που, δυστυχώς, απέχει πολύ από το τέλειο. Ειδικότερα, το πρωτόκολλο CIFS (Common Internet File System), το οποίο χρησιμοποιείται ενεργά στα δίκτυα της Microsoft, δημιουργεί υπερβολικό όγκο μηνυμάτων υπηρεσίας (επιβεβαίωση παράδοσης, ετοιμότητα συσκευής κ.λπ.). Σε ένα τοπικό δίκτυο, αυτές οι υπερβολές δεν προκαλούν σημαντική καθυστέρηση στον χρόνο απόκρισης, αλλά σε ένα κατανεμημένο δίκτυο γίνονται σημαντικές. Οι συσκευές βελτιστοποίησης μπορούν να επεξεργάζονται την πλειονότητα των ασήμαντων μηνυμάτων τοπικά, χωρίς μετάδοση μέσω WAN, μειώνοντας την κυκλοφορία και μειώνοντας τον χρόνο απόκρισης μιας σειράς λειτουργιών εφαρμογών δικτύου, όπως εκτύπωση δικτύου, πρόσβαση σε υπηρεσίες αρχείων κ.λπ. Στην πραγματικότητα, σήμερα είναι ακριβώς σε αυτόν τον τομέα που οι κατασκευαστές ανταγωνίζονται. Τα πιο συχνά βελτιστοποιημένα πρωτόκολλα περιλαμβάνουν την εκτύπωση CIFS, NFS, MAPI, Βίντεο, HTTP, SSL και Windows. Αυτό το "σετ κυρίων" υπάρχει στο χαρτοφυλάκιο σχεδόν κάθε κατασκευαστή, αλλά βελτιστοποιείται με διαφορετικούς τρόπους.

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

Δεν είναι δύσκολο να μαντέψει κανείς ότι όλοι οι βελτιστοποιητές λειτουργούν με εφαρμογές που βασίζονται σε TCP, πράγμα που σημαίνει ότι η υπόλοιπη κίνηση διέρχεται χωρίς βελτιστοποίηση. Το ίδιο μπορεί να ειπωθεί για την κρυπτογραφημένη κίνηση (η εξαίρεση, ίσως, είναι το SSL - πολλοί βελτιστοποιητές μπορούν να «σπάσουν» τη συνεδρία, να βελτιστοποιήσουν την κυκλοφορία και να την κρυπτογραφήσουν ξανά).

Εταιρείες με κατανεμημένη δομή που θέλουν να μειώσουν το κόστος για τους τηλεπικοινωνιακούς φορείς ενδέχεται να ενδιαφέρονται για μια τέτοια λύση. Αυτό μπορεί να εκδηλωθεί τόσο στην περίπτωση χρήσης τιμολογίων ανά megabyte (το αποτέλεσμα είναι προφανές) όσο και στην περίπτωση απεριόριστων (μετάβαση σε προγράμματα τιμών χαμηλότερης ταχύτητας). Σήμερα, ίσως, αυτός είναι ο πιο ενδιαφέρον σκοπός για τη χρήση τέτοιων συσκευών. Άλλα μπόνους, όχι τόσο προφανή και διαφανή, μπορεί να είναι: ενοποίηση διακομιστών, μείωση του προσωπικού πληροφορικής σε απομακρυσμένα γραφεία, αυξημένη παραγωγικότητα λόγω αυξημένης ταχύτητας εφαρμογής.

Στον αγώνα για ενδιαφέρον για βελτιστοποιητές, οι κατασκευαστές προσφέρουν επίσης ευκαιρίες βελτιστοποίησης της εργασίας των μετακινούμενων υπαλλήλων εγκαθιστώντας εξειδικευμένο λογισμικό σε φορητούς υπολογιστές και τη δυνατότητα εγκατάστασης εικονικών διακομιστών που βασίζονται σε έναν βελτιστοποιητή σε απομακρυσμένο γραφείο. Το λογισμικό για φορητούς υπολογιστές είναι παρόμοιο σε κώδικα με το λογισμικό των ίδιων των βελτιστοποιητών, δηλ. Το laptop γίνεται σαν βελτιστοποιητής.

Εκτός από εταιρείες με κατανεμημένη δομή, αυτή η λύση μπορεί επίσης να ενδιαφέρει τους φορείς εκμετάλλευσης που μπορούν να παρέχουν στις εταιρείες υπηρεσίες βελτιστοποίησης (για παράδειγμα, ενοικίαση). Τέτοιες υπηρεσίες γίνονται δημοφιλείς στην Ευρώπη.

Η πιο κοινή λύση βελτιστοποίησης είναι φυσικά η Cisco WAAS. Το καλό μάρκετινγκ προμηθευτών, μια καλή λύση και στρατηγική ανάπτυξης κάνουν τη δουλειά τους. Με την εμφάνιση μιας σειράς προσιτών και αξιόπιστων WAVE, η θέση της Cisco έχει γίνει ακόμα πιο ισχυρή.

Η λύση WXC της Juniper διαφέρει στο ότι όλη η κίνηση συσκευάζεται σε μια σήραγγα UDP, δηλ. Η βελτιστοποίηση πραγματοποιείται σε όλη την κυκλοφορία. Αυτή η προσέγγιση έχει σίγουρα τα πλεονεκτήματά της. Θα συμπεριλάμβανα μια αρκετά υψηλή τιμή βελτιστοποίησης "μέσος όρος νοσοκομείου" σε όλη την επισκεψιμότητα (βάσει δοκιμών με έναν μεγάλο πελάτη).

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

Συνοψίζοντας όλα τα παραπάνω, θα ήθελα να σημειώσω ότι η βελτιστοποίηση WAN είναι μια ενδιαφέρουσα λύση, αρκετά διαφανής για τις επιχειρήσεις, αλλά, δυστυχώς, δεν έχει λάβει ακόμη μεγάλη ζήτηση στις ρωσικές εταιρείες. Με βάση τις υλοποιήσεις, ήταν δυνατό να μειωθεί η επισκεψιμότητα κατά μέσο όρο 2-3,5 φορές και να επιταχυνθούν σημαντικά οι αποκρίσεις των εφαρμογών. Για παράδειγμα, ένας από τους πελάτες μας, σε δορυφορικές γραμμές, εξοικονόμησε περίπου 20 ώρες απαντήσεων κατά τη διάρκεια ενός μήνα δοκιμών. Για την εταιρεία μας, η εφαρμογή αυτής της λύσης μας επέτρεψε να επιτύχουμε διπλή εξοικονόμηση κατά την πληρωμή της κίνησης δικτύου, καθώς και να αυξήσουμε την ταχύτητα των εταιρικών εφαρμογών κατά μέσο όρο 1,7 φορές. Παράλληλα, η απόδοση της επένδυσης στο έργο ήταν μόλις 3 μήνες.

Σε κάθε περίπτωση, αν σας ενδιαφέρει, είναι καλύτερο να δοκιμάσετε πρώτα τη λύση για περίπου ένα μήνα.Μόνο βάσει των αποτελεσμάτων τέτοιων δοκιμών θα μπορείτε να πείτε πόσο αποτελεσματική είναι η υλοποίηση των βελτιστοποιητών σε σχέση με ένα συγκεκριμένο δίκτυο. Είναι καλύτερο να εμπλέξετε έμπειρους ενοποιητές συστημάτων για την ανάπτυξη μιας λύσης, τη διεξαγωγή δοκιμών και εγκατάστασης.

Το αποτελεσματικό SEO μπορεί να παρεμποδιστεί από ένα μόνο ενοχλητικό λάθος στην τεχνική βελτιστοποίηση του ιστότοπου, αλλά αυτό θα οδηγήσει στο γεγονός ότι τα ρομπότ της μηχανής αναζήτησης δεν θα μπορούν να ευρετηριάσουν σωστά τον πόρο, να κατανοήσουν τη δομή του ιστότοπου και οι χρήστες θα δεν βρίσκουν τις πληροφορίες που χρειάζονται. Όλα αυτά, με τη σειρά τους, θα οδηγήσουν σε χαμηλή κατάταξη του ιστότοπου.

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

5 κύριες παράμετροι τεχνικής βελτιστοποίησης

1. Αρχείο Robots.txt

Είναι σημαντικό να σημειωθεί ότι το αρχείο robots.txt πρέπει να περιέχεται στον ριζικό κατάλογο κάθε πόρου. Αυτό είναι το πρώτο αρχείο στο οποίο έχουν πρόσβαση τα ρομπότ PS όταν επισκέπτονται τον ιστότοπο και στο οποίο αποθηκεύονται οι οδηγίες για αυτά.

Αυτό το αρχείο καθορίζει τις παραμέτρους ευρετηρίασης του ιστότοπου: ποιες σελίδες πρέπει να περιλαμβάνονται στη βάση δεδομένων αναζήτησης και ποιες πρέπει να εξαιρεθούν. Επιπλέον, μπορεί να καθορίσει οδηγίες τόσο για όλα τα ρομπότ μηχανών αναζήτησης ταυτόχρονα, όσο και για τα ρομπότ κάθε μηχανής αναζήτησης ξεχωριστά. Μπορείτε να μάθετε περισσότερα σχετικά με τη σύνταξη αυτού του αρχείου και τη ρύθμισή του στον ιστότοπο βοήθειας για webmaster του Yandex.

Μπορείτε να ελέγξετε το αρχείο στην υπηρεσία Yandex.Webmaster, στοιχείο μενού "Analysis of robots.txt" (https://webmaster.yandex.ru/robots.xml).

2. Χάρτης ιστότοπου - χάρτης τοποθεσίας

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

Ένας χάρτης ιστότοπου HTML απαιτείται από τους χρήστες για να βρίσκουν γρήγορα και εύκολα πληροφορίες και η XML απαιτείται από τις μηχανές αναζήτησης για τη βελτίωση της ευρετηρίασης ιστοτόπων.

Με τη βοήθεια ενός χάρτη τοποθεσίας, τα ρομπότ αναζήτησης βλέπουν ολόκληρη τη δομή και ευρετηριάζουν τις νέες σελίδες πιο γρήγορα.

Έλεγχος του χάρτη τοποθεσίας(https://webmaster.yandex.ru/sitemaptest.xml)

Ένα παράδειγμα σωστού χάρτη ιστότοπου σε μορφή .html:

3. Ανακατευθύνσεις (ανακατευθύνσεις)

Μια ανακατεύθυνση χρησιμοποιείται για την ανακατεύθυνση των επισκεπτών του ιστότοπου από τη μια σελίδα στην άλλη. Υπάρχουν πολλά παραδείγματα για το γιατί χρειάζονται ανακατευθύνσεις:

  1. Αλλαγή του ονόματος τομέα του ιστότοπου.
  2. Καθρέφτες από κόντρα πλακέ. Πολλοί ιστότοποι δεν έχουν ρυθμισμένη ανακατεύθυνση 301 από έναν τομέα που περιέχει www στη διεύθυνση σε έναν τομέα χωρίς www ή το αντίστροφο.

Οι ανακατευθύνσεις πρέπει να εισαχθούν στο αρχείο .htaccess. Δεδομένου ότι οι μηχανές αναζήτησης μπορεί να θεωρούν το site.ru και το www.site.ru ως διαφορετικούς ιστότοπους, ενδέχεται να εμφανίζονται διπλότυπα στα αποτελέσματα. Αυτό θα δημιουργήσει δυσκολίες με την κατάταξη στα αποτελέσματα αναζήτησης κ.λπ.

Κωδικοί κατάστασης κύριας ανακατεύθυνσης:

  • 300 - Πολλαπλές επιλογές (πολλές επιλογές για να διαλέξετε).
  • 301 - Μετακινήθηκε μόνιμα (μετακινήθηκε για πάντα).
  • 302 - Προσωρινή ανακατεύθυνση.
  • 303 - Δείτε Άλλα (ο ζητούμενος πόρος βρίσκεται σε άλλη διεύθυνση).
  • 304 - Μη τροποποιημένο (το περιεχόμενο δεν έχει αλλάξει - μπορεί να είναι εικόνες, φύλλα στυλ κ.λπ.).
  • 305 - Χρήση διακομιστή μεσολάβησης (η πρόσβαση πρέπει να γίνεται μέσω διακομιστή μεσολάβησης).
  • 306 - Αχρησιμοποίητο (δεν χρησιμοποιείται).

Χρήσιμη υπηρεσία για τον προσδιορισμό των απαντήσεων της σελίδας: http://www.bertal.ru/

4. Προσαρμογή προβολών σελίδας URL

Είναι σημαντικό να ελέγξετε τον ιστότοπο για να βεβαιωθείτε ότι οι διευθύνσεις όλων των σελίδων του είναι συνεπείς. Για παράδειγμα, σε ολόκληρο τον ιστότοπο, οι σελίδες πρέπει να έχουν κάθετο κλεισίματος: http://site.ru/katalog/ και http://site.ru/products/ . Αν κάποιες σελίδες μοιάζουν με http://site.ru/katalog και κάποιες σαν http://site.ru/products/, αυτό είναι λάθος.

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

5. Σφάλματα τοποθεσίας

Όταν φορτώνεται οποιαδήποτε σελίδα σε έναν ιστότοπο, αποστέλλεται ένα αίτημα στον διακομιστή, ο οποίος απαντά με έναν κωδικό κατάστασης HTTP και φορτώνει (ή δεν φορτώνει) τη σελίδα.

Βασικοί κωδικοί κατάστασης:

  • 200 - η σελίδα είναι μια χαρά.
  • 404 - ανύπαρκτη σελίδα.
  • 503 - ο διακομιστής δεν είναι διαθέσιμος προσωρινά.

Το “404 error” είναι μια από τις πιο σημαντικές τεχνικές παραμέτρους βελτιστοποίησης, η οποία πρέπει να βελτιωθεί.

Εάν η σελίδα υπάρχει και ο διακομιστής ενημερώνει για ένα σφάλμα 404 όταν την ζητά, τότε η σελίδα δεν θα ευρετηριαστεί από τις μηχανές αναζήτησης. Διαφορετικά, ένας μεγάλος αριθμός σελίδων με το ίδιο κείμενο μπορεί να καταλήξει στο ευρετήριο, κάτι που έχει εξαιρετικά αρνητική επίδραση στην κατάταξη.

Μπορείτε να ελέγξετε τους κωδικούς κατάστασης χρησιμοποιώντας http://www.bertal.ru/ ή Yandex.Webmaster.

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

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

Βελτιστοποίηση λειτουργικού συστήματος (FreeBSD)

  • Μετάβαση στο 7.xείναι χρήσιμο για συστήματα πολλαπλών πυρήνων καθώς μπορούν να χρησιμοποιηθούν το νέο ULE 3.0 Scheduler και το jemalloc. Εάν χρησιμοποιείτε ένα παλαιού τύπου σύστημα 6.x και δεν μπορεί να αντεπεξέλθει στο φορτίο, τότε ήρθε η ώρα να μεταβείτε στο 7.x.
  • Μετάβαση στην 7.2θα σας επιτρέψει να αυξήσετε το KVA, να βελτιστοποιήσετε από προεπιλογή το sysctl και να χρησιμοποιήσετε υπερσελίδες. Ένα νέο FreeBSD 8.0 ετοιμάζεται ήδη, το οποίο θα συμβάλει σημαντικά στην αύξηση της παραγωγικότητας.
  • Μετάβαση στο amd64καθιστά δυνατή την αύξηση του όγκου KVA και Shared Mem σε περισσότερα από 2 Gb. Είναι απαραίτητο να δημιουργηθούν συνθήκες για την ανάπτυξη του διακομιστή, γιατί οι βάσεις δεδομένων αυξάνονται συνεχώς και απαιτούν μεγαλύτερα μεγέθη.
  • Εκφόρτωση υποσυστήματος δικτύουστο FreeBSD θα βοηθήσει στη βελτιστοποίηση του διακομιστή. Αυτή η διαδικασία μπορεί να γίνει σε δύο στάδια: συντονισμός των παραμέτρων ifconfig και ρυθμίσεις sysctl.conf/loader.conf. Στο στάδιο της προετοιμασίας, θα πρέπει να ελέγξετε τις δυνατότητες της κάρτας δικτύου. Τα προγράμματα οδήγησης από το Yandex θα βοηθήσουν στην αύξηση της ταχύτητας χρησιμοποιώντας πολλαπλά νήματα· χρησιμοποιούνται συχνά για διεργασίες πολλαπλών πυρήνων. Για μια κάρτα δικτύου τρίτης κατηγορίας, η ψηφοφορία είναι η καλύτερη λύση. Η πιο πρόσφατη ενημερωμένη έκδοση του συντονισμού FreeBSD 7 θα βοηθήσει στην επίλυση του προβλήματος.
  • FreeBSD και ένας τεράστιος αριθμός αρχείωνλειτουργεί εξαιρετικά χάρη στην προσωρινή αποθήκευση των ονομάτων αρχείων στον κατάλογο. Η αναζήτηση στον πίνακα κατακερματισμού θα σας βοηθήσει να βρείτε γρήγορα το απαιτούμενο αρχείο. Αν και η μέγιστη ποσότητα μνήμης είναι περίπου 2MB, μπορείτε να την αυξήσετε εφόσον το επιτρέπει το vfs.ufs.dirhash_mem.
  • Softupdates, gjournalΚαιβουνό επιλογές- Πρόκειται για νέες βίδες terabyte που έχουν εξαιρετική απόδοση. Εάν διακοπεί η τροφοδοσία, το fsck τους θα πάρει πολύ χρόνο, επομένως μπορείτε να χρησιμοποιήσετε softupdates ή να συνδεθείτε μέσω του gjournal.

Βελτιστοποίηση frontend (nginx)

Αυτός ο τύπος μπορεί να ταξινομηθεί ως πρόωρη βελτιστοποίηση, αν και θα βοηθήσει στην αύξηση του συνολικού χρόνου απόκρισης του ιστότοπου. Μεταξύ των τυπικών βελτιστοποιήσεων, αξίζει να δοθεί προσοχή στο reset_timedout_connection. αποστολή αρχείου; tcp_nopush και tcp_nodelay.

  • Αποδοχή φίλτρωνείναι μια τεχνολογία που καθιστά δυνατή τη μεταφορά πληροφοριών από τον πυρήνα στη διεργασία σε περίπτωση άφιξης νέων δεδομένων ή λήψης έγκυρου αιτήματος http. Αυτά τα φίλτρα θα βοηθήσουν στην ανακούφιση του διακομιστή όταν υπάρχει τεράστιος αριθμός συνδέσεων.
  • Προσωρινή αποθήκευσηΤο nginx χαρακτηρίζεται από ευελιξία και παράγεται από backend fastcgi ή proxy. Ο καθένας μπορεί να χρησιμοποιήσει έξυπνα την προσωρινή αποθήκευση στο έργο του.
  • AIOείναι πολύ χρήσιμο για ορισμένα συγκεκριμένα φορτία διακομιστή, επειδή εξοικονομεί χρόνο απόκρισης ενώ μειώνει τον αριθμό των εργαζομένων. Οι νέες εκδόσεις του nginx καθιστούν δυνατή τη χρήση του aio σε συνδυασμό με το sendfile.

Βελτιστοποίηση backend

  • APCείναι ένα πλαίσιο που σας επιτρέπει να μειώσετε το φόρτο αποθηκεύοντας προσωρινά μεταγλωττισμένο κώδικα στο OP. Το κλείδωμα APC αξίζει να ενημερωθεί, καθώς μπορεί να επιβραδυνθεί και πολλοί άνθρωποι αρχίζουν να χρησιμοποιούν το eAccelerator αντί για το APC. Αξίζει να αντικαταστήσετε το κλείδωμα με spinlock ή pthread mutex. Η τιμή των υποδείξεων APC θα πρέπει να αυξηθεί εάν υπάρχει τεράστιος αριθμός αρχείων .php ή εάν αποθηκεύονται συχνά στην κρυφή μνήμη του χρήστη APC. Ο κατακερματισμός APC είναι ένα σημάδι ότι χρησιμοποιείτε το APC ακατάλληλα. Δεν μπορεί να διαγράψει ανεξάρτητα εγγραφές από TTL ή LRU.
  • PHP 5.3θα συμβάλει στην αύξηση των κερδών παραγωγικότητας, επομένως αξίζει να αναβαθμίσετε την έκδοση PHP, αν και η λίστα με τις καταργημένες λειτουργίες μπορεί να τρομάξει πολλούς.

Βελτιστοποίηση βάσης δεδομένων

Υπάρχουν πολλές ιδέες για τη βελτίωση της απόδοσης της MySQL στο Διαδίκτυο, επειδή κάθε web project αργά ή γρήγορα αντιμετωπίζει περιορισμούς στην ποσότητα της μνήμης, του δίσκου ή του επεξεργαστή. Επομένως, οι απλές λύσεις δεν θα βοηθήσουν στην αντιμετώπιση του προβλήματος· αξίζει να αφιερώσετε περισσότερο χρόνο σε profilers (dtrace, systemtap και oprofile), καθώς και να χρησιμοποιήσετε μεγάλο αριθμό πρόσθετου λογισμικού. Είναι απαραίτητο όχι μόνο να είμαστε τέλεια σε θέση να χρησιμοποιούμε ευρετήρια, να τα ταξινομούμε και να τα ομαδοποιούμε, αλλά και να γνωρίζουμε πώς όλα αυτά λειτουργούν μέσα στη MySQL. Πρέπει επίσης να γνωρίζετε τα πλεονεκτήματα και τα μειονεκτήματα των διαφορετικών μηχανών αποθήκευσης, να κατανοήσετε την κρυφή μνήμη Query και να ΕΞΗΓΗΣΕΤΕ.

Υπάρχουν διάφοροι τρόποι βελτιστοποίησης της MySQL, ακόμη και χωρίς αλλαγή των κωδικών, επειδή ο μισός συντονισμός διακομιστή μπορεί να γίνει σε ημιαυτόματη λειτουργία χρησιμοποιώντας τα βοηθητικά προγράμματα tuningprimer, mysqltuner και mysqlsla.

  • Μετάβαση στην 5.1παρέχει πολλά πλεονεκτήματα, μεταξύ των οποίων αξίζει να τονιστεί η βελτιστοποίηση βελτιστοποίησης, η κατάτμηση, η προσθήκη InnoDB και η αναπαραγωγή βάσει σειράς. Για να επιταχυνθεί ο ιστότοπος, ορισμένοι λάτρεις των extreme sports δοκιμάζουν ήδη την έκδοση 5.4.
  • Μετάβαση σε InnoDBπαρέχει πολλά οφέλη. Είναι συμβατό με ACID, επομένως οποιαδήποτε λειτουργία εκτελείται με μία μόνο συναλλαγή. Διαθέτει κλείδωμα σε επίπεδο γραμμής, το οποίο καθιστά δυνατή την ταυτόχρονη ανάγνωση και εγγραφή πολλών νημάτων μεμονωμένα το ένα από το άλλο.
  • Ενσωματωμένη κρυφή μνήμη MySQL – Query Cacheείναι αρκετά δύσκολο να γίνει κατανοητό, έτσι πολλοί χρήστες το χρησιμοποιούν παράλογα ή το απενεργοποιούν. Για αυτόν, περισσότερα δεν σημαίνει καλύτερο, επομένως δεν αξίζει να μεγιστοποιήσετε αυτό το υποσύστημα. Το Query Cache παραλληλίζεται· ως αποτέλεσμα, εάν χρησιμοποιούνται περισσότερες από οκτώ διεργασίες, θα επιβραδύνει μόνο ολόκληρη τη διαδικασία και δεν θα συμβάλλει στη μείωση του χρόνου φόρτωσης του ιστότοπου. Τα περιεχόμενα αυτού του υποσυστήματος, τα οποία σχετίζονται με έναν συγκεκριμένο πίνακα, ακυρώνονται όταν γίνονται αλλαγές σε αυτόν τον πίνακα. Αυτό σημαίνει ότι το Query Cache δίνει θετικά αποτελέσματα μόνο όταν χρησιμοποιούνται καλά σχεδιασμένοι πίνακες.
  • Τα ευρετήρια μπορεί να είναι επιβλαβή τόσο για το SELECT (αν δεν υπάρχει) όσο και για το INSERT/UPDATE (αν υπάρχουν επιπλέον). Ένα ευρετήριο που δεν χρησιμοποιείται πλέον εξακολουθεί να καταλαμβάνει μνήμη και έτσι επιβραδύνει τις αλλαγές δεδομένων. Για να αντιμετωπίσετε αυτό το πρόβλημα, θα πρέπει να χρησιμοποιήσετε ένα απλό ερώτημα SQL.

PostgreSQL

Το σύστημα Postgres είναι αρκετά ευέλικτο, γιατί ανήκει στην κατηγορία Enterprise και το Skype δουλεύει τέλεια σε αυτό, αλλά ταυτόχρονα μπορεί να εγκατασταθεί ακόμη και σε κινητό τηλέφωνο. Από τις 200 διαθέσιμες παραμέτρους, οι 45 από αυτές είναι βασικές και είναι υπεύθυνες για τον συντονισμό.

Μπορείτε να βρείτε πολλές χρήσιμες πληροφορίες για τη ρύθμιση του Postgres στο Διαδίκτυο. Ωστόσο, ορισμένα άρθρα είναι ήδη ξεπερασμένα, επομένως θα πρέπει να ξεκινήσετε από την ημερομηνία δημοσίευσης και να δώσετε προσοχή στις πληροφορίες όπου χρησιμοποιείται το κλειδί vacuum_mem ή σε νέες εκδόσεις του maintenance_mem. Οι προχωρημένοι προγραμματιστές θα μπορούν να βρουν πολλές πραγματείες υψηλής ποιότητας· παρακάτω θα παραθέσουμε μόνο εκείνα τα βασικά που θα βοηθήσουν τον μέσο χρήστη να βελτιώσει το έργο του.

  • ΕυρετήριαΟι PostgreSQL είναι πάντα στην πρώτη θέση, ενώ στη MySQL καταλαμβάνουν πάντα τις τελευταίες θέσεις, και αυτό εξηγείται από το γεγονός ότι τα ευρετήρια PostgreSQL έχουν τεράστιες δυνατότητες. Ο προγραμματιστής πρέπει να έχει καλή κατανόηση τέτοιων ευρετηρίων και να γνωρίζει πότε και ποιο πρέπει να χρησιμοποιηθεί, όπως GiST, GIN, κατακερματισμός και B-tree, καθώς και μερικές, πολύστηλες και σε εκφράσεις.
  • pgBouncerκαι οι εναλλακτικές του πρέπει πρώτα να εγκατασταθούν στον διακομιστή της βάσης δεδομένων. Χωρίς ένα πρόγραμμα συγκέντρωσης σύνδεσης, κάθε αίτημα δημιουργεί μια ξεχωριστή διαδικασία που χρησιμοποιεί μνήμη RAM. Δεν φαίνεται τίποτα κακό, αλλά όταν δημιουργείτε περισσότερες από 200 συνδέσεις, ακόμη και ένας πολύ ισχυρός διακομιστής αντιμετωπίζει δυσκολίες στην επεξεργασία πληροφοριών. Το pgBouncer βοηθά στην επίλυση αυτού του προβλήματος.
  • pgFouineείναι ένα απαραίτητο πρόγραμμα, αφού μπορεί να ονομαστεί με ασφάλεια ανάλογο του mysqlsla σε php. Σε συνδυασμό με το Playr, μπορεί να εκτελέσει βελτιστοποίηση ερωτημάτων σε δύσκολες συνθήκες σε διακομιστές σταδιοποίησης.

Εκφόρτωση της βάσης δεδομένων

Για να βελτιστοποιήσετε τη λειτουργία της βάσης δεδομένων και να αυξήσετε την απόδοσή της, θα πρέπει να τη χρησιμοποιείτε όσο το δυνατόν λιγότερο.

  • SphinxQLμπορεί να χρησιμοποιηθεί ως διακομιστής MySQL. Για να το κάνετε αυτό, χρειάζεται απλώς να δημιουργήσετε το sphinx.conf, καθώς και καταχωρήσεις για το indexer στο cron και να μεταβείτε σε άλλη βάση δεδομένων. Με αυτές τις ενέργειες δεν χρειάζεται καν να αλλάξετε τον κωδικό. Η μετάβαση στο SphinxQL θα βοηθήσει στη βελτίωση της ταχύτητας και της ποιότητας αναζήτησης και θα ξεχάσει το MyISAM και το FTS.
  • Αποθηκευτικός χώρος χωρίς RDBMSσας επιτρέπει να μην χρησιμοποιείτε μια σχεσιακή βάση δεδομένων. Μπορείτε να επιλέξετε Hive ή Oracle. Η βάση δεδομένων κλειδιού-τιμής, λόγω της ταχύτητάς της, χρησιμοποιεί επιλογές από σχεσιακές βάσεις δεδομένων για περαιτέρω αποθήκευση στην κρυφή μνήμη. Οι κάτοχοι μεγάλων έργων PHP μπορούν να χρησιμοποιήσουν την εξαιρετική λειτουργία προσωρινής μνήμης opcode για την αποθήκευση όλων των προσαρμοσμένων δεδομένων. Με τη βοήθειά του, μπορείτε να αποθηκεύσετε αξιόπιστα ακόμη και αλλαγές παγκόσμιας σημασίας, επειδή καταλαμβάνουν λίγο χώρο και πρακτικά δεν καταλαμβάνουν μνήμη και η ταχύτητα δειγματοληψίας μπορεί επίσης να αυξηθεί σημαντικά. Εάν για ένα μεγάλο έργο ένα μπλοκ παγκόσμιων αλλαγών είναι γραμμένο σε ένα μόνο μηχάνημα, τότε η κίνηση αυξάνεται και αρχίζει να επιβραδύνεται πολύ. Για να λύσετε αυτό το πρόβλημα, πρέπει να αποθηκεύσετε καθολικές μεταβλητές σε μια κρυφή μνήμη κωδικού opcode ή να κλωνοποιήσετε μεταβλητές σε όλους τους διακομιστές και να προσθέσετε εξαιρέσεις στον αλγόριθμο κατακερματισμού συνέπειας.
  • ΚωδικοποιήσειςΑνατρέξτε σε αποτελεσματικές μεθόδους για την εκφόρτωση μιας βάσης δεδομένων. Αξίζει να σημειωθεί ότι το UTF-8 είναι μια εξαιρετική επιλογή, αλλά στα ρωσικά καταλαμβάνει πολύ χώρο, επομένως για ένα μονόγλωσσο σώμα, θα πρέπει πρώτα να σκεφτείτε την ορθολογική χρήση της κωδικοποίησης.
  • Ο ασυγχρονισμός θα βοηθήσει στη μείωση του χρόνου απόκρισης μιας εφαρμογής ή μιας ιστοσελίδας, καθώς και στη σημαντική μείωση του φόρτου στον ίδιο τον διακομιστή. Τα αιτήματα παρτίδας γίνονται πολύ πιο γρήγορα από τα συνηθισμένα μεμονωμένα. Για τεράστια έργα μπορείτε να χρησιμοποιήσετε μηνύματα RabbitMQ, ApacheMQ ή ZeroMQ και για μικρά έργα μπορείτε να χρησιμοποιήσετε μόνο το cron.

Πρόσθετες εφαρμογές για βελτιστοποίηση

  • SSHGuard ή η εναλλακτική τουείναι τυπική πρακτική για το ssh. Το Anti-brute force βοηθά στη δημιουργία αξιόπιστης προστασίας διακομιστή από επιθέσεις bot.
  • Xtrabackupαπό το Percona είναι ένα εξαιρετικό εργαλείο δημιουργίας αντιγράφων ασφαλείας MySQL που έχει πολλές ρυθμίσεις. Αλλά η ιδανική λύση εξακολουθεί να είναι η κλήση κλώνων στο ZFS, επειδή δημιουργούνται πολύ γρήγορα και για να επαναφέρετε τη βάση δεδομένων, αρκεί να αλλάξετε τις διαδρομές προς τα αρχεία στη διαμόρφωση μυών. Οι κλώνοι σάς επιτρέπουν να επαναφέρετε το σύστημά σας από την αρχή.
  • Μεταφορά αλληλογραφίας σε άλλο κεντρικό υπολογιστήθα εξοικονομήσει κίνηση και IOP εάν ο διακομιστής σας απλώς βομβαρδιστεί με ανεπιθύμητα μηνύματα.
  • Ενσωμάτωση με λογισμικό τρίτωνθα βοηθήσει στη βελτιστοποίηση του διακομιστή mysql. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε τη σύνδεση smtp/imap για να ανταλλάξετε μηνύματα, τα οποία δεν θα καταλαμβάνουν πολλή μνήμη. Για να δημιουργήσετε μια συνομιλία, αρκεί να χρησιμοποιήσετε τη βάση ενός διακομιστή jabber με έναν πελάτη javascript. Αυτά τα συστήματα, τα οποία βασίζονται σε προσαρμογείς σε προϊόντα εκτός ραφιού, είναι εξαιρετικά επεκτάσιμα.
  • Η παρακολούθηση είναι ένα πολύ σημαντικό στοιχείο, γιατί είναι αδύνατο να βελτιστοποιηθεί οτιδήποτε χωρίς λεπτομερή ανάλυση. Είναι απαραίτητο να παρακολουθείτε τις μετρήσεις απόδοσης, τους δωρεάν πόρους και τις καθυστερήσεις· Zabbix, Cacti, Nagios και άλλα εργαλεία θα σας βοηθήσουν σε αυτό. Το Web Performance Test σάς επιτρέπει να υπολογίσετε την ταχύτητα φόρτωσης ενός ιστότοπου ή ενός έργου, επομένως είναι πολύ χρήσιμο στην παρακολούθηση. Κατά τη ρύθμιση ενός διακομιστή απόδοσης, να θυμάστε ότι μόνο μια ενδελεχής ανάλυση θα βοηθήσει στην εξάλειψη όλων των προβλημάτων και στην εκτέλεση βελτιστοποίησης.

Αν δεν καταλάβατε τα μισά από όσα γράφτηκαν, δεν έχει σημασία.