[pgsql-general: 17] Re: Hỗ trợ bug Npgsql.PostgresException (0x80004005): 53300: sorry, too many clients already
pgvn_support
support at postgresql.vn
Sun Jun 10 04:53:09 EDT 2018
Hi,
On 09/06/2018 9:07 CH, Trần Đức Thông wrote:
> Xin bạn,
>
> Mình hiện tại đang sử dụng PostgreSQL vào trong công việc. Tuy nhiên
> hiện giờ mình gặp một bug mà chưa giải quyết được. Nhờ các bạn tư vấn
> giúp. Chi tiết như sau
>
> Phiên bản PostgreSQL 10
>
> Mình có thực hiện một test như sau.
> 1. Tạo một Table có 4 cột, và insert vào đó 1120 bản ghi.
>
> 2. Viêt một web api sử dụng thư viện#Npgsql
> <https://www.facebook.com/hashtag/npgsql?source=feed_text>tạo kết nối
> đến db vào execute một function. Function này thực hiện một nhiệm vụ
> đơn giản là trả ra hết các bản ghi của table trên.
>
> 3. Sử dụng jemeter load test vào function trên. Với tham số Number Of
> Theard = 200, Ramp-Up = 0, Loop Count = 5.
>
> 4. Kết quả xảy ra lỗi "sorry, too many clients already" -> check trong
> db thấy số connection đang mở là 105. Trong khi theo config của
> PostgreSql max-connection = 100.
>
Số connections hiện tại trên PostgreSQL có thể xem từ view
pg_stat_activity của PostgreSQL.
max_connections không tính số lượng worker process (như background
worker, autovacuum launcher, ...).
Nên có trường hợp số lượng rows trong pg_stat_activity trả về giá trị
lớn hơn max_connections.
Ở phiên bản 10, có một số connections không được tính cho
max_connections cũng hiện thị trong pg_stat_activity như:
background writer, checkpointer, walwriter.
Nên giá trị connection đang mở có thể có giá trị 105 như bạn xác nhận.
> Mình không có nhiều kinh nghiệm với sql nên nhờ mọi người tư vấn giúp.
> Với 2 câu hỏi như sau.
>
> 1. Tạo sao lại xảy ra hiện tượng mở nhiều connection (sao connection
> pool k được dùng đến) trong chuỗi Connection string đã có tham số
> Pooling = true
>
Chức năng connection pooling bạn nói là ở phía npgsql, không phải bên
PostgreSQL.
Nên mình chỉ có thể trả lời khái quát như bên dưới.
Để tìm hiểu cụ thể bạn tham khảo documents (hoặc source) phía npgsql.
Thông thường vì PostgreSQL sử dụng mỗi process cho một kết nối,
nên ở một số Driver có chức năng pool connection (hoặc tạo kết nối trước
(prefork))
để giảm overhead khi có kết nối mới.
Bạn có thể chỉnh số lượng connections pool ở phía driver.
> Câu 2. Tại sao khi postgresql đã max connection -> các request sau
> không được được cho vào queue đợi khi thực khi xong các request hiện
> tại mới tiếp tự thưc thi các request mới. Mà theo hiên tại postgresql
> vẫn cố mở thêm conneciton mới dẫn đến xảy ra lỗi trên
>
Lỗi "sorry, too many clients already" là phía PostgreSQL trả về, khi số
lượng kết nối yêu cầu lớn hơn max_connections.
but PostgreSQL không tự mở thêm kết nối. Mở kết nối là do phía npgsql.
PostgreSQL cũng không có cơ chế queue để chứa các kết nối.
Bạn nên xem lại hệ thống bạn có mở kết nối khác ngoài npgsql không (Ví
dụ như cho mornitoring?) và
điều chỉnh lại max_connections (postgresql.conf) hoặc Max pool size
(npgsql) cho đúng.
>
>
>
>
>
>
> Nhờ các bạn tư vấn giúp.
>
> Mình xin cảm ơn.
> -------------------------------------------------------------------------------------------------
>
> *Tran Duc Thong*
> Software engineering
> Mobile: 0989 452 004
> Email: humg.thongit at gmail.com <mailto:humg.thongit at gmail.com>
Xin cảm ơn,
—
Together we work better
Cộng đồng PostgreSQL Việt Nam
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.postgresql.vn/pipermail/pgsql-general/attachments/20180610/f80714fa/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 34774679_1820173794713440_1674413414325157888_n.jpg
Type: image/jpeg
Size: 16623 bytes
Desc: not available
URL: <http://www.postgresql.vn/pipermail/pgsql-general/attachments/20180610/f80714fa/attachment-0005.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 34776555_1820163938047759_3125179472001630208_n.jpg
Type: image/jpeg
Size: 25358 bytes
Desc: not available
URL: <http://www.postgresql.vn/pipermail/pgsql-general/attachments/20180610/f80714fa/attachment-0006.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 34815573_1820167161380770_7656883969492779008_n.jpg
Type: image/jpeg
Size: 37510 bytes
Desc: not available
URL: <http://www.postgresql.vn/pipermail/pgsql-general/attachments/20180610/f80714fa/attachment-0007.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 34838297_1820164721381014_2112880329151741952_n.jpg
Type: image/jpeg
Size: 26905 bytes
Desc: not available
URL: <http://www.postgresql.vn/pipermail/pgsql-general/attachments/20180610/f80714fa/attachment-0008.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 35049242_1820165204714299_6562859883991924736_n.jpg
Type: image/jpeg
Size: 26642 bytes
Desc: not available
URL: <http://www.postgresql.vn/pipermail/pgsql-general/attachments/20180610/f80714fa/attachment-0009.jpg>
More information about the pgsql-general
mailing list