看了下文檔,win不支持workman的多線程模式,大體上看了下代碼,發(fā)現(xiàn)實(shí)現(xiàn)該功能需要基于pcntl模塊,而該模塊在win下并不支持,所以導(dǎo)致workman在win下最多支持256個(gè)并發(fā)鏈接。但是在某些特定環(huán)境下,因?yàn)槟承┛陀^原因?qū)е碌?,無(wú)法更換服務(wù)器,也無(wú)法更換操作系統(tǒng),所以想了一些曲線救國(guó)的方法,希望大佬來(lái)指點(diǎn)一二
?
1.nginx+workman
?通過(guò)nginx的tcp轉(zhuǎn)發(fā)和負(fù)載均衡,將一個(gè)端口的設(shè)備鏈接,分發(fā)到4個(gè)實(shí)現(xiàn)相同功能的端口,同時(shí)在workman下開(kāi)啟多個(gè)端口服務(wù),這樣不知道能不能撐起1024臺(tái)設(shè)備
2.workman+cygwin
cygwin提供了一個(gè)小型的unix虛擬環(huán)境,對(duì)于服務(wù)器資源有限,或者無(wú)法在阿里云/百度云上安裝虛擬機(jī)(查了一些例子,發(fā)現(xiàn)在虛擬主機(jī)上運(yùn)行虛擬機(jī),效率很低,性能較差。自己也試了試,啟動(dòng)虛擬機(jī)服務(wù)器就死機(jī))的同學(xué),似乎提供了一線生機(jī),但是仔細(xì)看一下就會(huì)發(fā)現(xiàn),Cygwin的PHP版本好像也是win下的,其php.ini文件所提供的擴(kuò)展方式似乎是dll,而非linux下的so,所以不知道是不是自己的方法有問(wèn)題,還請(qǐng)大神賜教
3.nginx+workman+內(nèi)網(wǎng)linux服務(wù)器
這個(gè)就很簡(jiǎn)單了,nginx+端口轉(zhuǎn)發(fā)內(nèi)網(wǎng)的linux服務(wù),然后將workman部署與linux,估計(jì)這個(gè)方法實(shí)現(xiàn)起來(lái)應(yīng)該是最簡(jiǎn)單的,成功可能性也更高,多花一筆銀子買個(gè)linux服務(wù)咯
還請(qǐng)大佬們指點(diǎn)一下,方法12是否可行
辦法1可行,nginx接收 worker 開(kāi)10個(gè)進(jìn)程監(jiān)聽(tīng)10個(gè)端口 nginx分別轉(zhuǎn)發(fā)到不同進(jìn)程的端口上,保守一個(gè)最多200 ,10個(gè)進(jìn)程就是2000 了,超過(guò)1024
謝謝大佬給的建議,我嘗試了一下,連接數(shù)量確實(shí)是可以保證,而且如果只用workman做消息轉(zhuǎn)發(fā)的話,設(shè)備數(shù)量是可以撐起來(lái)的,做到秒回復(fù)。但是我這個(gè)tcp鏈接,需要業(yè)務(wù)邏輯處理,處理邏輯的話,好像win實(shí)在沒(méi)辦法有效的提高效率,E5的windows server 2008R2 還不如單核的linux虛擬機(jī),確實(shí)是linux處理業(yè)務(wù)邏輯快了很多