成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

提高 Linux上socket 性能的技巧 最小化報文傳輸延時

運維 系統運維
如何提高Linux上socket的性能,從而加速網絡應用程序,你可以通過使用API來開發客戶機和服務器之間的應用程序。本文分節介紹了Linux上提高socket性能的技巧。

  本文內容包括Linux下對于 Sockets API 的使用、兩個可以提高性能的 socket 選項以及 GNU/Linux 優化。為了能夠開發性能卓越的應用程序,請遵循以下技巧:最小化報文傳輸的延時;最小化系統調用的負載;為 Bandwidth Delay Product 調節 TCP 窗口;動態優化 GNU/Linux TCP/IP 棧。

最小化報文傳輸的延時:

  在通過 TCP socket 進行通信時,數據都拆分成了數據塊,這樣它們就可以封裝到給定連接的 TCP payload(指 TCP 數據包中的有效負荷)中了。TCP payload 的大小取決于幾個因素(例如***報文長度和路徑),但是這些因素在連接發起時都是已知的。為了達到***的性能,我們的目標是使用盡可能多的可用數據來填充每個報文。當沒有足夠的數據來填充 payload 時(也稱為***報文段長度(maximum segment size) 或 MSS),TCP 就會采用 Nagle 算法自動將一些小的緩沖區連接到一個報文段中。這樣可以通過最小化所發送的報文的數量來提高應用程序的效率,并減輕整體的網絡擁塞問題。

  盡管 John Nagle 的算法可以通過將這些數據連接成更大的報文來最小化所發送的報文的數量,但是有時您可能希望只發送一些較小的報文。一個簡單的例子是 telnet 程序,它讓用戶可以與遠程系統進行交互,這通常都是通過一個 shell 來進行的。如果用戶被要求用發送報文之前輸入的字符來填充某個報文段,那么這種方法就絕對不能滿足我們的需要。

  另外一個例子是 HTTP 協議。通常,客戶機瀏覽器會產生一個小請求(一條 HTTP 請求消息),然后 Web 服務器就會返回一個更大的響應(Web 頁面)。

  解決方案

  您應該考慮的***件事情是 Nagle 算法滿足一種需求。由于這種算法對數據進行合并,試圖構成一個完整的 TCP 報文段,因此它會引入一些延時。但是這種算法可以最小化在線路上發送的報文的數量,因此可以最小化網絡擁塞的問題。

  但是在需要最小化傳輸延時的情況中,Sockets API 可以提供一種解決方案。要禁用 Nagle 算法,您可以設置 TCP_NODELAY socket 選項,如清單 1 所示。

  清單 1. 為 TCP socket 禁用 Nagle 算法

  int sock, flag, ret;

  /* Create new stream socket */

  sock = socket( AF_INET, SOCK_STREAM, 0 );

  /* Disable the Nagle (TCP No Delay) algorithm */

  flag = 1;

  ret = setsockopt( sock, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(flag) );

  if (ret == -1) {

  printf("Couldn't setsockopt(TCP_NODELAY)\n");

  exit(-1);

  }

  提示:使用 Samba 的實驗表明,在從 Microsoft Windows 服務器上的 Samba 驅動器上讀取數據時,禁用 Nagle 算法幾乎可以加倍提高讀性能。使用 Sockets API,我們可以開發客戶機和服務器應用程序,它們可以在本地網絡上進行通信,也可以通過 Internet 在全球范圍內進行通信。與其他 API 一樣,您可以通過一些方法使用 Sockets API,從而提高 Socket 性能,或者限制 Socket 的性能。

【編輯推薦】

  1. 2.1.3 Socket服務器
  2. TCP Socket之linux實現
  3. Linux操作系統下Socket編程地址結構介紹
  4. 16.5.4 socket編程實例(2)
  5. 16.5.4 socket編程實例(1)

 

責任編輯:zhaolei 來源: 網絡轉載
相關推薦

2011-01-18 11:37:59

Linuxsocket性能

2011-01-18 13:42:18

Linuxsocket性能

2011-01-18 11:50:51

Linuxsocket性能

2021-04-13 16:00:54

加密貨幣數據貨幣

2009-07-02 17:59:51

2009-08-14 10:35:25

C#最小化編寫

2009-12-23 17:07:37

WPF性能

2013-05-31 09:26:11

云宕機SLA云應用彈性

2017-11-06 13:25:25

MySQL數據庫技巧

2015-09-18 09:23:34

云APIAPI升級云服務中斷

2015-10-29 10:09:57

混合云影子IT SaaS

2022-06-01 08:00:00

開發成本功能

2011-01-19 14:40:45

Thunderbird

2009-06-17 10:13:03

提高EJB性能

2024-10-25 15:48:21

GPUPyTorch編程

2017-02-08 15:13:57

2011-03-07 10:12:02

GNOME SHELL

2022-01-09 23:06:39

JavaScript

2023-02-21 14:55:40

React開發技巧

2010-03-19 16:38:29

Java Socket
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天操 天天操 | www久久av | 日本一区二区三区免费观看 | 天天曰夜夜 | 国产精品日韩欧美一区二区 | 久久精品国产一区二区电影 | 91久久电影 | 久久久一二三 | 天天操天天天干 | 精品国产免费人成在线观看 | 91国在线| 久久精品久久久久久 | 国产福利网站 | 久久免费观看视频 | 欧美日韩视频在线播放 | 在线色网 | 色视频一区二区 | 国产欧美精品一区二区三区 | 一区二区激情 | 天天干夜夜操视频 | 精品欧美一区二区三区久久久 | 欧美 视频 | 午夜免费观看网站 | 中国大陆高清aⅴ毛片 | 日本成人免费网站 | 日韩毛片免费看 | 成人av在线网站 | 国产精品久久久久久久久久久新郎 | 欧州一区| 欧美αv | 亚洲高清视频一区 | 国产一区二区三区免费观看在线 | 在线观看av不卡 | 精品久久久久久久久久久下田 | 91精品一区二区三区久久久久久 | 欧美日韩视频在线 | 一级黄色淫片 | 日本在线一区二区 | 免费在线观看av网站 | 粉嫩粉嫩芽的虎白女18在线视频 | 免费一级毛片 |