Django应用服务器间歇性Pooler Error问题排查求助
问题:HTTP服务器间歇性出现「连接池错误:服务器连接崩溃?」异常
HTTP服务器间歇性触发连接池错误:服务器连接崩溃?错误,已排查并修复系统中的长事务,但问题仍未解决。该错误随机出现,与流量负载无关联。
pgbouncer错误日志
2025-01-31 11:41:07.067 1 日志 C-0x55d7847ac110: logs/server_application_api@127.0.0.1:34186 关闭原因:客户端发起关闭请求(存活时长=0) 2025-01-31 11:41:07.051 1 日志 C-0x55d7847ac110: logs/server_application_api@127.0.0.1:34186 登录尝试:数据库=test 用户=server_application_api TLS=未启用 2025-01-31 11:41:06.988 1 日志 C-0x55d7847ac110: logs/server_application_api@127.0.0.1:34096 关闭原因:客户端发起关闭请求(存活时长=0) 2025-01-31 11:41:06.968 1 日志 C-0x55d7847ae820: logs/server_application_api@127.0.0.1:34048 关闭原因:客户端发起关闭请求(存活时长=0) 2025-01-31 11:41:06.952 1 日志 C-0x55d7847ac110: logs/server_application_api@127.0.0.1:34096 登录尝试:数据库=test 用户=server_application_api TLS=未启用 2025-01-31 11:41:06.948 1 警告 C-0x55d7847ac110: logs/server_application_api@127.0.0.1:40674 连接池错误:服务器连接崩溃?
CloudWatch指标
CloudWatch指标图显示数据库连接相关指标存在异常波动
当前pgbouncer配置
pgbouncer.ini.ctmpl: | [databases] logs = dbname='sample_db' host='sample_host' port=5432 user=sample_user_name pool_size=32 [pgbouncer] listen_addr = 0.0.0.0 listen_port = 6432 unix_socket_dir = /var/run/postgresql auth_type = plain auth_file = /etc/pgbouncer/userlist.txt admin_users = sample_user_name stats_users = stats, root pool_mode = session server_reset_query = DISCARD ALL ignore_startup_parameters = extra_float_digits server_check_query = select 1 server_check_delay = 30 max_client_conn = 100 default_pool_size = 20 reserve_pool_size = 5 reserve_pool_timeout = 3 max_db_connections = 50 max_user_connections = 50 log_connections = 1 log_disconnections = 1 log_pooler_errors = 1 server_round_robin = 0 server_lifetime = 1200 server_idle_timeout = 60 server_connect_timeout = 15 server_login_retry = 15 query_timeout = 0 query_wait_timeout = 0 client_idle_timeout = 0 client_login_timeout = 60 autodb_idle_timeout = 3600 pkt_buf = 2048 listen_backlog = 128 tcp_defer_accept = 0 tcp_socket_buffer = 0 tcp_keepalive = 1 tcp_keepcnt = 0 tcp_keepidle = 0 tcp_keepintvl = 0 dns_max_ttl = 15 dns_zone_check_period = 0 pidfile = /var/log/pgbouncer/pgbouncer.pid idle_transaction_timeout = 15
(注:配置项关键字保留英文,为行业通用术语)
问题更新
已解决所有慢事务,消除了空闲查询,但仍出现突发的499请求峰值,说明空闲事务是错误的结果而非原因。
Nginx错误日志
{"connection": "13", "connection_requests": "1", "pid": "7", "request_id": "06ee9ab04bf", "request_length": "139", "remote_addr": "172.31.189.8", "remote_user": "", "remote_port": "2118", "time": "2025-08-06T14:03:40+00:00", "request": "GET /health_check HTTP/1.1", "full_path": "/health_check", "args": "", "downstream_service": "", "status": "499", "body_bytes_sent": "0", "bytes_sent": "0", "http_referer": "", "http_user_agent": "ELB-HealthChecker/2.0", "http_x_forwarded_for": "", "http_host": "172.24.93.01", "server_name": "", "request_time": "2.001", "upstream": "0.0.0.0:8000", "upstream_connect_time": "-", "upstream_header_time": "-", "upstream_response_time": "-", "upstream_response_length": "0", "upstream_cache_status": "", "method": "GET", "http_cf_ray": "" } {"connection": "13", "connection_requests": "6", "pid": "7", "request_id": "d8eb51bad5a99", "request_length": "1346", "remote_addr": "172.31.22.21", "remote_user": "", "remote_port": "2944", "time": "2025-08-06T14:03:40+00:00", "request": "POST /api/management/callback/1292 HTTP/1.1", "full_path": "/api/management/callback/1292", "args": "", "downstream_service": "", "status": "499", "body_bytes_sent": "0", "bytes_sent": "0", "http_referer": "", "http_user_agent": "", "http_x_forwarded_for": "172.31.173.23, 172.31.253.13, 172.22.172.11", "http_host": "logs-server.prod-sgp-k8s.xyz.io", "server_name": "", "request_time": "5.003", "upstream": "0.0.0.0:8000", "upstream_connect_time": "-", "upstream_header_time": "-", "upstream_response_time": "-", "upstream_response_length": "0", "upstream_cache_status": "", "method": "POST", "http_cf_ray": "" }
(注:Nginx日志字段保留英文,为行业通用格式)
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

