国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 服務器 > Linux服務器 > 正文

如何測試Linux下tcp最大連接數限制詳解

2024-09-05 23:05:16
字體:
來源:轉載
供稿:網友

前言

關于TCP服務器最大并發連接數有一種誤解就是“因為端口號上限為65535,所以TCP服務器理論上的可承載的最大并發連接數也是65535”。

先說結論:對于TCP服務端進程來說,他可以同時連接的客戶端數量并不受限于可用端口號。并發連接數受限于linux可打開文件數,這個數是可以配置的,可以非常大,所以實際上受限于系統性能。

現在做服務器開發不加上高并發根本沒臉出門,所以為了以后吹水被別人懟“天天提高并發,你自己實現的最高并發是多少”的時候能義正言辭的懟回去,趁著元旦在家沒事決定自己寫個demo搞一搞。

這個測試主要是想搞明白Linux下哪些參數配置限制了連接數的最大值,上限是多少。

一、先說下demo的思路:

服務端用epoll實現,就是簡簡單單的接收連接,然后客戶端用go的goroutine,每個goroutine就是簡單的建立連接,然后什么也不做。

上代碼:

server:

/* * g++ -o test_epoll ./test_epoll.c */#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/epoll.h>#include <netinet/in.h>#include <arpa/inet.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>int SetReuseAddr(int fd){ int optval = 1; socklen_t optlen = sizeof(optval); return setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, optlen);}int main(){ int fd = socket(AF_INET, SOCK_STREAM, 0); int iRet = SetReuseAddr(fd); if (iRet != 0) { printf("setsockopt for SO_REUSEADDR failed, error:%s/n", strerror(iRet)); return iRet; } struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(8080); addr.sin_addr.s_addr = INADDR_ANY; if (bind(fd, (struct sockaddr*)&addr, sizeof(addr)) == -1) { printf("bind failed, error:%s/n", strerror(errno)); return errno; } if (listen(fd, 5) == -1) { printf("listen failed, error:%s/n", strerror(errno)); return errno; } printf("Listening on 8080.../n"); int epfd = epoll_create(102400); struct epoll_event event; event.events = EPOLLIN; event.data.fd = fd; epoll_ctl(epfd, EPOLL_CTL_ADD, fd, &event); struct epoll_event revents[102400]; int iOnline = 0; while (1) { int num = epoll_wait(epfd, revents, 102400, 60 * 1000); printf("epoll_wait return %d/n", num); if (num > 0) {  for (int i = 0; i < num; i++)  {  if (revents[i].data.fd == fd)  {   int client;   struct sockaddr_in cli_addr;   socklen_t cli_addr_len = sizeof(cli_addr);   client = accept(fd, (struct sockaddr*)&cli_addr, &cli_addr_len);   if (client == -1)   {   printf("accept failed, error:%s/n", strerror(errno));   if (errno == EMFILE)   {    printf("per-process limit reached/n");    exit(errno);   }   if (errno == ENFILE)   {    printf("system-wide limit reached/n");    exit(errno);   }   continue;   }   iOnline++;   printf("Receive a new connection from %s:%d/n", inet_ntoa(cli_addr.sin_addr), cli_addr.sin_port);   event.events = EPOLLIN;   event.data.fd = client;   epoll_ctl(epfd, EPOLL_CTL_ADD, fd, &event);  }  } } printf("Online number:%d/n", iOnline); } return 0;}

client:

package mainimport ( "net" "fmt" "time" "strconv" "runtime")func Connect(host string, port int) { _, err := net.Dial("tcp", host+":"+strconv.Itoa(port)) if err != nil { fmt.Printf("Dial to %s:%d failed/n", host, port) return } for { time.Sleep(30 * 1000 * time.Millisecond) }}func main() { count := 0 for { go Connect("192.168.63.128", 8080) count++; fmt.Printf("Gorutue num:%d/n", runtime.NumGoroutine()) time.Sleep(100 * time.Millisecond) }}

二、開始測試

第一次:

先說結果,連接數達到1031時accept失敗了,當時還沒有對errno做判斷,所以只打印輸出了accept失敗。

Linux,tcp,最大連接數限制

然后首先想到的是ulimit -n的限制,查看了一下,默認值1024,然后就是修改這個值,在/etc/security/limits.conf中添加一下內容:

1 * soft nofile 1024002 * hard nofile 102400

然后關閉當前xshell連接,重新連接即生效,現在看ulimit -n就是102400了。

這兩行的意思就是將每個進程能打開的文件描述符個數的soft、hard限制調整為102400,

注:ulimit -n 102400也可以生效,但是這個修改是臨時的。

然后進行第二次測試。

第二次:

逗比了,其實連接數只有2000+,我之前還在奇怪為啥Windows的默認連接數能有這么高呢,原來有些連接已經斷了,但是因為我沒有做處理,所以以為還在呢,看來我得再安裝一個虛擬機了[二哈]

待繼續。。。

安裝虛擬機去,

時間:2017-12-31 00:09:00

虛擬機安裝好了,接著搞,

這次是真的超過10K了。

Linux,tcp,最大連接數限制

Linux,tcp,最大連接數限制

連接數還在增加,不知道能不能最終達到10萬呢,小小的期待ing

時間:2017-12-31 00:41:00,最終上限卡在28232,golang一直報dial失敗,由于忘了打印出具體錯誤信息了,所以無從知道為什么dial失敗,所以只能再跑一次T_T

Linux,tcp,最大連接數限制

 時間:2017-12-31 01:01:00,添加打印dial失敗的錯誤信息的,又跑了一遍,還是在28232時出現dial失敗,錯誤信息:

Linux,tcp,最大連接數限制

golang的標準庫文檔中么有對錯誤信息的解釋,從錯誤信息來看,是分配地址失敗,于是想是不是端口地址范圍限制了。

Linux,tcp,最大連接數限制

查看了一下端口地址范圍,確認就是這個限制,由于端口地址是16位,所以,就算把這個端口地址范圍修改為1024--65535,也最多能開啟64521個連接,而我現在只有一臺虛擬機作為客戶端,所以想要實現10萬連接是不可能了,但是通過這次測試,也讓我搞明白了,到底哪些參數會限制連接的上限,這就是我想要的。

最后,感謝Linux內核團隊的大神們推出了epoll這么牛逼的機制,才使得我們現在想實現高并發是如此的容易,希望自己有一天也能這么牛逼,哈哈。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
在线一区观看| 国产女人在线视频| 国产精品入口麻豆电影| 日本中文字幕在线看| 成网站在线观看人免费| 福利资源在线久| 国产免费黄网站| 大香伊人中文字幕精品| 五月婷婷丁香激情| av人人综合网| 欧美96在线| 99热最新网址| 2019天天操夜夜操| 黄色av网站在线| 伊人春色在线| 1区2区3区在线| 在线色视频观看| 国产女王在线**视频| 亚洲男人的天堂成人| 久久精品蜜桃| 在线视频观看你懂的| 狠狠干天天爱| www.操操| 中文字幕不卡免费视频| 亚洲欧美综合乱码精品成人网| 国产在线超碰| 美女av在线播放| 中文字幕视频在线观看| 国产免费黄网站| 黄色毛片在线看| 国产午夜在线观看| 亚洲妇熟xxxx妇色黄| 国产三区在线观看| 激情六月婷婷| а√天堂8资源在线官网| 国产激情视频在线观看| 国产理论片免费观看| 香蕉视频在线观看网站| 国产香蕉视频在线看| 国产中文字幕在线视频| 男女午夜视频在线观看| av免费在线观| av手机免费在线观看| 国产福利视频在线| 国产高清免费在线播放| 国产素人视频在线观看| 国产理论电影在线| 国产精品自产拍在线网站| 国产中文字幕在线| 午夜视频在线观看网站午夜视频在线 | 国产高清免费av在线| 尤物网在线观看| 国产青草视频在线观看视频| 国产爆初菊在线观看免费视频网站 | 亚洲日本伊人| 亚洲日本一区二区三区在线观看| 91www在线观看| 在线亚洲电影| 女人色在线免费视频| 国产女人伦码一区二区三区不卡| 国产美女高潮| 在线免费看黄网站| 丁香花在线电影小说观看| 国产精品区一区二| 欧美一级久久久久久久久大| 国产在线精品一区二区不卡| 国产人成网在线播放va免费| av日韩在线免费| 天天操天天是| 精灵使的剑舞无删减版在线观看| 日本视频在线| 国产亚洲精品自在线观看| 国产导航在线| 91福利在线免费| 四虎中文字幕| 国产黄色免费看| 激情六月丁香| 亚洲精品aaaa| 精品一区二区在线欧美| 麻豆精品免费视频入口| 在线中文免费视频| 高清av在线| 日本精品一区二区三区在线播放| 国产精品久久一区二区三区不卡| wwwww在线观看免费视频| 国产人成精品| 天堂在线一二区| www.综合网.com| av一级在线| 91精选福利| 国产福利在线| 国产欧美在线观看视频| 福利资源在线久| 免费观看v片在线观看| 亚洲图区综合| 亚洲jjzzjjzz在线观看| 在线一区二区三区精品| 国产98在线| 在线中文字幕观看| 国产盗摄一区二区| 国产精品视频白浆合集| 国产69精品久久久久孕妇国产69久久 | www.三区| 四虎成年永久免费网站| 在线中文字幕资源| 精品三级久久久久久久电影聊斋| 国产精品入口麻豆高清| 国产精品入口麻豆免费看| 国产亚洲精品久久久久久青梅 | av天天在线| 99reav在线| 四虎成人欧美精品在永久在线| 午夜影院在线| 久久久久久91精品色婷婷| 免费a在线观看| 九九热在线播放| 最新国产在线精品91尤物| 五月天亚洲激情| 国产激情视频网址| 一级黄色av| 香蕉视频在线看| 交换国产精品视频一区| 五月综合网站| 在线视频二区| 国产美女视频一区二区三区| 国产日本在线| 欧美日韩在线精品成人综合网| 天堂资源最新在线| 一本久久精品| 国产农村一级特黄α**毛片| 国产精品xxx电影| www.狠狠| 国产videos| 国产卡二和卡三的视频| 亚洲成人国产综合| 国产乱xxⅹxx国语对白| 影音先锋在线中文字幕| 中文字幕免费中文| 俺来俺也去www色在线观看| 国产私拍精品| 国产尤物一区二区三区| 亚洲激情丁香| 精品国语对白精品自拍视| 国产乱妇乱子在线播视频播放网站| 在线色视频网| 国产99re66在线视频| 成人欧美精品久久久久影院| 天天插天天干| 亚洲天堂久久久| 中文字幕2019第三页| 国产免费av高清在线| 青青草观看免费视频在线| 99在线视频影院| 18av在线视频| 国产高潮av| 国产高清av| 国产高潮av| 国产对白国语对白| 国产丝袜护土调教在线视频| 福利视频网站导航| 国产麻豆免费| 国产免费福利网站| 国产真实伦在线观看| 激情亚洲综合网| 久久五月精品中文字幕| 天堂√中文在线| www中文字幕在线观看| av资源网站在线观看| 日本高清中文字幕| 美女永久在线网站| 综合激情亚洲| 国产porn在线| 三级小说一区| 黄色av网站在线免费观看| 成人av小说网| 国产福利图片| 日本三级在线视频| 91超碰在线免费| 2018狠狠干| 人人澡人人爽| 黄污在线观看| 国产欧美日韩精品综合| 亚洲欧美自拍另类| 狠狠干天天爱| 国产99在线|亚洲| 久热中文字幕在线观看| 天堂在线一二区 | 精品国语对白精品自拍视| 日韩欧美中文字幕不卡| 丁香综合在线| 在线观看av中文| 国产一二区在线| eeuss影院网站免费观看| 国产精品一区二区三区视频网站| 国产一级黄色片免费| 日本一二三区视频免费高清| 国产天堂视频| 国产在线中文字幕| 亚洲欧美自拍另类| 国产精品视频一区二区久久|