40/sec σε 500/sec
Εισαγωγή
Έκπληκτος, από τον τίτλο; καλά, αυτό είναι
ένας γύρος για το πώς ραγίσαμε την εξελιξιμότητα jinx από το
χειρισμό πενιχρά 40 αρχεία ανά δευτερόλεπτο σε 500 αρχεία
ανά δευτερόλεπτο. Το Beware, τα περισσότερα από τα
προβλήματα που αντιμετωπίσαμε ήταν απλό, οι τόσο πεπειραμένοι
άνθρωποι να βρούν αυτό περιττό.
Περιεχόμενο
* 1,0 Πού ήμαστε;
1.1 Η μνήμη χτυπά τον ουρανό
1.2 Χαμηλό ποσοστό επεξεργασίας
1.3 Απώλεια στοιχείων: - (
1.4 Mysql μας τραβά κάτω
1.5 Αργός πελάτης Ιστού
* Δρόμος 2,0 στο νιρβάνα
2.1 Ελέγχοντας μνήμη!
2.2 Βελτιώνοντας ποσοστό επεξεργασίας
2.3 Ποια απώλεια uh-uh στοιχείων;
2.4 Ερωτήσεις συντονισμού SQL
2.5 Συντονίζοντας σχήμα βάσεων δεδομένων
2.5 Mysql μας βοηθά να προχωρήσουμε σταθερά!
2.6 Γρηγορότερα... γρηγορότερα πελάτης Ιστού
* Γραμμή 3,0 κατώτατων σημείων
Πού ήμαστε;
Αρχικά είχαμε ένα σύστημα που θα μπορούσε να
ξελεπιάσει μόνο μέχρι 40 αρχεία/SEC. Εγώ θα μπορούσε
ομαλός να ανακαλέσει τη συζήτηση, για "τι πρέπει να είναι το
ιδανικό ποσοστό αρχείων; ". Τελικά αποφασίσαμε ότι
40/sec ήταν το ιδανικό ποσοστό για μια ενιαία αντιπυρική
ζώνη. Έτσι όταν πρέπει να βγούμε, atleast έπρεπε να
υποστηρίξουμε 3 αντιπυρικές ζώνες. Ως εκ τούτου αποφασίσαμε
ότι 120/sec θα ήταν το ιδανικό ποσοστό. Με βάση τα
στοιχεία από τον ανταγωνιστή μας (σ) καταλήξαμε στο συμπέρασμα
που, αυτά θα μπορούσε να υποστηρίξει γύρω από 240/sec.
Σκεφτήκαμε ότι ήταν εντάξεϊ δεδομένου ότι ήταν η
πρώτη απελευθέρωσή μας. Επειδή όλοι οι ανταγωνιστές
μίλησαν για τον αριθμό αντιπυρικών ζωνών υποστήριξε αλλά όχι
στο ποσοστό.
Η μνήμη χτυπά τον ουρανό
Η μνήμη μας χτυπούσε πάντα τον ουρανό ακόμη και σε
512MB! (Εξαίρεση OutOfMemory) κατηγορήσαμε cewolf (σ)
την inmemory εναποθήκευση των παραγμένων εικόνων αλλά δεν θα
μπορούσαμε να δραπετεύσουμε για πολΰ Κανένα θέμα εάν
συνδέσαμε τον πελάτη ή όχι χρησιμοποιήσαμε για να χτυπήσουμε τον
ουρανό σε μερικές ανώτατες 3-4 ημέρες ημερών επίπεδες!
Κατά τρόπο ενδιαφέροντα, αυτό ήταν αναπαραγώγιμο όταν
στείλαμε τα στοιχεία στα πολύ υψηλά ποσοστά (έπειτα), γύρω από
50/sec. Το υποθέσατε σωστό, ένας απεριόριστος απομονωτής
που αυξάνεται έως ότου χτυπά τη στέγη.
Χαμηλό ποσοστό επεξεργασίας
Επεξεργαζόμαστε τα αρχεία στο ποσοστό των 40/sec.
Χρησιμοποιούσαμε τη μαζική αναπροσαρμογή του dataobject
(σ). Αλλά δεν έδωσε την αναμενόμενη ταχύτητα! Λόγω
αυτού αρχίσαμε να συσσωρεύουμε τα στοιχεία στη μνήμη με συνέπεια
τη μνήμη σανιδώματος!
Απώλεια στοιχείων: - (
Σε πολύ ψηλές ταχύτητες χρησιμοποιήσαμε για να
χάσουμε πολλών ένα πακέτο (σ). Φανήκαμε να έχουμε λίγη
απώλεια στοιχείων, αλλά αυτή οδήγησε σε ένα γουρούνι μνήμης.
Σε μερικοί poy για να περιορίσουμε το μέγεθος απομονωτών
αρχίσαμε μια σταθερή απώλεια στοιχείων περίπου 20% στα πολύ
υψηλά ποσοστά.
Το Mysql μας τραβά κάτω
Αντιμετωπίζαμε έναν σκληρό χρόνο όταν εισαγάγαμε
ένα αρχείο ημερολογίου περίπου 140MB. Το Mysql που
άρχισε στο γουρούνι, η μηχανή που άρχισε και μερικές φορές αυτό
σταμάτησε ακόμη και Προ πάντων, αρχίσαμε το αδιέξοδο (σ)
και το διάλειμμα συναλλαγής (σ). Όποιος μείωσε τελικά την
ανταπόκριση του συστήματος.
Αργός πελάτης Ιστού
Εδώ πάλι κατηγορήσαμε τον αριθμό γραφικών
παραστάσεων που παρουσιάσαμε σε μια σελίδα ως δυσχέρεια, που
αγνοεί το γεγονός ότι υπήρξαν πολλοί άλλοι παράγοντες που
τραβούσαν το σύστημα κάτω. Οι σελίδες που χρησιμοποιούνται
για να πάρουν 30 δευτερόλεπτα στο φορτίο για μια σελίδα με
6-8 γραφικές παραστάσεις και πίνακες μετά από 4 ημέρες στο
κέντρο στοιχείων Διαδικτύου.
Δρόμος στο νιρβάνα
Ελέγχοντας μνήμη!
Προσπαθήσαμε να βάλουμε ένα όριο στο μέγεθος
απομονωτών 10.000, αλλά δεν διάρκεσε για πολύ. Η
σημαντικότερη ρωγμή στο σχέδιο ήταν ότι υποθέσαμε ότι ο
απομονωτής περίπου 10000 θα αρκούσε, δηλ. θα ήμαστε αρχεία
διαδικασίας προτού να φθάσει ο απομονωτής 10.1000.
Ευθύγραμμος με την αρχή "που κάτι μπορεί να πάει στραβά
αυτό θα πάει στραβά!" πήγε στραβά. Αρχίσαμε τα
στοιχεία. Subsesquently αποφασίσαμε να πάμε με μια
επίπεδη βασισμένη στο αρχείο εναποθήκευση, όπου το στοιχείο
πετάχτηκε στο επίπεδο αρχείο και θα φορτωνόταν στη βάση
δεδομένων χρησιμοποιώντας τα "στοιχεία φορτίων infile".
Αυτά ήταν πολλοί χρόνοι γρηγορότερα από ένα μαζικό
ένθετο μέσω του οδηγού βάσεων δεδομένων που επίσης να θελήσετε
στον έλεγχο μερικές πιθανές βελτιστοποιήσεις με τα στοιχεία
φορτίων infile. Αυτό καθόρισε το πρόβλημά μας
αυξανόμενου μεγέθους απομονωτών των ακατέργαστων αρχείων.
Το δεύτερο πρόβλημα που αντιμετωπίσαμε ήταν η αύξηση
του cewolf (σ) στον εναποθηκεύοντας μηχανισμό μνήμης. Εξ
ορισμού χρησιμοποίησε "TransientSessionStorage" που οι κρύπτες
τα αντικείμενα εικόνας στη μνήμη, φάνηκαν εκεί να είναι κάποιο
πρόβλημα να καθαρίσουν επάνω τα αντικείμενα, ακόμα και αφού
χάθηκαν τα rerferences! Έτσι γράψαμε μια μικρή εφαρμογή
"FileStorage" που αποθηκεύουν τα αντικείμενα εικόνας στο τοπικό
αρχείο. Και θα εξυπηρετούταν όταν και όπως μπαίνει το
αίτημα. Επιπλέον, επίσης ένας μηχανισμός καθαρισμού στις
πολυδιατηρημένες εικόνες images(kacarjsmoy' παλαιότερες από
10mins).
Μια άλλη ενδιαφέρουσα πτυχή βρήκαμε ότι εδώ ήταν
ότι ο συλλέκτης απορριμάτων είχε τη χαμηλότερη προτεραιότητα
έτσι τα αντικείμενα που δημιουργούνται για κάθε ένα καταγράφουν,
καθαρίστηκαν μετά βίας επάνω. Εδώ είναι math λίγο να
εξηγήσει το μέγεθος του προβλήματος. Όποτε λαμβάνουμε ένα
αρχείο κούτσουρων δημιουργήσαμε ~20 objects(hashmap, οι
σειρές κ.λπ...) έτσι στο ποσοστό του 500/sec για 1 το δεύτερο,
ο αριθμός αντικειμένων ήταν 10.000 (20*500*1). Λόγω
στη βαριά επεξεργασία ο συλλέκτης απορριμάτων δεν είχε ποτέ μια
πιθανότητα στον καθαρισμό τα αντικείμενα. Έτσι το μόνο που
έπρεπε να κάνουμε ήταν ένα δευτερεύον τσίμπημα, ορίσαμε
ακριβώς "μηδενικό" στις αναφορές αντικειμένου. Voila!
ο συλλέκτης απορριμάτων δεν βασανίστηκε ποτέ εγώ υποθέτει
-)
Ποσοστό επεξεργασίας βελτιώσεων
Το ποσοστό επεξεργασίας ήταν σε ένα πενιχρό 40/sec
που σημαίνει ότι θα μπορούσαμε μετά βίας να αντισταθούμε ακόμη
και ένα μικρό ξέσπασμα των αρχείων κούτσουρων! Ο έλεγχος
μνήμης μας έδωσε κάποια παρηγοριά, αλλά το πραγματικό πρόβλημα
ήταν με την εφαρμογή των άγρυπνων φίλτρων πέρα από τα αρχεία.
Είχαμε περίπου 20 ιδιότητες για κάθε αρχείο,
χρησιμοποιήσαμε στην αναζήτηση όλων των ιδιοτήτων. Αλλάξαμε
την εφαρμογή που ταιριάζει με για εκείνες τις ιδιότητες που
είχαμε τα κριτήρια για! Επιπλέον, είχαμε επίσης μια
διαρροή μνήμης στην άγρυπνη επεξεργασία φίλτρων.
Διατηρήσαμε μια σειρά αναμονής που αυξήθηκε για πάντα.
Έτσι έπρεπε να διατηρήσουμε ένα επίπεδο αντικείμενο
αρχείων που πετά για να αποφύγουμε την επαν-ανάλυση των αρχείων
για να διαμορφώσουμε τα αντικείμενα! Επιπλέον,
χρησιμοποιήσαμε για να κάνουμε την πράξη της έρευνας για μια
αντιστοιχία για κάθε μια από την ιδιοκτησία ακόμα και όταν δεν
διαμορφώσαμε κανένα άγρυπνο κριτήριο.
Ποια απώλεια uh-uh στοιχείων;
Μόλις καθορίσαμε τα ζητήματα μνήμης στη λήψη των
στοιχείων που πετούν δηλ. στο επίπεδο αρχείο, δεν χάσαμε ποτέ τα
στοιχεία! Εκτός από αυτόν έπρεπε να αφαιρέσουμε μερικούς
ανεπιθύμητους δείκτες στον ακατέργαστο πίνακα για να αποφύγουμε
τα γενικά έξοδα πετώντας τα στοιχεία. Εμείς hadd
δείκτες για τις στήλες που θα μπορούσαν να έχουν ένα μέγιστο 3
πιθανών τιμών. Όποιος κατέστησε πραγματικά το ένθετο πιό
αργό και δεν ήταν χρήσιμος.
Ερωτήσεις συντονισμού SQL
Οι ερωτήσεις σας είναι τα κλειδιά σας στην απόδοση.
Μόλις αρχίσετε τα ζητήματα, θα δείτε ότι ακόμη
και να πρέπει να de-omalopoji'sete τους πίνακες. Το
κάναμε! Εδώ είναι μερικές από τις βασικές εκμαθήσεις:
* Η χρήση "αναλύει τον πίνακα" για να προσδιορίσει
πώς η ερώτηση mysql λειτουργεί. Αυτό θα σας δώσει τη
διορατικότητα περίπου γιατί η ερώτηση είναι αργή, δηλ. εάν
χρησιμοποιεί τους σωστούς δείκτες, εάν χρησιμοποιεί μια
ανίχνευση επιτραπέζιων επιπέδων κ.λπ....
* Μην διαγράψτε ποτέ τις σειρές όταν εξετάζετε τα
τεράστια στοιχεία της τάξεως των 50.000 αρχείων σε έναν
ενιαίο πίνακα. Πάντα προσπαθήστε να κάνετε έναν "πίνακα
πτώσησ" όσο το δυνατόν περισσότερο. Εάν δεν είναι δυνατό,
ξανασχεδιάστε το σχήμα σας, το οποίο είναι η μόνη έξοδός σας!
* Αποφύγετε ανεπιθύμητο ενώνει (σ), δεν είναι
φοβισμένος να de-omalopoji'sej (δηλ. αναπαράγετε τις τιμές
στηλών) αποφεύγει ενώνει (σ) όσο το δυνατόν περισσότερο,
τείνουν να τραβήξουν την ερώτησή σας κάτω. Ένα κρυμμένο
πλεονέκτημα είναι το γεγονός ότι επιβάλλουν την απλότητα στις
ερωτήσεις σας.
* Εάν εξετάζετε τα μαζικά στοιχεία, πάντα χρήση
"στοιχεία φορτίων infile" υπάρχουν δύο επιλογές εδώ, τοπικοί
και μακρινοί. Χρήση τοπική εάν το mysql και η εφαρμογή
είναι στην ίδια χρήση μηχανών ειδάλλως μακρινή.
* Προσπαθήστε να χωρίσετε τις σύνθετες ερωτήσεις σας
σε δύο ή τρεις απλούστερες ερωτήσεις. Τα πλεονεκτήματα σε
αυτήν την προσέγγιση είναι ότι ο πόρος mysql δεν είναι επάνω
για την ολόκληρη διαδικασία. Τείνετε να χρησιμοποιήσετε τους
προσωρινούς πίνακες. Αντί της χρησιμοποίησης μιας ενιαίας
ερώτησης που εκτάσεις σε 5-6 πίνακες.
* Όταν εξετάζετε το τεράστιο ποσό στοιχείων, δηλ.
θέλετε στα proces λέτε 50.000 αρχεία ή περισσότεροι σε μια
ενιαία ερώτηση προσπαθούν το όριο στη μαζική επεξεργασία τα
αρχεία. Αυτό θα σας βοηθήσει να ξελεπιάσετε το σύστημα στα
νέα ύψη
* Πάντα χρησιμοποιήστε τη μικρότερη συναλλαγή (σ)
αντί μεγάλων που εκτείνονται δηλ. στους πίνακες "ν". Αυτό
κλειδώνει τους πόρους mysql, οι οποίοι να προκαλέσουν τη
βραδύτητα του συστήματος ακόμη και για τις απλές ερωτήσεις
* Η χρήση ενώνει (σ) στις στήλες με τους δείκτες ή τα
ξένα κλειδιά
* Εξασφαλίστε ότι οι ερωτήσεις από το ενδιάμεσο με
τον χρήστη έχουν τα κριτήρια ή το όριο.
* Επίσης εξασφαλίστε ότι η στήλη κριτηρίων
συντάσσεται
* Δεν έχει την αριθμητική αξία στα κριτήρια SQL
μέσα στα αποσπάσματα, επειδή mysql κάνει έναν τύπο χυτό
* χρησιμοποιήστε τους προσωρινούς πίνακες όσο το
δυνατόν περισσότερο, και τον ρίξτε...
* Το ένθετο επίλεκτου/διαγράφει είναι μια διπλή
επιτραπέζια κλειδαριά... γνωρίστε...
* Πάρτε την προσοχή ότι όχι πόνος η βάση δεδομένων
mysql με τη συχνότητα των ενημερώσεων των στοιχείων σας στη
βάση δεδομένων. Είχαμε μια χαρακτηριστική περίπτωση που
χρησιμοποιήσαμε για να πετάξουμε στη βάση δεδομένων μετά από
κάθε 300 αρχεία. Έτσι όταν αρχίσαμε για 500/sec
αρχίσαμε ότι το mysql μας έσερνε κυριολεκτικά κάτω.
Αυτός είναι πότε συνειδητοποιήσαμε ότι το typicall στο
ποσοστό του 500/sec υπάρχει ένα "infile" αίτημα στοιχείων
φορτίων κάθε δευτερόλεπτο στη βάση δεδομένων mysql.
Έτσι έπρεπε να αλλάξουμε για να πετάξουμε τα αρχεία μετά
από 3 λεπτά παρά 300 αρχεία.
Συντονίζοντας σχήμα βάσεων δεδομένων
Όταν εξετάζετε το τεράστιο ποσό στοιχείων, πάντα
εξασφαλίστε ότι χωρίζετε τα στοιχεία σας. Αυτός είναι ο
δρόμος σας στην εξελιξιμότητα. Ένας ενιαίος πίνακας με
λέει ότι 10 lakhs δεν μπορούν ποτέ να ξελεπιάσουν. Όταν
σκοπεύετε να εκτελέσετε τις ερωτήσεις για τις εκθέσεις.
Πάντα έχει δύο επίπεδα πινάκων, ακατέργαστοι πίνακες ένα
για τα πραγματικά στοιχεία και ένα άλλο σύνολο για την έκθεση
tables(oj πίνακες που τα ενδιάμεσα με τον χρήστη ρωτούν
επάνω!) Πάντα εξασφαλίστε ότι το στοιχείο όσον αφορά τους
πίνακες εκθέσεών σας δεν αυξάνεται ποτέ πέρα από ένα όριο.
Το Incase εσείς προγραμματίζει να χρησιμοποιήσει το
Oracle, μπορείτε να δοκιμάσετε το χωρισμό βασισμένο στα
κριτήρια. Αλλά δυστυχώς mysql δεν υποστηρίζει αυτός.
Έτσι θα πρέπει να κάνουμε αυτού. Διατηρήστε έναν
πίνακα meta στον οποίο έχετε τις πληροφορίες επιγραφών που
δηλ. παρουσιάζουν για να ψάξουν, για ένα σύνολο δεδομένου χρόνου
κριτηρίων κανονικά.
* Έπρεπε να περπατήσουμε μέσω του σχήματος βάσεων
δεδομένων μας και προσθέσαμε για να προσθέσουμε μερικούς δείκτες,
διαγράφουμε μερικών και ακόμη και η αναπαραχθείσα στήλη (σ) για
να αφαιρέσει δαπανηρό ενώνει (σ).
* Πηγαίνοντας προς τα εμπρός συνειδητοποιήσαμε ότι η
κατοχή των ακατέργαστων πινάκων ως InnoDB ήταν πραγματικά
γενικά έξοδα στο σύστημα, έτσι το αλλάξαμε σε MyISAM
* Πήγαμε επίσης στην έκταση της μείωσης του αριθμού
σειρών στους στατικούς πίνακες σχετικούς μέσα ενώνουμε
* ΑΧΡΗΣΤΕΥΣΤΕ στους πίνακες βάσεων δεδομένων φαίνεται
να αναγκάζει κάποιο χτύπημα απόδοσης, να τους αποφύγει έτσι
* Δεν έχει τους δείκτες για τις στήλες που έχει
επιτρέψει τις τιμές 2-3
* Διαγώνιος έλεγχος η ανάγκη για κάθε δείκτη στον
πίνακά σας, είναι δαπανηροί. Εάν οι πίνακες είναι έπειτα
διπλού ελέγχου InnoDB η ανάγκη τους. Επειδή οι πίνακες
InnoDB φαίνονται να παίρνουν περίπου 10-15 φορές το μέγεθος
των πινάκων MyISAM.
* Χρήση MyISAM όποτε υπάρχει μια πλειοψηφία,
καθεμία μια από (επιλέξτε ή ένθετο) τις ερωτήσεις. Εάν το
ένθετο και επίλεκτος πρόκειται να είναι πιό έπειτα είναι
καλύτερο να υπάρξει ως InnoDB
Το Mysql μας βοηθά να προχωρήσουμε σταθερά!
Συντονίστε τον κεντρικό υπολογιστή mysql σας μόνο
αφού συντονίζετε λεπτοί τις ερωτήσεις/τα σχήματά σας και τον
κώδικά σας. Μόνο τότε μπορείτε να δείτε μια
perceivable βελτίωση στην απόδοση. Εδώ είναι μερικές
από τις παραμέτρους που έρχονται σε πρακτικό:
* Χρησιμοποιήστε το μέγεθος λιμνών απομονωτών που θα
επιτρέψει στις ερωτήσεις σας για να εκτελέσει γρηγορότερα --
innodb_buffer_pool_size=64M για InnoDB και να χρησιμοποιήσει --
βασικός-ψuφερ- size=32M για MyISAM
* Ακόμη και οι απλές ερωτήσεις άρχισαν περισσότερο
χρόνο από το αναμενόμενο. Ήμαστε πραγματικά μπερδεμένοϊ
Συνειδητοποιήσαμε ότι mysql φαίνεται να φορτώνει το
δείκτη οποιουδήποτε πίνακα που αρχίζει. Έτσι τι συνέβη
χαρακτηριστικά ήταν, οποιαδήποτε απλή ερώτηση σε έναν πίνακα με
5-10 σειρές διάρκεσε περίπου 1-2 SEC. Στην
περαιτέρω ανάλυση διαπιστώσαμε ότι αμέσως πριν από την απλή
ερώτηση, τα "στοιχεία φορτίων infile" συνέβησαν. Αυτό
εξαφανίστηκε όταν αλλάξαμε τους ακατέργαστους πίνακες στον τύπο
MyISAM, επειδή το μέγεθος απομονωτών για το innodb και
MyISAM είναι δύο διαφορετικές διαμορφώσεις.
για περισσότερες διαμορφώσιμες παραμέτρους
δείτε εδώ.
Ακρη: αρχίστε το mysql σας για να αρχίζετε με
την ακόλουθη επιλογή -- κούτσουρο-λάθος που αυτό θα επιτρέψει
την αναγραφή λάθους
Γρηγορότερα... γρηγορότερα πελάτης Ιστού
Το ενδιάμεσο με τον χρήστη είναι το κλειδί σε
οποιοδήποτε προϊόν, ειδικά η αντιληπτή ταχύτητα της σελίδας
είναι σημαντικότερη! Εδώ είναι ένας κατάλογος λύσεων και
εκμαθήσεων που να έρθει σε πρακτικό:
* Εάν το στοιχείο σας δεν πρόκειται να αλλάξει για
πέστε 3-5 λεπτά, είναι καλύτερο να εναποθηκευθούν οι
δευτερεύουσες σελίδες πελατών σας
* Τείνετε να χρησιμοποιήσετε Iframe(s)for τις
εσωτερικές γραφικές παραστάσεις κ.λπ. που δίνουν μια αντιληπτή
σταθερότητα στις σελίδες σας. Καλύτερα ακόμα χρησιμοποιήστε
το βασισμένο στο javascript ικανοποιημένο μηχανισμό φόρτωσης.
Αυτό είναι κάτι που να θελήσετε για να κάνετε όταν πρέπει
να πείτε 3 + γραφικές παραστάσεις στην ίδια σελίδα.
* Ο εξερευνητής Διαδικτύου επιδεικνύει ολόκληρη τη
σελίδα μόνο όταν παραλαμβάνεται όλο το περιεχόμενο από τον
κεντρικό υπολογιστή. Έτσι είναι ενδεδειγμένο να
χρησιμοποιήσει iframes ή javascript για την ικανοποιημένη
φόρτωση.
* Ποτέ πολλαπλάσια/διπλά λήμματα χρήσης του css
αρχείου στη σελίδα HTML. Ο εξερευνητής Διαδικτύου τείνει
να φορτώσει κάθε css αρχείο ως χωριστό λήμμα και ισχύει στην
πλήρη σελίδα!
Bottomline οι ερωτήσεις και το σχήμα σας καθιστά το
σύστημα πιό αργό! Τους καθορίστε πρώτα και κατηγορήστε
έπειτα τη βάση δεδομένων!
Δείτε επίσης
* Υψηλή απόδοση Mysql
* Απόδοση ερώτησης
* Εξηγήστε την ερώτηση
* Βελτιστοποίηση των ερωτήσεων
* Συντονισμός InnoDB
* Συντονισμός Mysql
Κατηγορίες: Συσκευή ανάλυσης αντιπυρικών ζωνών | Η απόδοση τοποθετεί αιχμή σε αυτήν την σελίδα
τροποποιήθηκε στο τέλος 18:00, 31 Αυγούστου 2005.
- Ramesh -
Αρθρο Πηγη: Messaggiamo.Com
Related:
» Seo Elite: New Seo Software!
» AntiSpywareBOT
» Reverse Mobile
» Error Nuker
Webmaster παίρνει τον κώδικα HTML
Προσθεστε αυτο το αρθρο στον ιστοτοπο σας τωρα!
Webmaster υποβάλλει τα άρθρα σας
Εγγραφή που απαιτείται καμία! Συμπληρώστε τη μορφή και το άρθρο σας είναι στον κατάλογο Messaggiamo.Com