const logger = require("./logger"); /** * 服务器优化配置 */ const serverConfig = { // 超时设置 timeout: 30000, // 30秒 // 请求体大小限制 bodyLimit: '10mb', // 并发连接数限制 maxConnections: 1000, // Keep-alive 超时 keepAliveTimeout: 5000, // Headers 超时 headersTimeout: 60000, }; /** * 设置服务器优化参数 * @param {Object} server - Express服务器实例 */ function optimizeServer(server) { if (server) { // 设置keep-alive超时 server.keepAliveTimeout = serverConfig.keepAliveTimeout; // 设置headers超时 server.headersTimeout = serverConfig.headersTimeout; // 设置最大连接数 server.maxConnections = serverConfig.maxConnections; // 监听服务器错误 server.on('error', (error) => { logger.error('服务器错误:', error); }); // 监听连接错误 server.on('clientError', (err, socket) => { logger.error('客户端连接错误:', err); if (!socket.destroyed) { socket.end('HTTP/1.1 400 Bad Request\r\n\r\n'); } }); // 优雅关闭处理 process.on('SIGTERM', () => { logger.info('收到SIGTERM信号,开始优雅关闭服务器...'); server.close(() => { process.exit(0); }); }); process.on('SIGINT', () => { logger.info('收到SIGINT信号,开始优雅关闭服务器...'); server.close(() => { process.exit(0); }); }); } } /** * 添加进程异常处理 */ function setupProcessHandlers() { // 未捕获的异常 process.on('uncaughtException', (error) => { logger.error('未捕获的异常:', error); // 优雅退出 process.exit(1); }); // 未处理的Promise拒绝 process.on('unhandledRejection', (reason, promise) => { const errorInfo = { type: 'unhandledRejection', timestamp: new Date().toISOString(), reason: reason instanceof Error ? { message: reason.message, stack: reason.stack, name: reason.name } : typeof reason === 'object' ? JSON.stringify(reason, null, 2) : String(reason), promiseStatus: promise ? 'pending' : 'unknown' }; logger.error('未处理的Promise拒绝:', errorInfo); }); } module.exports = { serverConfig, optimizeServer, setupProcessHandlers };