Ajax 板


LINE

※ 引述《howardwang (Howard)》之銘言: : 想請教一個觀念問題: :   為了實作server push, : 所以想知道, :   有沒有方法來解決comet或long polling時佔用web server連線數的問題。 : 因為機器的capacity不大,系統也小,所以允許的同時連線數不多, 我只知道隨便一台機器要來個上k的連線都不難 只是server端架設正不正確 如果你要用PHP+Apache這種方法直接玩long polling 資源消耗絕對除了浪費還是浪費 這只是方便而已 :   如果用comet的話,一個使用者就會一直佔據client和server之間的一條連線, :   這樣子可能使用者會進不來網頁, : 後來聽說了web socket,本來以為可以解決連線數的問題, :   但看了一些網站之後,覺得web socket應該還是會佔掉一條連線。 : 既然如此,為什麼不要用AJAX+long polling就好了? 很簡單long polling始終不是"雙向" 連線數向來都不是問題真正重點 那些搞串流 搞即時通訊 更遑論是大型P2P 隨便一個同時連線數對一般網頁系統來說可能都是天文數字了 websocket主要特點在於它是個對HTTP擴充而成的"雙向"連線 而不是原先HTTP那種客戶端發請求 server只能被動回應的形式 long polling說實話只是種hack而已 當server端的push量一大的話 long polling會造成大量的request (先不說比起websocket還可能有短暫斷開的這個問題要額外處理) 這中間那大量header對server資源除了浪費外 還是浪費跟浪費 當然這邊來看你指的連線數應該是PHP-FPM之類那種同時處理資料的連線... 不過會有這顧慮表示你從根本就選了不正確的方法 :   還是說,我的認知有錯?web socket不會佔住連線? :   又或者,有不會一直佔據連線的server push方法嗎? 簡單來說吧 你想要做一個server push的動作的話 後端架構請改用"常駐"模式的跑法 像是Java Servlet,Python,NodeJS,RoR這類 除非你打算讓PHP也搞常駐 不過絕大多數的PHP都是被動式的服務 而所謂連線數的瓶頸在於這PHP解譯器同時能執行的數量 當你後端改成"常駐"的模式後 正常寫法會將server push這部分額外拆開處理 這時不管是處理long polling還是websocket的部分 除了最初判斷request類型外 確定是server push的部分後就會把那連線丟到另一個pool裡去讓他wait 不去搶request解譯那部份的資源(已經離開request解譯部分) 而那pool裡的東西只有要push的時候才另外拉出來把訊息給丟出去 不過這邊很先入為主的認定原本是用PHP啦... 如果不是PHP狀況也是一樣 只是你處理上的觀念要改變才行 並不是像以往寫網頁一樣 等待只是放在那不輸出 雖然long polling這樣寫也是能用 不過可以保證 沒大網站是這樣做的 因為那樣server再多都不夠用 :   謝謝。 打得其實有點亂XDD 對了 如果你是寫網頁放在一般的網頁空間(一般的LAMP空間) 那根本上是無解的 因為架構打從一開始就不適合server push --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.216.102 ※ 編輯: danny8376 來自: 140.115.216.102 (11/26 03:33)
1F:推 howardwang:謝謝你在半夜還回文分享,我消化一下,有不懂再請教 XD 11/26 19:37
2F:→ dlikeayu:php+nginx的long polling 沒有這麼弱喔 11/29 04:04
3F:→ danny8376:樓上 你所說的nginx+php是哪種架構? 11/30 22:16
4F:→ danny8376:如果是php-fpm+nginx這種常見設置 沒幾個long polling 11/30 22:16
5F:→ danny8376:你的fpm就被塞爆了 新的php都只能等前面的long polling 11/30 22:17
6F:→ danny8376:結束才能被處理 如果不是的話 只要是fastcgi型態的架構 11/30 22:18
7F:→ danny8376:基本上結果都一樣 除非你用cgi 不過這跑long polling 11/30 22:18
8F:→ danny8376:資源就不是普通的浪費了 11/30 22:19
9F:→ danny8376:如果你用到了nginx push模組 那已經完全是不同架構了 11/30 22:19







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP