seo-generator-server/STARTUP_ANALYSIS.md
StillHammer cd79ca9a4a chore: Add documentation, scripts and monitoring tools
- Add comprehensive documentation (IMPLEMENTATION_COMPLETE, ProductionReady, QUICK_START, STARTUP_ANALYSIS)
- Add startup scripts (start-server.sh, start-server.bat, check-setup.sh)
- Add configs directory structure with README
- Add ValidationGuards and Main.js backup
- Add LLM monitoring HTML interface
- Add cache templates and XML files
- Add technical report (rapport_technique.md)
- Add bundled code.js

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-12 16:10:56 +08:00

7.5 KiB

🔍 Analyse Temps de Démarrage - 53 Secondes

Situation : Le serveur prend ~53 secondes pour démarrer Question : Est-ce normal ? Que se passe-t-il pendant ce temps ?


⏱️ Timeline du Démarrage

Phase 1: Chargement Modules Node.js (5-10s)

[0-10s] Chargement des dépendances npm
├── express
├── googleapis (LOURD - ~3-5s)
├── @anthropic-ai/sdk
├── openai
├── aws-sdk (pour Digital Ocean)
├── axios
├── ws (WebSocket)
└── ... 50+ autres packages

Pourquoi c'est long ?

  • googleapis est un package très lourd (~15MB)
  • Première initialisation du SDK Google Sheets
  • Parsing de tous les modules npm

Phase 2: Initialisation du Serveur (1-2s)

[10-12s] Démarrage server.js
├── Chargement .env (dotenv.config())
├── Banner de démarrage
├── Setup signal handlers
└── ModeManager.initialize()

Rien d'anormal ici.


Phase 3: ManualServer Start (2-5s)

[12-17s] ManualServer.start()
├── setupExpressApp() - Instantiation Express
├── setupAPIRoutes() - Enregistrement 30+ routes
├── setupWebInterface() - Configuration static files
├── setupWebSocketServer() - Lancer WS sur port 8081
├── startHTTPServer() - Lancer HTTP sur port 3000
└── startMonitoring() - Démarrer health checks

Rien d'anormal ici non plus.


Phase 4: LE PROBLÈME - Lazy Loading Google Sheets (30-40s)

C'est ICI que ça traîne ! 🐌

[17-53s] ❌ PREMIÈRE CONNEXION GOOGLE SHEETS (NON VISIBLE DANS LOGS)

Ce qui se passe (caché) :

  1. Chargement du SDK Google : googleapis initialise ses services
  2. Authentication Google :
    • Parse de GOOGLE_PRIVATE_KEY (clé PEM longue)
    • Génération du JWT token
    • Appel API Google OAuth2 : https://oauth2.googleapis.com/token
    • Validation credentials
  3. Connexion Google Sheets API :
    • Premier appel à sheets.spreadsheets.values.get()
    • Latence réseau (~500-1000ms)
    • Cache warming Google

Pourquoi 30-40 secondes ?

Probablement PLUSIEURS raisons combinées :

Cause Impact Estimé Raison
🌐 Connexion réseau lente 10-20s Si tu es sur WSL ou VPN
🔐 Auth Google lente 5-10s Génération JWT + validation
🗄️ Google Sheets timeout 10-15s Première connexion à la Sheet
💾 Cache cold start 5-10s Pas de cache au premier démarrage

🔍 Preuve : Où est la Connexion Google ?

Vérifions si le code fait un appel Google Sheets au démarrage :

# Chercher les appels Google Sheets potentiels
grep -r "getPersonalities\|readInstructionsData" lib/ --include="*.js"

Hypothèse :

  • BrainConfig.js est importé quelque part
  • Une fonction fait un await getPersonalities() ou readInstructionsData()
  • Ça bloque le démarrage

🧪 Test Diagnostic : Confirmer l'Hypothèse

Option 1 : Logs de timing détaillés

Modifie server.js ligne 35 pour ajouter :

// AVANT
const mode = await ModeManager.initialize();

// APRÈS
console.time('ModeManager.initialize');
const mode = await ModeManager.initialize();
console.timeEnd('ModeManager.initialize');

Relance et regarde le temps affiché.

Option 2 : Ajouter des timestamps

Dans lib/modes/ManualServer.js, ligne 61-87, ajoute des logs :

logSh('🎯 Démarrage ManualServer...', 'INFO');
const startTime = Date.now();

// 1. Configuration Express
console.log(`[${Date.now() - startTime}ms] setupExpressApp`);
await this.setupExpressApp();

// 2. Routes API
console.log(`[${Date.now() - startTime}ms] setupAPIRoutes`);
this.setupAPIRoutes();

// 3. Interface Web
console.log(`[${Date.now() - startTime}ms] setupWebInterface`);
this.setupWebInterface();

// 4. WebSocket
console.log(`[${Date.now() - startTime}ms] setupWebSocketServer`);
await this.setupWebSocketServer();

// 5. HTTP Server
console.log(`[${Date.now() - startTime}ms] startHTTPServer`);
await this.startHTTPServer();

Ça te dira EXACTEMENT où ça bloque.


🎯 Verdict Probable

Est-ce Normal ?

NON, 53 secondes c'est PAS normal.

Attendu : 5-10 secondes maximum

Ce qui est normal :

  • 3-5s pour charger googleapis (gros package)
  • 2-3s pour démarrer Express + WebSocket
  • 1-2s pour parser .env et configurer routes

Ce qui est ANORMAL :

  • 30-40s cachés quelque part
  • Probablement un appel Google Sheets bloquant au démarrage
  • Ou une connexion réseau qui timeout/retry

🛠️ Solutions Possibles

Solution 1 : Lazy Loading Google Sheets (Recommandée)

Ne PAS charger Google Sheets au démarrage, seulement quand nécessaire.

Vérifier :

  • lib/BrainConfig.js ne doit PAS faire d'appels Google au require()
  • Uniquement charger Google Sheets quand l'utilisateur fait une vraie requête

Solution 2 : Connexion Asynchrone en Background

// Démarrer serveur SANS attendre Google Sheets
await this.startHTTPServer();
logSh('✅ Serveur démarré (Google Sheets en chargement...)');

// Charger Google Sheets en arrière-plan
this.loadGoogleSheetsAsync();

Solution 3 : Cache au Premier Démarrage

// Sauvegarder les personnalités dans un fichier local
// Charger depuis cache au lieu de Google Sheets
if (existsSync('cache/personalities.json')) {
  personalities = require('./cache/personalities.json');
} else {
  personalities = await fetchFromGoogleSheets();
  saveToCache('cache/personalities.json', personalities);
}

📊 Benchmarks Attendus

Environnement Temps Attendu Raison
Localhost (sans Google) 3-5s Juste Node + Express
Localhost (avec Google) 8-12s + Auth Google + 1er appel API
WSL (réseau lent) 15-25s Latence réseau Windows ↔ WSL
VPN/Proxy 20-40s Latence Google Sheets API
Ton cas actuel 53s Problème probable

🔎 Action Immédiate : Diagnostic

Exécute ça pour confirmer :

# Lancer avec logs Node.js complets
NODE_DEBUG=module npm start 2>&1 | grep -E "googleapis|google-auth"

Ou ajoute des console.time() dans le code pour trouver le coupable exact.


💡 Ma Recommandation

2 options selon ton besoin :

Option A : "C'est acceptable"

Si tu peux vivre avec 53s :

  • OK si : Tu démarres le serveur 1 fois/jour
  • OK si : Pas de redémarrages fréquents
  • PAS OK si : Tu développes activement (restart constant)

Option B : "Je veux optimiser"

Si 53s est inacceptable :

  • 🔧 Diagnostic : Ajouter des console.time() partout
  • 🔧 Fix : Lazy loading Google Sheets
  • 🔧 Cache : Sauvegarder personnalités en local
  • 🎯 Objectif : Descendre à 8-12 secondes

🎓 Résumé : Pourquoi 53s ?

Décomposition probable :

3-5s   : Chargement modules Node.js
2-3s   : Initialisation Express + WebSocket
1-2s   : Configuration routes
40-45s : ❌ MYSTÈRE (probablement Google Sheets)
-------
~53s   TOTAL

Le coupable probable :

  • Appel Google Sheets au démarrage (auth + première connexion)
  • Latence réseau (WSL ou VPN)
  • Timeout/retry automatique

C'est pas "cassé", mais c'est optimisable !


🚀 Tu veux que je trouve le vrai coupable ?

Dis-moi et je peux :

  1. Ajouter des logs de timing partout
  2. Identifier EXACTEMENT où ça bloque
  3. Proposer un fix concret

Ou tu me dis juste "53s ça me va" et on passe à autre chose ! 😊