Chúng tôi đang chạy API Sails.js trên Google Container Engine với cơ sở dữ liệu Cloud SQL và gần đây chúng tôi đã tìm thấy một số điểm cuối của chúng tôi đã ngừng hoạt động, không bao giờ gửi phản hồi.Google Cloud SQL Không có phản hồi
Tôi đã kiểm tra tình trạng/trạng thái/trạng thái kiểm tra và đăng ký 100% thời gian hoạt động khi tôi có phản hồi đơn giản sau đây;
status: function(req, res){
res.ok('Welcome to the API');
}
Ngay sau khi chúng tôi thêm truy vấn cơ sở dữ liệu, điểm cuối bắt đầu hẹn giờ. Nó không xảy ra tất cả các thời gian, nhưng dường như trong khoảng thời gian ngẫu nhiên, đôi khi cho giờ kết thúc. Đây là những gì chúng tôi đã thay đổi truy vấn;
status: function(req, res){
Email.findOne({ value: "[email protected]" }).then(function(email){
res.ok('Welcome to the API');
}).fail(function(err){
res.serverError(err);
});
}
Thay nghi ngờ, điều này tất cả hoạt động tốt trong môi trường dàn dựng và phát triển của chúng tôi, nó chỉ khi mã được triển khai trong sản xuất rằng thời gian chờ xảy ra và nó chỉ xảy ra một số thời gian . Điều duy nhất thay đổi giữa dàn dựng và sản xuất là cơ sở dữ liệu chúng tôi đang kết nối và tải trên máy chủ.
Như tôi đã đề cập trước đó, chúng tôi đang sử dụng Google Cloud SQL và bộ điều hợp Sails-MySQL. Chúng tôi có các lỗi ngăn xếp sau đây từ máy chủ sản xuất;
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)
Nhìn vào các lỗi một mình, tôi muốn được cám dỗ để nói rằng chúng tôi có một cái gì đó sai. Nhưng thực tế là nó hoạt động một số thời gian (và trước đó đã được làm việc tốt!) Dẫn tôi để tin rằng có một số ma thuật đen khác tại nơi làm việc ở đây. Ví dụ Cloud SQL của chúng tôi là D0 (mặc dù chúng tôi đã thử tăng kích thước lên D4) và chính sách kích hoạt của chúng tôi là "Luôn bật".
EDIT: Tôi đã thấy những người khác phàn nàn về Google Cloud SQL ví dụ: this SO post và tôi đã nghi ngờ nhưng chúng tôi đã chuyển cơ sở dữ liệu của mình sang Amazon RDS và chúng tôi vẫn thấy các vấn đề tương tự, vì vậy nó phải là một vấn đề với buồm và bộ điều hợp mysql.
Vấn đề này dẫn đến hàng giờ ngừng hoạt động mỗi ngày, chúng tôi cần nó giải quyết, mọi trợ giúp đều được đánh giá cao!
Trong liên kết, nó giải thích rằng không có giới hạn QPS mà là giới hạn kết nối đồng thời tối đa. Chúng tôi đang sử dụng một trường hợp D0 trong đó có một giới hạn của 250 kết nối đồng thời, hầu hết chúng tôi đã từng sử dụng là 12. Cảm ơn lời đề nghị mặc dù! –