Σφάλμα Πυλώνες - «MySQL διακομιστής έχει πάει μακριά»

ψήφοι
13

[Ελπίζω ότι αυτό δεν είναι πολύ σκοτεινή ... Θα ζητήσω από την ομάδα συζήτησης, αν κανείς δεν ξέρει εδώ]

Είμαι χρησιμοποιώντας πυλώνες (α πλαίσιο python) για να εξυπηρετήσει μια απλή web εφαρμογή, αλλά φαίνεται να πεθάνει από καιρό σε καιρό, με αυτό το αρχείο καταγραφής σφαλμάτων: (2006, 'MySQL server has gone away')

Έκανα ένα κομμάτι του ελέγχου, και είδε ότι αυτό ήταν επειδή οι συνδέσεις με MySQL δεν είχαν ανανεωθεί. Αυτό δεν πρέπει να είναι ένα πρόβλημα όμως, επειδή το sqlalchemy.pool_recycleστο αρχείο ρυθμίσεων πρέπει να το κρατήσει ζωντανό αυτόματα. Η προεπιλογή ήταν 3600, αλλά μου καλέσατε πίσω 1800λόγω αυτού του προβλήματος. Με βοήθησε λίγο, αλλά 3600 θα πρέπει να είναι μια χαρά, σύμφωνα με τα έγγραφα. Τα λάθη εξακολουθούν να συμβαίνουν ημι-τακτική βάση. Δεν θέλω να μειώσει το πάρα πολύ αν και DOS δική μου :) βάσης δεδομένων.

Ίσως κάτι σε MySQL config μου είναι ανόητος; Δεν είστε σίγουροι πού να δούμε ακριβώς.

Άλλες σχετικές πληροφορίες:

  Python 2.5
  Pylons: 0.9.6.2 (w/ sql_alchemy)
  MySQL: 5.0.51
Δημοσιεύθηκε 11/08/2008 στις 18:59
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
2

Μπορεί να θέλετε να ελέγξετε τις μεταβλητές χρονικό όριο της MySQL:

show variables like '%timeout%';

Είστε πιθανώς ενδιαφέρονται wait_timeout(λιγότερο πιθανή, αλλά είναι δυνατόν: interactive_timeout). Σε Debian και το Ubuntu, οι προεπιλογές είναι 28800 (MySQL σκοτώνει συνδέσεις μετά από 8 ώρες), αλλά ίσως η προεπιλογή για την πλατφόρμα σας είναι διαφορετική ή όποιος διαχειρίζεται το διακομιστή έχει διαμορφωθεί τα πράγματα διαφορετικά.

AFAICT, pool_recycleδεν τηρεί πραγματικά τις συνδέσεις ζωή, τους λήγει στις δικές του πριν MySQL τους σκοτώνει. Δεν είμαι εξοικειωμένος με πυλώνες, αλλά αν προκαλούν τις συνδέσεις για να κάνει κατά διαστήματα μια SELECT 1;είναι μια επιλογή, που θα τους κρατήσει ζωντανούς στο κόστος ουσιαστικά χωρίς φορτίο του server και ελάχιστη κίνηση του δικτύου. Μια τελευταία σκέψη: είστε κατά κάποιο τρόπο καταφέρνουν να χρησιμοποιήσετε μια σύνδεση που πυλώνες σκέφτεται ότι έχει λήξει;

Απαντήθηκε 18/08/2008 στις 20:35
πηγή χρήστη

ψήφοι
6

Νομίζω ότι το σταθερό. Είναι Αποδεικνύεται Είχα ένα απλό λάθος ρυθμίσεων. ini αρχείο μου έχει ως εξής:

sqlalchemy.default.url = [connection string here]
sqlalchemy.pool_recycle = 1800

Το πρόβλημα είναι ότι μου environment.pyαρχείο δήλωσε ότι ο κινητήρας θα χαρτογραφήσει μόνο τα πλήκτρα με το πρόθεμα: sqlalchemy.defaultέτσι pool_recycleαγνοήθηκε.

Η λύση είναι να αλλάξει απλά τη δεύτερη γραμμή στα ini να:

sqlalchemy.default.pool_recycle = 1800
Απαντήθηκε 05/09/2008 στις 17:07
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more