更新Company页面的UI为FUI风格
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Gunicorn 配置文件 - Eventlet 极限高并发配置(110.42.32.207 专用)
|
||||
Gunicorn 配置文件 - Eventlet 高并发配置(48核128GB 专用)
|
||||
|
||||
服务器配置: 48核心 128GB 内存
|
||||
目标并发: 160,000+ 并发连接
|
||||
目标并发: 5,000-10,000 实际并发(理论 320,000 连接)
|
||||
|
||||
使用方式:
|
||||
# 设置环境变量后启动
|
||||
@@ -14,10 +14,12 @@ Gunicorn 配置文件 - Eventlet 极限高并发配置(110.42.32.207 专用)
|
||||
REDIS_HOST=127.0.0.1 gunicorn -c gunicorn_eventlet_config.py app:app
|
||||
|
||||
架构说明:
|
||||
- 16 个 Eventlet Worker(每个占用 1 核心,预留 32 核给系统/Redis/MySQL)
|
||||
- 32 个 Eventlet Worker(每个占用 1 核心,预留 16 核给系统/Redis/MySQL)
|
||||
- 每个 Worker 处理 10000+ 并发连接(协程异步 I/O)
|
||||
- 数据库连接池: 32 workers × 150 = 4800 连接(实际瓶颈)
|
||||
- Redis 消息队列同步跨 Worker 的 WebSocket 消息
|
||||
- 总并发能力: 16 × 10000 = 160,000+ 连接
|
||||
- 理论并发能力: 32 × 10000 = 320,000 连接
|
||||
- 实际并发能力: 5,000-10,000(受数据库连接限制)
|
||||
"""
|
||||
|
||||
import os
|
||||
@@ -32,9 +34,9 @@ os.environ.setdefault('REDIS_HOST', '127.0.0.1')
|
||||
bind = '0.0.0.0:5001'
|
||||
|
||||
# Worker 进程数
|
||||
# 48 核心机器: 16 Workers(预留资源给 Redis/MySQL/系统)
|
||||
# 48 核心机器: 32 Workers(目标 5000-10000 并发)
|
||||
# 每个 Eventlet Worker 是单线程但支持协程并发
|
||||
workers = 16
|
||||
workers = 32
|
||||
|
||||
# Worker 类型 - eventlet 异步模式
|
||||
worker_class = 'eventlet'
|
||||
@@ -97,14 +99,17 @@ def on_starting(server):
|
||||
workers = server.app.cfg.workers
|
||||
connections = server.app.cfg.worker_connections
|
||||
total = workers * connections
|
||||
db_pool = workers * 150 # pool_size=50 + max_overflow=100
|
||||
|
||||
print("=" * 70)
|
||||
print("🚀 Gunicorn + Eventlet 极限高并发服务器正在启动...")
|
||||
print("🚀 Gunicorn + Eventlet 高并发服务器正在启动...")
|
||||
print("=" * 70)
|
||||
print(f" 服务器配置: 48核心 128GB 内存")
|
||||
print(f" Workers: {workers} 个 Eventlet 协程进程")
|
||||
print(f" 每 Worker 连接数: {connections:,}")
|
||||
print(f" 总并发能力: {total:,} 连接")
|
||||
print(f" 理论并发能力: {total:,} 连接")
|
||||
print(f" 数据库连接池: {db_pool:,} 连接(实际瓶颈)")
|
||||
print(f" 目标实际并发: 5,000-10,000")
|
||||
print("-" * 70)
|
||||
print(f" Bind: {server.app.cfg.bind}")
|
||||
print(f" Max Requests: {server.app.cfg.max_requests:,}")
|
||||
@@ -122,18 +127,21 @@ def when_ready(server):
|
||||
workers = server.app.cfg.workers
|
||||
connections = server.app.cfg.worker_connections
|
||||
total = workers * connections
|
||||
db_pool = workers * 150
|
||||
|
||||
print("=" * 70)
|
||||
print(f"✅ Gunicorn + Eventlet 服务准备就绪!")
|
||||
print(f" {workers} 个 Worker 已启动")
|
||||
print(f" 总并发能力: {total:,} 连接")
|
||||
print(f" 理论并发能力: {total:,} 连接")
|
||||
print(f" 数据库连接池: {db_pool:,} 连接")
|
||||
print(f" 目标实际并发: 5,000-10,000")
|
||||
print(f" WebSocket + HTTP API 混合高并发已启用")
|
||||
print("=" * 70)
|
||||
|
||||
|
||||
def post_worker_init(worker):
|
||||
"""Worker 初始化完成后调用"""
|
||||
print(f"✅ Eventlet Worker {worker.pid} 已初始化 (10,000 并发连接就绪)")
|
||||
print(f"✅ Eventlet Worker {worker.pid} 已初始化 (10,000 并发连接 + 150 数据库连接就绪)")
|
||||
|
||||
# 触发事件轮询初始化(使用 Redis 锁确保只有一个 Worker 启动调度器)
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user