salir del tiempo de espera de Linux establecer el tiempo de espera de Linux
¿El sistema de tiempo de espera de vigilancia de Linux se sigue reiniciando?
Ese es un problema con tu kernel. Cambia la versión. Si corta el grano usted mismo, verifique si no se lo dio al perro. O sea grosero y desactive el mecanismo de vigilancia directamente.
¿Por qué el socketsend siempre caduca?
Utilice setsockopt para configurar SO_SNDTIMEO y SO_RCVTIMEO en Linux y Windows. En algunos casos, hay una pequeña diferencia en los parámetros del socket UDP:
Si la otra parte está cerrada, el local. Es posible que sendto no pueda enviar los datos y luego se bloqueará recvfrom. En este momento, debe configurar los valores de estos dos parámetros para mejorar la calidad del programa. linux: structtimevaltimeout={3, 0}
; //3sintret=setsockopt(sock_fd, SOL_SOCKET, SO_SNDTIMEO, (constchar*)timeout, sizeof(timeout))
; setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, (constchar*)timeout, sizeof(timeout))
; si ret==0, es un éxito, -1 es un error. En este momento, puede verificar errno. para determinar el motivo del error intrecvd=recv(sock_fd,buf,1024,0)
; if (recvd==-1errno==EAGAIN){printf(timeoutn);
}windows: inttimeout=3000 ;//3sintret=setsockopt(sock_fd, SOL_SOCKET, SO_SNDTIMEO, tiempo de espera, sizeof(timeout))
; intret=setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, timeout, sizeof( tiempo de espera)); y solaris, entonces No compatible.
¿Qué debo hacer si el número máximo de puertos Linux supera los 65535?
¡Asegúrate de distinguir entre el número de puertos y el número de conexiones!
Es cierto que el número de puertos que se pueden abrir en un ordenador es sólo 65536. Si está lleno, será imposible abrirlo. Esto es un hecho. Pero también debe tenerse en cuenta que el puerto no siempre le pertenece a usted después de que esté ocupado. Puede liberarlo cuando no lo necesite. Después de liberarlo, otros programas pueden continuar usándolo. Es difícil ocupar todos los puertos.
En segundo lugar, debemos distinguir entre puertos y conexiones. Un puerto puede tener varias conexiones, como nginx. En Linux normal, un puerto 80 puede tener 100.000 conexiones simultáneas, y puede llegar a casi un millón. Por lo tanto, debido a la reutilización de puertos, en realidad no se utilizan tantos puertos.
Por lo tanto, el mito de que 65536 puertos están agotados básicamente no sucederá.
¿Cómo lidiar con la cancelación de un pedido por tiempo de espera?
1. Sondeo regular
El método más simple es escribir la lógica de cancelación del pedido. Generalmente, es obtener los pedidos con estado de pago pendiente de la tabla de pedidos y luego. realice el procesamiento de cancelación transversal, utilizando Linux El crontab del sistema ejecuta periódicamente la función de cancelación de orden.
Ventajas: simple y rápido, puede considerarse para pequeñas empresas
Desventajas:
Debido a las limitaciones de Linux, solo puede tener una precisión de segundos
La frecuencia de sondeo no se puede controlar de forma independiente. Si la operación, el mantenimiento y el desarrollo se gestionan por separado, cada ajuste requiere una modificación de la configuración de operación y mantenimiento.
Si el primer sondeo lleva mucho tiempo y. el segundo sondeo comienza de nuevo, provocará que las tareas se ejecuten repetidamente
Ocupan recursos de la base de datos
No se pueden ejecutar al mismo tiempo
Programación de tareas
Algunos frameworks web tendrán funcionalidad de programación de tareas, como el framework Laravel para php.
Ventajas:
La frecuencia de sondeo se puede controlar mediante código y no depende completamente del sistema;
Las tareas se pueden ejecutar repetidamente
Desventajas: similar al sondeo programado
3. Procesamiento de cola retrasado
Si el sistema tiene demasiados pedidos para procesar, el tiempo de procesamiento será muy largo si un sondeo no es. terminado, pero comienza la segunda vez, provocará la ejecución repetida de la tarea y, al mismo tiempo, inhibirá la ocupación de los recursos de la base de datos, lo que provocará una gran presión sobre la base de datos. Utilice una cola de retraso para manejar las cancelaciones de pedidos y configure. El tiempo de demora después de enviar la orden es de 30 minutos para ejecutarse, la eficiencia será mucho mayor. Las colas de demora más utilizadas incluyen
redis (evento de invalidación de clave de suscripción)
La cola. que viene con el marco (como la cola que viene con la cola del marco Laravel)
cola de retraso de RabbitMQ
Ventajas:
No es necesario sondear el pedido tabla, lo que reduce la presión de la base de datos
Ejecución sin duplicación
Alta eficiencia
Puede cooperar con el procesamiento multiproceso
Conveniente para agrupaciones con grandes volúmenes de negocios
No depende del crontab del sistema
p>Tiempo de espera del enlace emergente de la base de datos de enlaces PLSql, ¿qué debo hacer?
Por favor, además de los contenidos de inspección enumerados en el primer piso, verifique también los siguientes contenidos:
1): Si la empresa tiene un firewall, debe verificar el tiempo de espera configuración del firewall;
2): Si su base de datos está en un entorno Linux/Uinx, debe verificar la configuración de los parámetros keepalive relevantes.