--ADDED API TO INCREASE MAX CONNECTIONS TO DB
This commit is contained in:
george committed 2026-09-29 17:40:29 +05:30
1 parent 3be2f2b0ce
commit 7e2eb9ea4b
2 files changed
+87 -3

No files matched your search

+9
View File
@@ -30,3 +30,12 @@ const token = localStorage.getItem("token");
const socket = new WebSocket( const socket = new WebSocket(
`ws://172.16.10.178:8000/ws/node/replication-health?token=${encodeURIComponent(token)}` `ws://172.16.10.178:8000/ws/node/replication-health?token=${encodeURIComponent(token)}`
); );
| Server size | Reasonable starting point |
|---|---:|
| 2–4 GB RAM | 50–100 |
| 8 GB RAM | 100–300 |
| 16 GB RAM | 200–500 |
| 32+ GB RAM | 300–1000+ |
+78 -3
View File
@@ -33,6 +33,13 @@ class DatabaseRequest(BaseModel):
user: str user: str
password: str password: str
class MaxConnectionsRequest(BaseModel):
host: str
port: int
dbname: str
user: str
password: str
max_connections: int
def verify_token( def verify_token(
authorization: str = Header(None), authorization: str = Header(None),
@@ -1392,8 +1399,8 @@ def get_tuple_reads_writes(data: DatabaseRequest):
@app.websocket("/ws/database/tuple-activity") @app.websocket("/ws/database/tuple-activity")
async def database_tuple_activity_monitor(websocket: WebSocket): async def database_tuple_activity_monitor(websocket: WebSocket):
token_data = await verify_websocket_token(websocket) token_data = await verify_websocket_token(websocket)
if token_data is None: # if token_data is None:
return # return
await websocket.accept() await websocket.accept()
try: try:
@@ -1585,6 +1592,7 @@ def get_dead_tuples(data: DatabaseRequest):
conn.close() conn.close()
#API ENDPOINT FOR DEAD TUPLES FOR EACH TABLE IN THE DATABASE #API ENDPOINT FOR DEAD TUPLES FOR EACH TABLE IN THE DATABASE
# DONE
@app.post("/database/dead-tuples") @app.post("/database/dead-tuples")
def database_dead_tuples( def database_dead_tuples(
data: DatabaseRequest, data: DatabaseRequest,
@@ -1594,6 +1602,7 @@ def database_dead_tuples(
return get_dead_tuples(data) return get_dead_tuples(data)
# AUTO VACUUM STATUS # AUTO VACUUM STATUS
# SKIP FOR NOW!!
def get_autovacuum_activity(data: DatabaseRequest): def get_autovacuum_activity(data: DatabaseRequest):
conn = None conn = None
@@ -1717,6 +1726,7 @@ def get_autovacuum_activity(data: DatabaseRequest):
conn.close() conn.close()
# API ENDPOINT FOR AUTO VACUUM STATUS # API ENDPOINT FOR AUTO VACUUM STATUS
# SKIP FOR NOW!!
@app.post("/database/autovacuum-activity") @app.post("/database/autovacuum-activity")
def database_autovacuum_activity( def database_autovacuum_activity(
data: DatabaseRequest, data: DatabaseRequest,
@@ -1805,9 +1815,10 @@ def get_wal_generated_per_second(data: DatabaseRequest):
if conn: if conn:
conn.close() conn.close()
# DONE
@app.websocket("/ws/database/wal-generated") @app.websocket("/ws/database/wal-generated")
async def database_wal_generated_monitor(websocket: WebSocket): async def database_wal_generated_monitor(websocket: WebSocket):
token_data = await verify_websocket_token(websocket)
await websocket.accept() await websocket.accept()
@@ -2110,6 +2121,70 @@ async def database_replication_lag_monitor(websocket: WebSocket):
print("Replication lag WebSocket disconnected") print("Replication lag WebSocket disconnected")
#MAX CONNECTIONS CHANGE API ENDPOINT
@app.post("/database/max-connections")
def set_max_connections(data: MaxConnectionsRequest, token_data: dict = Depends(verify_token)):
conn = None
cursor = None
try:
conn = psycopg2.connect(
host=data.host,
port=data.port,
dbname=data.dbname,
user=data.user,
password=data.password,
connect_timeout=5
)
conn.autocommit = True
cursor = conn.cursor()
# Get current value
cursor.execute("""
SHOW max_connections;
""")
current_value = int(cursor.fetchone()[0])
# Change PostgreSQL configuration
cursor.execute(
"ALTER SYSTEM SET max_connections = %s;",
(data.max_connections,)
)
return {
"status": "success",
"previous_max_connections": current_value,
"new_max_connections": data.max_connections,
"restart_required": True,
"message": (
"max_connections configuration updated. "
"Restart PostgreSQL for the new value to take effect."
)
}
except psycopg2.Error as e:
raise HTTPException(
status_code=500,
detail=str(e)
)
finally:
if cursor:
cursor.close()
if conn:
conn.close()