日本有码中文字幕视频,在线能看三级网站,日本妇乱子伦视频免费的,中文字幕一页在线

      首頁生活>內(nèi)容

      長連接和短連接的區(qū)別(短鏈和長鏈區(qū)別)

      時間:2022-11-04 16:25:57來源:
      導(dǎo)讀當數(shù)據(jù)庫服務(wù)器和客戶端位于不同的主機上時,需要建立網(wǎng)絡(luò)連接進行通信。客戶端必須使用數(shù)據(jù)庫連接來發(fā)送命令和接收回復(fù)和數(shù)據(jù)。在通過提供給客戶端數(shù)據(jù)庫的驅(qū)動程序指定連

      當數(shù)據(jù)庫服務(wù)器和客戶端位于不同的主機上時,需要建立網(wǎng)絡(luò)連接進行通信??蛻舳吮仨毷褂脭?shù)據(jù)庫連接來發(fā)送命令和接收回復(fù)和數(shù)據(jù)。在通過提供給客戶端數(shù)據(jù)庫的驅(qū)動程序指定連接字符串之后,客戶端可以與數(shù)據(jù)庫建立連接??梢圆殚喚幊陶Z言手冊,了解短連接和長連接的使用方法。

      1. 短連接

      短連接是指程序與數(shù)據(jù)庫通信時需要建立連接。執(zhí)行操作后,連接關(guān)閉。短連接簡單來說就是每次操作數(shù)據(jù)庫,都要打開和關(guān)閉數(shù)據(jù)庫連接?;静襟E是:連接→數(shù)據(jù)傳輸→關(guān)閉連接。

      在慢速網(wǎng)絡(luò)中使用短連接會花費很多;在生產(chǎn)繁忙的系統(tǒng)中,連接也可能受到系統(tǒng)端口數(shù)量的限制。如果每秒要建立數(shù)千個連接,連接斷開后端口不會立即被回收,它們必須經(jīng)歷一個等待的“FIN”階段,直到它們可以被回收,這可能導(dǎo)致端口資源不足。在Linux上,可以通過調(diào)整/proc/sys/net/IP v4/IP _ local _ port _ range來擴大端口的使用范圍;調(diào)整/proc/sys/net/IP v4/TCP _ fin _ time out來減少恢復(fù)延遲(如果要在應(yīng)用服務(wù)器上調(diào)整這個參數(shù),一定要小心!)。

      另一種方法是讓主機使用多個IP地址。端口號限制實際上是基于同一個IP:PORT。如果主機添加IP,MySQL可以監(jiān)聽多個IP地址,客戶端可以選擇連接某個IP:PORT,這樣就增加了端口資源。

      2. 長連接

      長連接是指程序間的連接建立后,總是打開的,被后續(xù)程序重用。使用長連接的初衷是為了減少連接的開銷,雖然MySQL比其他數(shù)據(jù)庫快很多。

      以PHP程序為例。當收到永久連接的請求時,PHP將檢查是否已經(jīng)有一個相同的永久連接(之前已經(jīng)打開過)。如果存在,將直接使用該連接;如果不存在,則建立新的連接。所謂“相同”連接是指使用相同的用戶名和密碼連接到同一臺主機。

      從客戶端的角度來看,使用長連接有一個好處。沒有必要每次都創(chuàng)建新的連接。如果客戶端頻繁向MySQL服務(wù)器發(fā)出連接請求,永久連接會更高效。對于高并發(fā)服務(wù),如果可能遇到連接的影響,建議使用長連接或連接池。

      從服務(wù)器的角度來看,情況略有不同。它可以節(jié)省創(chuàng)建連接的開銷,但是維護連接也需要內(nèi)存。如果濫用長連接,可能會使用過多的MySQL服務(wù)器連接?,F(xiàn)代操作系統(tǒng)可以有成千上萬個MySQL連接,但其中大部分可能都處于睡眠狀態(tài)。這種工作方式效率不夠高,連接占用內(nèi)存,也會導(dǎo)致內(nèi)存浪費。

      對于擴展性好的網(wǎng)站,其實大部分的訪問都不需要連接數(shù)據(jù)庫。如果用戶需要頻繁訪問數(shù)據(jù)庫,當流量增加時可能會出現(xiàn)性能問題。這時候長短連接都解決不了問題,要進行合理的設(shè)計和優(yōu)化,避免性能問題。

      如果客戶機和MySQL數(shù)據(jù)庫之間有連接池或代理,一般建議在客戶機上使用短連接。長連接的使用必須謹慎,不能濫用。如果每秒鐘沒有幾百個或者幾千個新的連接請求,就不需要長連接,長連接并不能給你帶來多大的好處。在Java語言中,由于連接池的原因,如果控制得當,不會對數(shù)據(jù)庫造成大的影響,但是PHP的長連接可能會導(dǎo)致數(shù)據(jù)庫連接數(shù)超過限制或者占用內(nèi)存過多。

      對此,R&D工程師、系統(tǒng)運維工程師、DBA需要保持聯(lián)系,確定合理的連接策略。不要不假思索地使用長連接。

      3. 連接池

      因為一些數(shù)據(jù)庫花費大量資金來創(chuàng)建和銷毀連接,或者因為相對于所執(zhí)行的特定數(shù)據(jù)操作,連接消耗了太多的資源,所以可能有必要添加連接池來提高性能。

      數(shù)據(jù)庫連接池是由一些網(wǎng)絡(luò)代理服務(wù)或應(yīng)用服務(wù)器(如J2EE服務(wù)器)實現(xiàn)的功能。它實現(xiàn)了一個持久連接的“池”,允許其他程序和客戶端連接。該連接池將由所有連接的客戶端共享和使用。連接池可以加快連接速度,減少數(shù)據(jù)庫連接數(shù),降低數(shù)據(jù)庫服務(wù)器的負載。

      4. 持久連接和連接池的區(qū)別

      連接是一些驅(qū)動程序、驅(qū)動程序框架和ORM工具的特性。驅(qū)動程序保持連接句柄打開,以便后續(xù)的數(shù)據(jù)庫操作可以重用該連接,從而減少數(shù)據(jù)庫的連接開銷。連接池是應(yīng)用服務(wù)器的一個組件,可以通過參數(shù)配置連接數(shù)、連接檢測、連接生命周期等。

      如果連接池或者長連接使用了大量的連接,可能會超過數(shù)據(jù)庫實例的限制,那么就需要注意連接相關(guān)的設(shè)置,比如最小和最大連接池的設(shè)置,以及php-fpm進程的數(shù)量等等。,否則程序?qū)o法申請新的連接。

      標簽: