Для подключения к базе данных я использую python библиотеку asyncpg, настройки все оптимизировал, на всех таблицах индексы созданы, сервер 128гб оперативной 128 ядер, 1 NVME диск, ubuntu, есть проблема, когда пользователей мало все запросы выполняются в среднем за 60ms, но когда пользователей становится больше, даже самые простые запросы выполняются за 300ms+, почему так? Можно ли как то это исправить ?
Настройка asyncpg :
async def create(self):
pool = await asyncpg.create_pool(
user=config.PGUSER,
password=config.PGPASSWORD,
host=config.ip,
port=5432,
database=config.DATABASE,
max_size=300,
max_inactive_connection_lifetime=60.0,
min_size=20,
max_queries=100000,
statement_cache_size=16000,#9000
max_cached_statement_lifetime=300,
max_cacheable_statement_size=0,
command_timeout=120.0
)
self.pool = pool
Конфиг PostgreSQL:
https://pastebin.com/PtQTN6Ex
Еще иногда падают такие ошибки:
asyncpg.exceptions.DeadlockDetectedError: deadlock detected
DETAIL: Process 2220108 waits for ShareLock on transaction 14040699; blocked by process 2220462.
Process 2220462 waits for ShareLock on transaction 14040460; blocked by process 2220456.
Process 2220456 waits for ExclusiveLock on tuple (12,51) of relation 16565 of database 16385; blocked by process 2220108.
HINT: See server log for query details.