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:
sorcier committed 2026-11-05 23:46:02 +01:00
1 parent 0b654c885c
commit c93b52d99c
3 files changed
+35 -14

No files matched your search

+17 -10
View File
@@ -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()) {