[英]Azure for MySQL (Single Server): occasional connection timeouts (2003, Can't connect to mysql server on ... (timed out))
[英]RDS Aurora Mysql and ECS connection timeouts (pymysql.err.OperationalError) (2003, "Can't connect to MySQL)
我有一個 ECS 集群,其中有兩個任務運行相同的容器/圖像。 我 terraform 集群和任務定義來啟動我的服務。 最近第一項任務開始正常,但第二項任務“卡住了”。 日志指示連接超時,因為正在調用連接池。 最終,第二個任務/容器將停止、耗盡並啟動新的任務/容器。 重復此循環,直到第二個實例連接並且一切正常。 一切似乎都在運行,第一個容器保持連接,一旦第二個容器開始運行,我就看不到進一步的超時。 這是怎么回事?
Python 非常簡單(基於 Grinberg 的 Mega 教程):
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
# This import will give me the missing MySQLdb python object
import pymysql
pymysql.install_as_MySQLdb()
# Create the DB engine object
db = SQLAlchemy()
migrate = Migrate()
def create_app(config_class=Config):
db.init_app(discipline)
migrate.init_app(discipline, db)
我試了一下,但沒有幫助:
SQLALCHEMY_ENGINE_OPTIONS = {
'connect_args': {
'connect_timeout': 30
}
}
日志文件:
File "/home/-/venv/lib/python3.9/site-packages/pymysql/connections.py", line 353, in __init__
self.connect()
File "/home/-/venv/lib/python3.9/site-packages/pymysql/connections.py", line 664, in connect
raise exc
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'my.cluster-on.us-east-1.rds.amazonaws.com' (timed out)")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/-/venv/lib/python3.9/site-packages/pymysql/connections.py", line 613, in connect
sock = socket.create_connection(
File "/usr/local/lib/python3.9/socket.py", line 843, in create_connection
raise err
File "/usr/local/lib/python3.9/socket.py", line 831, in create_connection
sock.connect(sa)
socket.timeout: timed out
我知道這是一個模糊的問題。 但是,在有幫助的設置或專門針對 ECS/RDS 的設置方面,有什么明顯的我忽略了嗎?
要添加的另一件事 - 使用 gunicorn 運行 - 3 名工人:
exec gunicorn -b :5000 -w 3 --log-level=warning --access-logfile - --error-logfile - my_app:"create_app()"
我終於弄明白了。 本質上它是 NACL 和安全組。 每個 ECS 任務都在特定的 su.net 中啟動,但 RDS 實例無法訪問。 運行狀況檢查終止任務並啟動另一個任務,隨機分配一個新的 su.net,一個可能有也可能沒有到 RDS 的路徑,直到最終可以建立連接並且任務保持運行。 由於對 inte.net 訪問資源的偏執,隨着時間的推移,我對 su.net 的使用、ENI 和 SG 變得有點不穩定。 整理我的 su.net/NACL/SG 配置后,一切正常。 希望這對其他人有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.