# 连接错误：(pymysql.err.OperationalError) (1040, '连接数过多')

- **ID:** `cloud/gcp-cloud-sql-connection-limit-exceeded`
- **领域:** cloud
- **类别:** resource_error
- **错误码:** `1040`
- **验证级别:** ai_generated
- **修复率:** 85%

## 根因

Cloud SQL 实例已达到 max_connections 限制，通常由连接泄漏或实例规格不足引起。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| Cloud SQL for MySQL 8.0 | active | — | — |
| Cloud SQL for PostgreSQL 15 | active | — | — |
| Cloud SQL Proxy 2.0 | active | — | — |

## 解决方案

1. ```
   使用连接池如 HikariCP (Java) 或 SQLAlchemy pool_pre_ping=True 配合 pool_size=10 和 max_overflow=0。Python 示例：engine = create_engine('mysql+pymysql://user:pass@host/db', pool_size=10, max_overflow=0, pool_pre_ping=True)
   ```
2. ```
   临时通过 Cloud SQL 标志增加 max_connections：gcloud sql instances patch INSTANCE_NAME --database-flags max_connections=500，然后根据需要扩展实例规格。
   ```
3. ```
   手动清理空闲连接：SELECT CONCAT('KILL ', id, ';') FROM information_schema.processlist WHERE command = 'Sleep' AND time > 300；然后执行生成的 KILL 语句。
   ```

## 无效尝试

- **** — Restarting the instance resets connections but doesn't fix the leak; it recurs quickly. (95% 失败率)
- **** — Only increasing max_connections in flags without addressing connection pooling or instance memory leads to OOM or crash. (80% 失败率)
- **** — Adding more application instances without connection limits just multiplies the connections hitting the same limit. (90% 失败率)
