Ερώτηση MYSQL - MAX CONNECTIONS

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
DeveloperGR
Δημοσιεύσεις: 67
Εγγραφή: 08 Νοέμ 2009 22:59

Ερώτηση MYSQL - MAX CONNECTIONS

Δημοσίευση από DeveloperGR » 08 Μάιος 2010 11:36

Καλησπέρα ,

Έχω την εξής απορία , η Default τιμή στο config της MYSQL για το MAX CONNECTIONS ειναι 100 , αυτό τι πρακτικά σημαινει ;; Εαν εγώ δηλ έχω 500 on line χρήστες οι οποιοι ανα 2-5 sec καλούν την MYSQL οι αιτήσεις αυτές μπαινουν στην ουρά ή αποριπτονται ;;

Σας ευχαριστώ πολύ.

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Ερώτηση MYSQL - MAX CONNECTIONS

Δημοσίευση από nbc » 08 Μάιος 2010 12:09

Δεν υπάρχει queue. Αν ο server έχει ήδη max_connections client threads ενεργά, τότε η επόμενη σύνδεση θα επιστρέψει "Too many connections" error.

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

Περισσότερα

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Ερώτηση MYSQL - MAX CONNECTIONS

Δημοσίευση από dva_dev » 08 Μάιος 2010 12:19

Αυτή είναι μια ερώτηση που μπορείς να απαντήσεις μόνος σου. Βάλε στη mysql στο μηχάνημα σου max connections=2 ή 1, και μετά άνοιξε το mysql administrator, το mysq query browser, την ιστοσελίδα από δύο διαφορετικούς browsers και βλέπεις τι γίνεται.
Κλείσε μια μια τις εφαρμογές και δοκίμασε πάλι κάθε φορά.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Ερώτηση MYSQL - MAX CONNECTIONS

Δημοσίευση από cherouvim » 08 Μάιος 2010 14:51

Η έννοια "500 online χρήστες" δεν λέει κάτι και η MySQL δεν ξέρει τι σημαίνει χρήστης.
Όση ώρα έχεις ανοιχτό ένα connection στη βάση τότε δεσμεύεις μία από τις 100 αυτές θέσεις.

100 connections γενικά είναι πάρα πολλά. Αν υποθέσουμε οτι μία εφαρμογή έχει traffic 10 pages/sec και κάθε page ολοκληρώνει την (σχετική με τη βάση) δουλειά σε 100ms τότε έχουμε τα εξής συμπεράσματα:
- αν τα 10 requests είναι ισοκαταμερισμένα μέσα στο δευτερόλεπτο (πραγματικά σπάνιο) τότε με 1 connection κάνεις τη δουλειά σου χωρίς να περιμένει κανείς από τους 10 χρήστες
- αν τα 10 requests σκάσουν μαζί τότε αν έχεις 1 max connection ο πρώτος θα εξυπηρετηθεί αμέσως, ο δεύτερος με καθυστέρηση 100ms, ο τρίτος με καθυστέρηση 200ms κτλ
- αν για κάποιο λόγο η db δουλειά σου αρχίσει να απαιτεί 1sec ή 5secs τότε καταλαβαίνεις οτι έχεις πρόβλημα

Τα παραπάνω ισχύουν χωρίς να υπολογίζουμε το το κόστος ανοίγματος του connection το οποίο τοπικά μπορεί να είναι 100-500ms (απαγορευτικό).
Σε σοβαρές εφαρμογές χρησιμοποιούμε πάντα connection pools τα οποία κρατάνε ανοιχτά τα connections και τα δίνουν στην εφαρμογή άμεσα όταν χρειαστεί (συνήθως σε κάθε pageview).

Γενικά μία εφαρμογή που peakάρει στα 30pages/sec και μέσο rendertime 300ms λειτουργεί χωρίς καθυστερήσεις στα 10 max connections και για σιγουριά ας πούμε βάζεις 30.

DeveloperGR
Δημοσιεύσεις: 67
Εγγραφή: 08 Νοέμ 2009 22:59

Ερώτηση MYSQL - MAX CONNECTIONS

Δημοσίευση από DeveloperGR » 08 Μάιος 2010 16:16

Η PHP διαθέτει connection pooling ή μιλάς για J2EE ;;

Εαν θεωρήσουμε οτι στήσω μια σελίδα ή οποια μπορεί να διαθέτει 10.000 χρήστες on line ( π.χ κάποιο Social Network ) κ αυτό έχει στηθεί σε Dedicated Server κ οχι σε Shared Server τότε τι τιμή ειναι καλό να βάλω στο MAX CONNECTIONS εαν θεωρήσω φυσικά οτι για κάποιες ώρες μπορώ να έχω 10.000 χρήστες ;;;;; Μπορεί να γίνει κάτι εαν έχω πολύ καλό hardware ή πρέπει να πάω σε λύσεις cloud ;;;;

Επίσης ποια γλώσσα θεωρείτε πολύ καλή για Server Side Programming;;;;;

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Ερώτηση MYSQL - MAX CONNECTIONS

Δημοσίευση από cherouvim » 08 Μάιος 2010 17:33

DeveloperGR έγραψε:Η PHP διαθέτει connection pooling ή μιλάς για J2EE ;;
Για Java. Στη PHP δεν ξέρω πως γίνεται αλλά κοίτα το http://php.net/manual/en/function.mysql-pconnect.php το οποίο λένε οτι θέλει προσοχή όμως.
DeveloperGR έγραψε:Εαν θεωρήσουμε οτι στήσω μια σελίδα ή οποια μπορεί να διαθέτει 10.000 χρήστες on line ( π.χ κάποιο Social Network ) κ αυτό έχει στηθεί σε Dedicated Server κ οχι σε Shared Server τότε τι τιμή ειναι καλό να βάλω στο MAX CONNECTIONS εαν θεωρήσω φυσικά οτι για κάποιες ώρες μπορώ να έχω 10.000 χρήστες ;;;;; Μπορεί να γίνει κάτι εαν έχω πολύ καλό hardware ή πρέπει να πάω σε λύσεις cloud ;;;;
Όπως σου είπα και πριν, εξαρτάται από το τι κάνει το κάθε pageview.
DeveloperGR έγραψε:Επίσης ποια γλώσσα θεωρείτε πολύ καλή για Server Side Programming;;;;;
Όλες. Δεν ξέρω τι εννοείς με το "πολύ καλή". Γενικά το security, robustness, performance και scalability είναι χαρακτηριστικά της εφαρμογής σου και όχι του περιβάλοντος στο οποίο αναπτύσεις.

DeveloperGR
Δημοσιεύσεις: 67
Εγγραφή: 08 Νοέμ 2009 22:59

Ερώτηση MYSQL - MAX CONNECTIONS

Δημοσίευση από DeveloperGR » 08 Μάιος 2010 18:03

Nομίζω πως η γλώσσά ή Τεχνολογία παίζει σημαντικό ρόλο......π.χ Η PHP ειναι διερμηνευομενη γλώσσα ενώ η ΑSP.NET μεταγλωτιζόμενη..Οπότε έχει καλύτερο optimize....επισης το Connection pooling που αναφερθηκε πριν.....Οπότε για αρχή πρέπει να εχω κατα νου να "Εκτελώ" οσο λιγότερα queria γίνετε ( βέλτιστο optimize )

Με Replication , Cluster έχει ασχοληθει κανείς;;; ειναι καλή λύση για τα παραπάνο δεδομένα που αναφέρω;;

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Ερώτηση MYSQL - MAX CONNECTIONS

Δημοσίευση από fafos » 08 Μάιος 2010 18:27

Sta social apps to vasiko provlhma einai ta logs ton xrhston pou kataxorountai kata xiliades sthn vash h anazhtountai apo authn... h empeiria mou exei deiksei oti olo to provlhma einai h efarmogh.. an h efarmogh "ksexna" na kleisei thn vash se kairia shmeia tote h vash katareei.. gia paradeigma an exeis sto upload enos video prota to upload kai apo kato thn kataxorhsh ton stoixeion sthn vash to pio pithano einai na pareis h max connection h mysql gone volta kai gyrna se ligo.. :lol:

an pragmati ypologizeis 10.000 xrhstes online tautoxrona ksexna oles tis etoimes efarmoges.. den se kalyptei kammia.. dokimasmeno...

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Ερώτηση MYSQL - MAX CONNECTIONS

Δημοσίευση από nbc » 08 Μάιος 2010 18:35

Όπως είπε ο cherouvim, τo "10.000 χρήστες online" δεν λέει - από μόνο του - και πολλά. Με τι session timeout? Τι θα κάνουν οι χρήστες: θα διαβάζουν, θα γράφουν ή θα τσατάρουν? Το μέγεθος που μας ενδιαφέρει, όταν μιλάμε για scalability, είναι το requests / second. αν κάθε request χρειάζεται 100ms για να εξυπηρετηθεί, τότε ο server αντέχει 10 request / sec. Τόσο απλά...

Πάντως, σύμφωνα με το link που σου έδωσα παραπάνω, η mySql πάνω από ~1000 ταυτόχρονες συνδέσεις δεν σηκώνει. Επίσης, δεν είναι μόνο ο sql server που έχει limits. Είναι και web server (o Apache έρχεται με limit τις 250 concurrent συνδέσεις, αν θυμάμαι καλά) και τελικά είναι και το OS, καθώς αυτό θα κληθεί να δημιουργήσει τα αντίστοιχα sockets (xρειάζονται τουλάχιστον 3 ανά request). Στο Linux, δύσκολα θα πας πάνω από 12.000 (/3=~4000). Στα Windows, άστο καλύτερα. O τελικός περιορισμός ορίζεται από τον ελάχιστο κοινό παρανομαστή.


Edit: η απάντηση μου αφορά την ερώτηση του OP.

DeveloperGR
Δημοσιεύσεις: 67
Εγγραφή: 08 Νοέμ 2009 22:59

Ερώτηση MYSQL - MAX CONNECTIONS

Δημοσίευση από DeveloperGR » 08 Μάιος 2010 18:51

Εαν θεωρήσουμε το εξής σενάριο :

Εχουμε 10.000 χρήστες ταυτοχρονα σε ενα D.Server με 16 GB RAM , RAID 500GB , Windows Server 2008 ( έβαλα ενα πολύ καλό Hardware ) και καθε 5 sec ο καθε χρήστης κάνει POST δεδομένα τα οποια καταγράφονται σε ενα κοινό πινακα της MYSQL κ σχεδόν παραλληλα ανα 8 sec γινετε refresh ο πινακας με τις καταγραφές όλων των χρηστών ( ένα απλό chat , μην πάμε σε τεχνικές , Socket Programming κτλ ) εδώ τι μπορούμε να κάνουμε ;;

Μήπως η μόνη λύση ειναι Cloud computing;;;

Υ.Γ : concurrent συνδέσεις ;; :question:

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Ερώτηση MYSQL - MAX CONNECTIONS

Δημοσίευση από cherouvim » 08 Μάιος 2010 20:00

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

Πάντως δες πρώτα αν μπορείς να κάνεις 2000 inserts/sec.
Αν καταφέρεις το insert στα 20ms τότε με 40 max connections στο pool είσαι just. Με 100 είσαι safe. Ενδεχομένως βέβαια στα inserts λόγω indexes να μην έχεις linear scalability, δηλαδή την υπόθεση οτι επειδή τα 50 συνεχόμενα inserts θα ολοκληρώσουν σε 1000ms πάει να πει οτι τα 50 inserts * 40 threads θα τελειώσουν και αυτά σε 1000ms. Μπορεί να χρειαστεί να αφαιρέσεις όλα τα indexes για να έχεις καλύτερο insert και να κάνεις replicate με binary log σε άλλο MySQL instance το οποίο θα έχει τα indexes και θα είναι read only για να τρέχει τα selects που θέλεις.

Μετά, φυσικά, θα έπρεπε να λύσεις το πρόβλημα των 2000 requests/sec στο επίπεδο του apache...

Για να εξομειώσεις το load δες το http://jakarta.apache.org/jmeter/
Για να μάθεις MySQL τέτοιου επιπέδου δες το http://www.mysqlperformanceblog.com/ και το http://amzn.com/0596101716
Τα http://amzn.com/0596529309 και http://amzn.com/0596522304 αν και μιλάνε περισσότερο για το client side performance του χρήστη σου, θα βοηθήσουν και το web server σου να μην "ιδρώνει" πολύ κάνοντας δουλιές που μπορεί να αποφύγει.

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Ερώτηση MYSQL - MAX CONNECTIONS

Δημοσίευση από nbc » 08 Μάιος 2010 20:11

Οι κοινοί θνητοί έχουν 100Mb uplink, σε dedicated server και port. Αυτό - για 10.000 συνδέσεις - μεταφράζεται σε 10Kb ανά user, δηλαδή ~1KB. Με 1.5ΚΒ MTU, το link έχει καταρρεύσει πριν ο server προλάβει να διακινήσει έστω και 1 byte. :D

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Ερώτηση MYSQL - MAX CONNECTIONS

Δημοσίευση από cherouvim » 09 Μάιος 2010 10:03

Και στο επίπεδο του μηχανήματος πάντος 10k connections είναι οριακά.
http://www.kegel.com/c10k.html
http://en.wikipedia.org/wiki/C10k

Για πες μας DeveloperGR, φτιάχνεις κάτι ενδιαφέρον;

DeveloperGR
Δημοσιεύσεις: 67
Εγγραφή: 08 Νοέμ 2009 22:59

Ερώτηση MYSQL - MAX CONNECTIONS

Δημοσίευση από DeveloperGR » 09 Μάιος 2010 13:21

Θέλω να αναπτύξω κατι σαν το zoo ( o client σε Flash δηλ ) και να έχει στοιχεία social network..... Μια μίξη δηλ ( δεν μπορώ να πω περισσότερα για την ώρα) :D :D

Την Cassandra database την έχετε ακούσει ;;; νομίζω πως ειναι πολύ καλή λύση..

Τελικά στην ερώτηση PHP , ASP.NET , J2EE τι απαντάτε( πάντα για την παραπάνω εφαρμογή ) ;;;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Ερώτηση MYSQL - MAX CONNECTIONS

Δημοσίευση από dva_dev » 09 Μάιος 2010 19:42

Σε τι λειτουργικό σύστημα θα τρέξει; Τι ξέρεις καλύτερα να χειρίζεσαι;

Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες