Python負載均衡的嘗試
在開發語言中,我們也可以使用Python來實現負載均衡的設置,現在我們就來介紹一下這個嘗試。首先我們考慮負載均衡,常用的就是反向代理的均衡設置,那么對于Python的語言實現,又有什么特別的要求呢?讓我們一起來看看文章的內容吧。
最近測試一個Python項目,在性能優化過程中,決定使用Tornado作Web服務器。但Tornado是單進程線程的實現,雖然一個進程可以很好的處理并發,但畢竟還是個單線程,無法有效的使用多核CPU。
對外的端口只有一個,于是考慮使用負載均衡。首先Nginx,但發現在使用Nginx轉發過程中產生大量的Time_wait。據說Nginx轉發時會使用Http1.0,不確定是否由此導致。但至少使用Apache作負載均衡的時候沒有這個問題。關于Time_wait,不是此文章欲述的,以下貼出 Nginx和Apache作負載均衡的配置:
- Nginx.conf:
- http {
- upstream frontends {
- server 127.0.0.1:9080;
- server 127.0.0.1:9081;
- server 127.0.0.1:9082;
- server 127.0.0.1:9083;
- }
Apache:
編譯:
./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --with-mpm=prefork --enable-proxy
配置httpd.conf:
- ProxyRequests Off
- <Proxy balancer://higkoo>
- BalancerMember http://127.0.0.1:9080
- BalancerMember http://127.0.0.1:9081
- BalancerMember http://127.0.0.1:9082
- BalancerMember http://127.0.0.1:9083
- </Proxy>
- ProxyPass / balancer://higkoo/
當然,本文是由于在測試一Python應用時留下的。負載均衡本身并不局限與語言和應用。只要是標準的HTTP請求均可。