perf(core): eliminate PHP session file lock contention on API/metrics, tune PHP-FPM pool, and remove redundant Keepalived restarts on sync
This commit is contained in:
1 parent
0b654c885c
commit
c93b52d99c
3 files changed
+35
-14
No files matched your search
+17
-10
@@ -42,7 +42,6 @@ header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||
|
||||
try {
|
||||
$db = Database::getConnection();
|
||||
Auth::startSession();
|
||||
|
||||
$action = trim((string)($_GET['action'] ?? ''));
|
||||
$rawBody = file_get_contents('php://input');
|
||||
@@ -51,6 +50,23 @@ try {
|
||||
$payload = $_POST;
|
||||
}
|
||||
|
||||
// Action inter-serveurs réplication Cluster (authentifiée par signature HMAC - aucune session requise)
|
||||
if ($action === 'cluster_receive_sync') {
|
||||
$signature = $_SERVER['HTTP_X_NEXUS_CLUSTER_SIGNATURE'] ?? '';
|
||||
$cm = new ClusterManager($db);
|
||||
$res = $cm->receiveSyncPayload($rawBody ?: '', $signature);
|
||||
echo json_encode($res);
|
||||
exit;
|
||||
}
|
||||
|
||||
Auth::startSession();
|
||||
|
||||
// Pour les requêtes en lecture seule fréquente (polling métriques / statut), libérer immédiatement le verrou de session
|
||||
// Cela évite de saturer les workers PHP-FPM par des verrous de fichiers sessions concurrents
|
||||
if (session_status() === PHP_SESSION_ACTIVE && ($action === 'get_metrics' || $action === 'cluster_status' || $action === 'get_system_info')) {
|
||||
session_write_close();
|
||||
}
|
||||
|
||||
// Actions publiques (Login / Logout)
|
||||
if ($action === 'login') {
|
||||
$username = trim((string)($payload['username'] ?? ''));
|
||||
@@ -86,15 +102,6 @@ try {
|
||||
exit;
|
||||
}
|
||||
|
||||
// Action inter-serveurs réplication Cluster (authentifiée par signature HMAC)
|
||||
if ($action === 'cluster_receive_sync') {
|
||||
$rawBody = file_get_contents('php://input') ?: '';
|
||||
$signature = $_SERVER['HTTP_X_NEXUS_CLUSTER_SIGNATURE'] ?? '';
|
||||
$cm = new ClusterManager($db);
|
||||
$res = $cm->receiveSyncPayload($rawBody, $signature);
|
||||
echo json_encode($res);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Toutes les autres actions requièrent une session authentifiée
|
||||
if (!Auth::isAuthenticated()) {
|
||||
|
||||
Reference in new issue
Block a user