我有一个在
Windows上运行的Django应用程序(通过Apache mod_wsgi),它受CPU限制.但Windows上的Apache只能执行MPM(多线程)工作者,而不是prefork(多进程工作者),而单个
Python解释器不会利用多个CPU.
我会切换到FastCGI,但这需要Flup,Windows不支持.
到目前为止,我提出的唯一解决方案是启动多个Django实例,然后使用Apache负载平衡来分发请求.只要我在命令窗口中启动Django实例,这样就可以正常工作,但我似乎无法弄清楚如何将多个Django实例设置为Windows服务(这样我就可以让它们在系统启动时自动启动).
有没有人想出一个策略来让一个基于Django的站点在Windows服务器上使用多个CPU?
最佳答案 我认为您的问题实际上是“如何运行多个Apache实例作为Windows服务?”从
docs:
httpd.exe -k install -n "ApacheBE1" -f "c:\files\my_BE1.conf"
httpd.exe -k install -n "ApacheBE2" -f "c:\files\my_BE2.conf"
只是想让你知道那个部分,你是否尝试设置多个重量级的Apache后端实例并在它们之间进行负载平衡?
your.host.com:80
- load balancer / light weight front-end
- balancing between localhost:9001-900x
localhost:9001
- mod_wsgi / heavy weight back-end 1
localhost:9002
- mod_wsgi / heavy weight back-end 2
localhost:9003
- mod_wsgi / heavy weight back-end 3