te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>database - Getting Multiple Connection To the DB (Postgres) - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

database - Getting Multiple Connection To the DB (Postgres) - Stack Overflow

programmeradmin5浏览0评论

I get multiple connections to my Database, the query says "Rollback" and the connections increase instantaneously. and the duration of those connections are extremely high as compared to the other queries.

This is how quickly the connections get caught up.

Tech Stack: NextJS, Prisma ORM

Hosted on Digital Ocean App Platform

I also have tens of users using a Desktop application written in Electron but that also doesn't connect to db directly. it only send API requests to server

I get multiple connections to my Database, the query says "Rollback" and the connections increase instantaneously. and the duration of those connections are extremely high as compared to the other queries.

This is how quickly the connections get caught up.

Tech Stack: NextJS, Prisma ORM

Hosted on Digital Ocean App Platform

I also have tens of users using a Desktop application written in Electron but that also doesn't connect to db directly. it only send API requests to server

Share Improve this question asked Feb 18 at 3:49 Osama EhsanOsama Ehsan 332 silver badges4 bronze badges 1
  • And what is the problem? If there is a bug in your code, you could fix it or share it to get help – Frank Heikens Commented Feb 18 at 4:04
Add a comment  | 

2 Answers 2

Reset to default 0

Those are mostly idle connections from previous requests, waiting for new requests. Having ROLLBACK as the last statement means that the transaction ended with a rollback, which is perfectly normal.

This indicates that your application uses a connection pooler. When no active connection is available to handle new requests, a new connection is created. After committing or rolling back a transaction, these connections remain idle, ready to be reused by other requests later on. This approach avoids the overhead of reconnecting and conserves resources.

So, there's nothing to worry about.

If you want to see all idle connections in PostgreSQL, you can use the following query:

SELECT pid, usename, application_name, state, query_start, query 
FROM pg_stat_activity 
WHERE state = 'idle';

This will display all connections currently in an idle state, along with details about the user, application, and the last query executed.

You likely have some type of connection pooler running. A pooler will keep, say 20 active connections open and open more if you need them. Depending on the pooler configuration, it can simply run "rollback" when the connection ends, or some other initialization commands when a new connection starts. Typically your app will connect to this pooler, and the pooler will keep long running connections in the database. Without knowing what type of pooler you're running, it's hard to provide more information. Some examples are pgbouncer, pgpool-ii, odyssey and more. Additionally, a app server might have such capabilities built in, such as Java or node.

You'll have to look through your infrastructure to see what pooler you might be using. If you're certain that you're not using a pooler, you'll need to fix your code to end the connection when appropriate.

发布评论

评论列表(0)

  1. 暂无评论