2009-07-21 33 views
0

我以前聽說長時間連接不適合在高流量的Web服務器上使用。這是真的,還是它只適用於Apache的prefork模式? CGI模式會有這個問題嗎?面臨使用持久連接?

這涉及PHP,Apache和Postgresql。

回答

2

Are PHP persistent connections evil ? - 在的情況下PHPMySQL

背後使用永久連接的原因當然是減少連結了相當昂貴的數量,即使它們與MySQL遠遠快於大多數其他數據庫。

的第一個問題的持久連接...

如果你建立每秒數千連接你不應該把它打開了很長一段時間,但操作系統一樣。根據TCP/IP協議,端口不能立即回收,必須在「FIN」階段花費一些時間才能被回收。

第二個問題......使用太多的MySQL服務器連接。

有些人根本沒有意識到你可以增加MAX_CONNECTIONS變量,並得到與MySQL別人超過100個併發連接是由不能夠與MySQL的超過1024個連接的舊的Linux問題毆打。

現在讓我們談談爲什麼持續連接在mysqli擴展中被禁用。即使您可能誤用持續連接並且獲得糟糕的性能,但這不是原因。真正的原因是 - 你可能會遇到更多問題。

當MySQL足夠簡單時,持續連接被添加到PHP的時間爲MySQL 3.22/3.23,所以你可以輕鬆地回收連接,沒有任何問題。然而,在後來的版本中出現了許多問題 - 如果您回收有未提交事務的連接,則會遇到麻煩。如果您碰巧使用自定義字符集設置回收連接,則會再次遇到問題,更不用說可能會更改每個會話變量。

0

使用持久連接的一個問題是它不能很好地擴展。如果您有5000個人連接,則需要5000個持續連接。如果您不需要持久性,您可能可以爲相同數量的連接服務10000人,因爲他們可以在不使用連接時共享這些連接。