Tôi có một ứng dụng web Flask sử dụng SQLAlchemy với MySQL, và tôi đã thiết lập một scopedsession(). Tôi cũng có một trình xử lý teardown_request gọi session.remove() sau khi mọi yêu cầu kết thúc. Đối với một số lý do lẻ, nếu không có yêu cầu được thực hiện trên các ứng dụng web cho một ngày hoặc nhiều hơn, các ứng dụng được "Operationalerror: MySQL Server đã biến mất".Thật kỳ quặc khi kết nối SQLAlchemy MySQL của tôi luôn kết thúc khi ngủ?
Trong sứ mệnh gỡ lỗi của tôi, tôi nhìn vào HIỂN THỊ processlist và thấy như sau:
39817253 | sqladmin | my_host | kb_dev | Sleep | 174 |
Các 174 là số giây kết nối từ ứng dụng của tôi đã được "ngủ". Nó tiếp tục đếm ngược nếu ứng dụng không thực hiện một yêu cầu khác.
Dường như ứng dụng của tôi giữ kết nối với MySQL ngay cả sau khi yêu cầu của tôi kết thúc! Và thường chỉ có một quy trình cho dù tôi có yêu cầu bao nhiêu lần với ứng dụng của tôi, đồng thời hay không.
Câu hỏi của tôi là nếu kết nối được "ngủ" lâu thì bình thường? Tôi khá chắc chắn ngủ mở rộng là gây ra MySQL để cắt kết nối sau một thời gian chờ nhất định mà lần lượt gây ra lỗi "OperationalError: Mysql đã biến mất".
Bạn đã giải quyết được sự cố chưa? Đặt pool_recycle không hoạt động đối với tôi. –