es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Las declaraciones UPDATE de node.js mssql tardan más de 1 minuto en ejecutarse.

En este momento estoy implementando una aplicación de node.js con un servidor de prueba de proxy inverso de IIS. Estoy trabajando con el paquete mssql para conectarme al SQL Server 2014. Para las pruebas en mi máquina local, todo funcionó bien (SQL Server 2019), pero ahora en el servidor de prueba mencioné un comportamiento realmente extraño de las declaraciones UPDATE y INSERT en el servidor.

Declaración de ejemplo:

UPDATE name 
FROM renters 
WHERE id = 1

Declaraciones muy simples como esta, en tablas bastante pequeñas (< 400 filas, < 200 columnas) a veces tardan de 1 a 2 minutos en ejecutarse, mientras que las declaraciones SELECT se ejecutan de inmediato sin demora.

Hasta ahora no he podido identificar un problema razonable que cause este comportamiento. Estuve pensando que tal vez se trate de la versión de SQL Server o de algunas restricciones solo en las declaraciones UPDATE e INSERT por parte del administrador de base de datos, pero en mi opinión eso tampoco es realmente realista, ¿o tal vez debido a un comportamiento extraño de las conexiones de agrupamiento? ¿Me estoy perdiendo algo?

Por cierto, estoy utilizando el conector básico propuesto por mssql con conexiones de agrupamiento de esta manera:

const sql = require('mssql')
const sqlConfig = {
  user: process.env.DB_USER,
  password: process.env.DB_PWD,
  database: process.env.DB_NAME,
  server: 'localhost',
  pool: {
    max: 10,
    min: 0,
    idleTimeoutMillis: 30000
  },
  options: {
    encrypt: true, // para Azure
    trustServerCertificate: false // cambiar a true para desarrollo local / certificados autofirmados
  }
}

async () => {
  try {
    // asegúrate de que todos los elementos estén correctamente codificados en la cadena de conexión
    await sql.connect(sqlConfig)
    const result = await sql.query`select * from mytable where id = ${value}`
    console.dir(result)
  } catch (err) {
    // ... comprobaciones de error
  }
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Pregunta:

    Eres un experto en TI especializado en SQL, Node.js, SQL Server, pooling y node-mssql. Un cliente tuyo está experimentando un comportamiento extraño al ejecutar las declaraciones UPDATE y INSERT en su servidor de pruebas utilizando el paquete mssql para conectarse a SQL Server 2014. A pesar de haber probado las mismas declaraciones en una máquina local que utiliza SQL Server 2019, las declaraciones en el servidor de pruebas a veces tardan de 1 a 2 minutos en ejecutarse, mientras que las declaraciones SELECT se ejecutan de inmediato. Como experto en TI, ¿cuál podría ser el problema que causa este comportamiento y cómo se puede resolver?

    Respuesta:

    El cliente está trabajando con una aplicación Node.js implementada en un servidor proxy inverso IIS y utiliza el paquete mssql para conectarse a SQL Server 2014. Las declaraciones UPDATE y INSERT están tardando de 1 a 2 minutos en ejecutarse, mientras que las declaraciones SELECT se ejecutan de inmediato. Este problema podría ser causado debido a varios factores, incluyendo la carga del servidor, configuración, red y problemas a nivel de base de datos.

    Para resolver el problema, se pueden realizar los siguientes pasos:

    1. Verificar la carga del servidor: El servidor puede estar experimentando una alta carga, lo que está causando tiempos de respuesta lentos. Monitorear el uso de CPU y memoria del servidor utilizando el monitor de rendimiento o el administrador de tareas, para asegurarse de que los recursos del servidor no estén siendo agotados.
    2. Verificar la red: Los tiempos de respuesta lentos también podrían ser causados por problemas de red. Verificar la conectividad de red entre el servidor y la base de datos para asegurarse de que no haya problemas o cuellos de botella en la red.

    3. Verificar la configuración de la base de datos: La configuración de la base de datos también podría ser un factor que afecta los tiempos de respuesta. Verificar los ajustes de configuración de la base de datos para asegurarse de que estén optimizados para la carga de trabajo.

    4. Verificar el “connection pooling”: Los tiempos de respuesta lentos también podrían ser causados por problemas con el “connection pooling”. Verificar la configuración del “connection pooling” en el paquete mssql y asegurarse de que esté configurado correctamente.

    5. Actualizar SQL Server: Si el problema persiste, considerar actualizar SQL Server a una versión más reciente. En algunos casos, las versiones antiguas de SQL Server pueden no ser compatibles con las versiones más nuevas de los paquetes de Node.js.

    6. Revisar y optimizar las declaraciones SQL: Los tiempos de respuesta lentos también podrían ser causados por declaraciones SQL ineficientes. Revisar y optimizar las declaraciones SQL para asegurarse de que sean eficientes y apropiadas para la carga de trabajo.

    En general, el problema de los tiempos de respuesta lentos al ejecutar declaraciones UPDATE y INSERT triviales podría ser causado por una serie de factores, y requiere una investigación exhaustiva para identificar y resolver el problema.

Comments are closed.