हम क्लाउड एसक्यूएल डेटाबेस के साथ Google कंटेनर इंजन पर एक Sails.js एपीआई चला रहे हैं और हाल ही में हम अपने कुछ अंतराल को रोक रहे हैं, कभी प्रतिक्रिया नहीं दे रहे हैं।Google क्लाउड एसक्यूएल कोई प्रतिक्रिया
मेरे पास स्वास्थ्य जांच निगरानी/v1/स्थिति थी और जब मैंने निम्नलिखित सरल प्रतिक्रिया दी तो यह 100% अपटाइम पंजीकृत हुआ;
status: function(req, res){
res.ok('Welcome to the API');
}
जैसे ही हमने डेटाबेस क्वेरी जोड़ा, एंडपॉइंट ने समय समाप्त कर दिया। यह हर समय नहीं होता है, लेकिन यादृच्छिक अंतराल पर, कभी-कभी अंत में घंटों तक। यही वह है जिसे हमने क्वेरी में बदल दिया है;
status: function(req, res){
Email.findOne({ value: "[email protected]" }).then(function(email){
res.ok('Welcome to the API');
}).fail(function(err){
res.serverError(err);
});
}
बल्कि संदेह से, यह सब हमारे मचान और विकास के वातावरण में ठीक काम करता है, यह तभी होता है जब कोड उत्पादन में तैनात है कि समय समाप्त होता है और यह केवल समय की कुछ होता है । स्टेजिंग और उत्पादन के बीच एकमात्र चीज वह डेटाबेस है जिसे हम कनेक्ट कर रहे हैं और सर्वर पर लोड।
जैसा कि मैंने पहले उल्लेख किया था हम Google Cloud SQL और Sails-MySQL एडाप्टर का उपयोग कर रहे हैं। हमारे पास उत्पादन सर्वर से निम्न त्रुटि स्टैक हैं;
AdapterError: Invalid connection name specified
at getConnectionObject (/app/node_modules/sails-mysql/lib/adapter.js:1182:35)
at spawnConnection (/app/node_modules/sails-mysql/lib/adapter.js:1097:7)
at Object.module.exports.adapter.find (/app/node_modules/sails-mysql/lib/adapter.js:801:16)
at module.exports.find (/app/node_modules/sails/node_modules/waterline/lib/waterline/adapter/dql.js:120:13)
at module.exports.findOne (/app/node_modules/sails/node_modules/waterline/lib/waterline/adapter/dql.js:163:10)
at _runOperation (/app/node_modules/sails/node_modules/waterline/lib/waterline/query/finders/operations.js:408:29)
at run (/app/node_modules/sails/node_modules/waterline/lib/waterline/query/finders/operations.js:69:8)
at bound.module.exports.findOne (/app/node_modules/sails/node_modules/waterline/lib/waterline/query/finders/basic.js:78:16)
at bound [as findOne] (/app/node_modules/sails/node_modules/lodash/dist/lodash.js:729:21)
at Deferred.exec (/app/node_modules/sails/node_modules/waterline/lib/waterline/query/deferred.js:501:16)
at tryCatcher (/app/node_modules/sails/node_modules/waterline/node_modules/bluebird/js/main/util.js:26:23)
at ret (eval at <anonymous> (/app/node_modules/sails/node_modules/waterline/node_modules/bluebird/js/main/promisify.js:163:12), <anonymous>:13:39)
at Deferred.toPromise (/app/node_modules/sails/node_modules/waterline/lib/waterline/query/deferred.js:510:61)
at Deferred.then (/app/node_modules/sails/node_modules/waterline/lib/waterline/query/deferred.js:521:15)
at Strategy._verify (/app/api/services/passport.js:31:7)
at Strategy.authenticate (/app/node_modules/passport-local/lib/strategy.js:90:12)
at attempt (/app/node_modules/passport/lib/middleware/authenticate.js:341:16)
at authenticate (/app/node_modules/passport/lib/middleware/authenticate.js:342:7)
at Object.AuthController.login (/app/api/controllers/AuthController.js:119:5)
at bound (/app/node_modules/sails/node_modules/lodash/dist/lodash.js:729:21)
at routeTargetFnWrapper (/app/node_modules/sails/lib/router/bind.js:179:5)
at callbacks (/app/node_modules/sails/node_modules/express/lib/router/index.js:164:37)
Error (E_UNKNOWN) :: Encountered an unexpected error :
Could not connect to MySQL: Error: Pool is closed.
at afterwards (/app/node_modules/sails-mysql/lib/connections/spawn.js:72:13)
at /app/node_modules/sails-mysql/lib/connections/spawn.js:40:7
at process._tickDomainCallback (node.js:381:11)
अकेले त्रुटियों को देखते हुए, मैं कहना है कि हम कुछ गलत तरह से कॉन्फ़िगर है परीक्षा होगी। लेकिन तथ्य यह है कि यह कुछ समय काम करता है (और पहले ठीक काम कर रहा है!) मुझे विश्वास दिलाता है कि यहां काम पर कुछ और काला जादू है। हमारा क्लाउड एसक्यूएल उदाहरण डी 0 है (हालांकि हमने आकार को डी 4 तक बढ़ाने की कोशिश की है) और हमारी सक्रियण नीति "हमेशा चालू" है।
संपादित करें: मैंने दूसरों को Google क्लाउड एसक्यूएल उदाहरण के बारे में शिकायत की है। this SO post और मैं संदिग्ध था लेकिन हमने बाद में हमारे डेटाबेस को अमेज़ॅन आरडीएस में स्थानांतरित कर दिया है और हम अभी भी एक ही समस्या को देख रहे हैं, इसलिए यह सेल और MySQL एडाप्टर के साथ एक समस्या होनी चाहिए।
यह समस्या दिन में डाउनटाइम के घंटों तक पहुंच रही है, हमें इसे हल करने की आवश्यकता है, किसी भी मदद की बहुत सराहना की जाती है!
लिंक में यह बताता है कि कोई क्यूपीएस सीमा नहीं है बल्कि अधिकतम समवर्ती कनेक्शन सीमा है। हम एक डी 0 इंस्टेंस का उपयोग कर रहे हैं जिसमें 250 समवर्ती कनेक्शन की सीमा है, हमने कभी भी इस्तेमाल किया है। हालांकि सुझाव के लिए धन्यवाद! –