Creamos un chat en nodejs/socketIO y funciona bien. Usamos pm2 para iniciarlo. Hoy enfrentamos un problema y el chat colapsó :-(
Todos los mensajes se guardan en un archivo json (es decir, en formato json) al usar:
// reading if (fs.existsSync(dataPathFile)) { this.messages = JSON.parse(fs.readFileSync(dataPathFile, "UTF-8")); } else { this.messages = []; } } ... // recording fs.writeFile(dataPathFile, JSON.stringify(this.messages), "UTF-8", function (err) { if (err) throw err; }); return message; ...los registros nos dan:
SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) at new Message (/appli/chatvideodiff/server/utils/message.js:11:28)=> la línea 11 está leyendo la línea "this.messages"
No tenemos idea de qué podría estar mal, pero cuando aparece el problema:
(1): en logs tenemos
PM2 | [PM2][WORKER] Process 0 restarted because it exceeds --max-memory-restart value (current_memory=2001776640 max_memory_limit=1073741824 [octets])Aumentamos "max_memory_limit" a "14000" (14 GB ya que tenemos 16 GB) pero también falla
Planeamos cambiar del archivo json a la base de datos, pero si tiene una idea para solucionar el problema más rápido, estamos seguros de que estamos interesados.
gracias por tu ayuda Niko
si eso puede ayudar, los mensajes son así:
{ "from": "Niko", "text": "test niko", "room": "03a74", "ip": "1.1.1.1", "color": "#5073C7", "id": "ea1c86d8-6f8e-ddce-d525-925e4a6da861", "createdAt": 1637769784314 }