Linux下實現并發socket最大連接數的配置方法

      網友投稿 1100 2025-03-31

      【訴求場景】


      linux操作系統,無論是編寫客戶端程序還是服務端程序,在高并發TCP連接處理時,最高的并發數量都要受到系統對用戶單一進程同時可打開文件數量的限制(因為系統為每個TCP連接都要創建一個socket句柄,每個socket句柄同時也是一個文件句柄)。

      本文檔主要是對文件數量并發限制做修改。

      【配置方法】

      1、修改用戶進程可打開文件數限制,如圖1所示:

      圖 1

      說明:

      ulimit?–n :查看當前系統允許當前用戶進程打開的文件數限制。

      默認為1024:表示當前用戶的每個進程最多允許同時打開1024個文件。

      這1024個文件中還得去除每個進程打開的標準輸入、標準輸出、標準錯誤、服務器監聽socket等等,剩下的可用于客戶端socket連接的文件數就只有

      1024-10=1014個左右,也就是基于linux的程序最多允許同時1014個TCP并發連接。

      (1)修改Linux系統對用戶打開軟限制和硬限制,如圖2所示:

      Linux下實現高并發socket最大連接數的配置方法

      vim /etc/security/limits.conf

      添加 root soft nofile 1921

      root hard nofile 1921

      圖 2

      說明:root代表修改了root用戶打開文件的數的限制,可以用“*”代表所有用戶soft和hard指定要修改的軟限制還是硬限制。1921指定修改的新限制值,也就是最大打開的文件數(軟限制一定要小于或等于硬限制)

      (2)修改 /etc/pam.d/login文件,如圖3所示:

      添加:session required /lib/security/pam_limits.so

      圖 3

      說明:Linux在用戶登錄系統后應該調用pam_limits.so模塊來設置系統對該用戶可使用的各種資源數量的最大限制(包括用戶可打開的最大文件數限制),

      pam_limits.so模塊就會從/etc/security/limits.conf文件中來讀取這個這些限制值

      (3)查看linux系統級最大打開文件數限制cat /proc/sys/fs/file-max,如圖4所示:

      圖 4

      說明:這表示linux系統最多同時允許打開(包括所有用戶打開文件數的總和)96854個文件,是linux系統級的硬限制,所有用戶打開的文件數都不得超過這個數值, 一般不修改這個值,如果想修改,命令為vim /etc/rc.local。

      (4)添加:echo 數值 > /proc/sys/fs/file-max,修改完重啟系統,重啟后執行ulimit –n查看一下,如圖5所示:

      圖 5

      (5)如果重啟后執行ulimit –n查看的值還是小于上面修改后的最大值,可能是用戶登錄腳本/etc/profile中使用ulimit –n命令,已將用戶同時打開的文件數做了限制,只能在/etc/profile找到ulimit –n限制用戶同時打開的最大文件數,可以刪除也可以修改值,重啟系統即可。

      (6)上面操作可以解決高并發TCP連接處理打開文件數量的系統限制。

      有時盡管解開了系統對用戶同時打開文件數的限制,但仍會出現并發TCP連接數增加到一定數量時,再也無法創建新的TCP連接的現象。

      2、linux網絡內核對本地端口號范圍有限制,例如當前系統內核限制本地端口號的范圍為 1024-32768,當系統同一時間存在大量的TCP客戶端連接時,由于每個TCP客戶端都要占據一個唯一的本地端口號,如果TCP端口號的范圍不夠用,就會提示 :can't assign requested address ,這就是由于內核編譯時默認設置的本地端口號范圍太小。

      修改:/etc/sysctl.conf

      添加:net.ipv4.ip_local_port_range = 1024 65535(最大值要小于或等于65535)

      執行:sysctl –p,如果沒有報錯,說明設置成功,顯示內容包含圖6中的內容:

      圖 6

      以上是單獨一個進程最大同時可以打開63000多個TCP客戶端連接的設置。

      Linux

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel所占比例函數公式:輕松計算數據的占比
      下一篇:如何在Excel中顯示隱藏的第一列或第一行?
      相關文章
      亚洲精品在线免费看| 国产精品亚洲va在线观看| 中文字幕乱码亚洲无线三区| 久久久久亚洲AV成人片| 亚洲精品成人久久久| 国产亚洲精品美女久久久久| 亚洲另类无码一区二区三区| 亚洲香蕉在线观看| 亚洲AV无码一区二区三区在线| 亚洲国产精品张柏芝在线观看| 亚洲成a人片在线观看中文app| 亚洲喷奶水中文字幕电影| wwwxxx亚洲| 亚洲AV综合色区无码二区爱AV| 亚洲国产精品专区| 亚洲人成图片网站| 亚洲人成未满十八禁网站| 亚洲av无码成人精品国产| 国产精品亚洲精品日韩动图| 成人精品国产亚洲欧洲| 亚洲成A∨人片天堂网无码| 亚洲精品国产精品国自产观看| 亚洲一区视频在线播放| 亚洲精品无码成人AAA片| 亚洲AV无码成人精品区在线观看| 婷婷精品国产亚洲AV麻豆不片 | 亚洲最大在线观看| 亚洲成人福利网站| 香蕉大伊亚洲人在线观看| 亚洲乱色伦图片区小说| 日日摸日日碰夜夜爽亚洲| 久久99亚洲综合精品首页| 国产V亚洲V天堂无码| 亚洲AV成人无码久久精品老人 | 亚洲国产午夜中文字幕精品黄网站 | 五月婷婷亚洲综合| 久久久久亚洲精品中文字幕| 亚洲国产精品嫩草影院在线观看 | yy6080亚洲一级理论| 永久亚洲成a人片777777| 亚洲大片在线观看|