我找到了如何使用多进程执行龙卷风。
server = HTTPServer(app)
server.bind(8888)
server.start(0) #Forks multiple sub-processes
IOLoop.current().start()
在这种情况下,有没有办法在流程上共享资源?
并且似乎在进程上使用相同的端口。
龙卷风是否会平衡每个过程的负载本身?
若然,该怎么办?
答案 0 :(得分:4)
通常,在使用多进程模式时,进程只能通过外部服务进行通信:数据库,缓存服务器,消息队列等。对于在同一台计算机上运行的进程,还有一些其他选项可用(请参阅{{ 1}} module`),但一般来说,一旦你不再使用单个过程,当你超越一台机器时,它会更好地寻找将继续扩展的技术。
在这种情况下,内核而不是Tornado可以跨进程执行负载平衡。从理论上讲,这是一种自我纠正机制,因为新连接只会被赋予连接到达时空闲的进程。但是,在实践中,这往往会导致严重的不平衡(负载最多的进程的连接数是负载最少的2-3倍),因此专用负载平衡代理将导致更均匀的分发。