簡體   English   中英

MariaDBConnector/Python 連接池獲取池中每個連接的連接速度變慢

[英]MariaDBConnector/Python Connection Pools get slower to get connections with each connection in the pool

我在 Python 3.11、Linux Mint、最新版本的 MariaDB 等上使用 MariaDB/Python 連接器,我這輩子都弄不明白。 我有一個名為get_connection()的簡單 function,它從mariadb.ConnectionPool返回一個Connection ,並且pool_size=1時,Postman 中的響應時間為 75 毫秒,而pool_size=5時,響應時間為 400 毫秒。 除了打開和關閉此連接的 FastAPI 中間件外,此請求中沒有其他任何內容。 這個問題有一個門檻,與使用ConnectionPool相比,每個請求打開一個新連接更快。

我希望get_connection()具有相同的響應時間,無論我有pool_size=5還是pool_size=64

這是代碼:

POOL = mariadb.ConnectionPool(
    host=os.environ.get("DATABASE_IP"),
    port=3306,
    user=os.environ.get("DATABASE_USER"),
    password=os.environ.get("DATABASE_PASSWORD"),
    pool_name="poolname",
    pool_size=5,
    pool_reset_connection=True
)


def get_connection() -> Connection:
    """
    Returns a DatabaseHandler object
    :return:
    """
    before = datetime.datetime.now()
    connection = POOL.get_connection()
    after = datetime.datetime.now()
    print((after - before).microseconds)
    return connection

在使用連接池而不是單個連接運行內部基准測試時,我們遇到了同樣的問題。

問題是在迭代未使用的連接時由不必要的健康檢查(發送 MYSQL_PING)引起的。

計划在 1.1.6 中修復(計划於 2 月中旬)

有關此問題的跟蹤狀態,請查看CONPY-245

更新(2 月 1 日):問題已修復,將在 1.1.6 版本中提供:

$ python3.11 conpy245.py
Acquiring 100000 connections via Pool
Pool size: 64
Average time per connection: 19 ms

Acquiring 100000 connections without Pool
Average time per connection: 170 ms

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM