1、阿里雲伺服器tcp連接會猛然增到上萬個是為什麼
原則上抄不需要對雲伺服器襲做特別的配置,建議你可以使用小鳥雲伺服器進行設置。對關聯到TCP類型
VIP的Linux雲伺服器,需要修改系統配置文件/etc/sysctl.conf以下三項為0:
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
如果部署在同一內網網段下的雲伺服器之間有通信需求,且發現有無法通信的情況存在,那麼需要檢查如下參數的配置是否正確:
net.ipv4.conf.default.arp_announce =2
net.ipv4.conf.all.arp_announce =2
並使用sysctl –p更新配置。
2、請問並發連接數10000的網站 需要什麼配置的伺服器.
朋友,這個需要看帶寬的。並發連接數10000的網站,一般的伺服器肯定承受回不了。但是我不相答信你能建這么大流量的網站。並發連接數達到10000.以為著你每天網站的流量在100萬以上。
購買伺服器時,如果是共享100M,建議不要購買,最好是獨享15M帶寬以上。伺服器配置最好是四核或8核的。
3、萬得股票連接伺服器失敗
萬得股票連接伺服器失敗
重新下載軟體。
檢查網路連接是否正常。
查看是否在伺服器維修期間。
4、如何實現單伺服器300萬個長連接的
不是吹牛,理論上完全可以達到。
(以下參考值皆是Linux平台上)
1,Linux單個進程可以維持的連接數(fd)理論值是通過ulimit -a設置,或在server內使用setrlimit()設置,具體最大是多少?我看我的64機上是64bits的一個數值,所以,權且認為理論上是2^64-1。 anyway,幾百萬不是問題。
2,TCP連接數。因為是Server端,不用向系統申請臨時埠,只佔fd資源。所以tcp連接數不受限制。
3,維持連接當然需要內存消耗,假如每個連接(fd),我們為其分配5k位元組(應該足夠了,就存放一些用戶信息之類的)。這樣是5k*3000000=15G。 文中有24G內存,應該也足夠了。
================================
下面我們說下文中提及的 多消息循環、非同步非阻塞。
先說非同步和非阻塞吧。權且認為這倆是一個概念。都是指的IO的非同步和非阻塞。
1,非同步+非阻塞的話,Linux上必然是epoll了。
原理上簡而言之吧,非同步就是基於事件的讀寫,epoll同時監聽所有的tcp連接(fd),當有哪些連接上有了事件(讀、寫、錯誤),就返回有事件的連接集合,然後處理這個集合里的需要處理的連接事件。這兒就是基於事件的非同步IO。
非阻塞。 在得到有事件的tcp連接集合之後,逐一進行讀(寫)。分開來說,需要讀的fd,其實數據已經到OS的tcp buffer里了,讀完直接返回,CPU不等待。(返回EAGAIN,其實就進行了幾次memcpy); 需要寫的連接,同樣,其實是把數據寫到了OS的tcp buffer里,寫滿為止。。不會等待對方發來ACK再返回。這樣,其實這里CPU基本上只進行了一些memcpy的操作。。即便同時幾十萬連接有事件,也是瞬間處理完的事。。。然後,CPU再進行非同步io等待(epoll_wait())。
當然這兒要充分利用多核,最好將io線程和work線程分開。
2,多消息循環。。這個應該是他們內部的概念。我個人猜測是非同步的消息協議。
舉例子,傳統的TCP連接是一問一答,如HTTP。
5、WiFi萬能鑰匙無法連接到伺服器怎麼回事
若出抄現無法連接寬頻問題,襲您可按以下操作處理:
1、進行單機撥號,如有使用路由器,請暫時斷開路由器測試;
2、檢查網線或電話線是否松動;
3、檢查Modem等網路設備是否過熱,重啟後再試;
4、建議您對電腦進行全盤的病毒掃描。
6、怎麼建一個支持10萬左右TCP連接的伺服器
不知道你是否對10萬個連接有概念,但你的意思應該是指並發連接吧,說實話是回很大了,就算答把並發的概念放大一點,每秒10萬個連接。
這么大的連接數,主要考驗的是伺服器的性能,具體需要什麼配置或檔次,這需要詳細的測試,除非具體做過這方面工程的公司或類似大型門戶的公司有具體數據,網上不容易找到詳細的測試文檔,但這肯定要涉及到負載均衡和伺服器的集群兩項技術。
7、WiFi萬能鑰匙無法連接到伺服器怎麼回事?
聯網控制那裡允許數據聯網就行了,要先用移動數據破解WiFi。
8、如何實現單伺服器300萬個長連接的
不是吹牛,理論上完全可以達到。
(以下參考值皆是Linux平台上)
1,Linux單個進程可以維持的連接數(fd)理論值是通過ulimit -a設置,或在server內使用setrlimit()設置,具體最大是多少?我看我的64機上是64bits的一個數值,所以,權且認為理論上是2^64-1。 anyway,幾百萬不是問題。
2,TCP連接數。因為是Server端,不用向系統申請臨時埠,只佔fd資源。所以tcp連接數不受限制。
3,維持連接當然需要內存消耗,假如每個連接(fd),我們為其分配5k位元組(應該足夠了,就存放一些用戶信息之類的)。這樣是5k*3000000=15G。 文中有24G內存,應該也足夠了。
================================
下面我們說下文中提及的 多消息循環、非同步非阻塞。
先說非同步和非阻塞吧。權且認為這倆是一個概念。都是指的IO的非同步和非阻塞。
1,非同步+非阻塞的話,Linux上必然是epoll了。
原理上簡而言之吧,非同步就是基於事件的讀寫,epoll同時監聽所有的tcp連接(fd),當有哪些連接上有了事件(讀、寫、錯誤),就返回有事件的連接集合,然後處理這個集合里的需要處理的連接事件。這兒就是基於事件的非同步IO。
非阻塞。 在得到有事件的tcp連接集合之後,逐一進行讀(寫)。分開來說,需要讀的fd,其實數據已經到OS的tcp buffer里了,讀完直接返回,CPU不等待。(返回EAGAIN,其實就進行了幾次memcpy); 需要寫的連接,同樣,其實是把數據寫到了OS的tcp buffer里,寫滿為止。。不會等待對方發來ACK再返回。這樣,其實這里CPU基本上只進行了一些memcpy的操作。。即便同時幾十萬連接有事件,也是瞬間處理完的事。。。然後,CPU再進行非同步io等待(epoll_wait())。
當然這兒要充分利用多核,最好將io線程和work線程分開。
2,多消息循環。。這個應該是他們內部的概念。我個人猜測是非同步的消息協議。
舉例子,傳統的TCP連接是一問一答,如HTTP。
9、如何實現單伺服器300萬個長連接的
轉載 這種功能實際上就是數據同步,同時要考慮手機本身、電量、網路流量等等限制因素,所以通常在移動端上有一下兩個解決方案:
1.一種是定時去server查詢數據,通常是使用HTTP協議來訪問web伺服器,稱Polling(輪詢);
2.還有一種是移動端和伺服器建立長連接,使用XMPP長連接,稱Push(推送)。
從耗費的電量、流量和數據延遲性各方面來說,Push有明顯的優勢。但是使用Push的缺點是:
對於客戶端:實現和維護相對成本高,在移動無線網路下維護長連接,相對有一些技術上的開發難度。
對於伺服器:如何實現多核並發,cpu作業調度,數量龐大的長連接並發維護等技術,仍存在開發難點。
在講述Push方案的原理前,我們先了解一下移動無線網路的特點。
移動無線網路的特點:
因為 IP v4 的 IP 量有限,運營商分配給手機終端的 IP 是運營商內網的 IP,手機要連接 Internet,就需要通過運營商的網關做一個網路地址轉換(Network Address Translation,NAT)。簡單的說運營商的網關需要維護一個外網 IP、埠到內網 IP、埠的對應關系,以確保內網的手機可以跟 Internet 的伺服器通訊
GGSN(Gateway GPRS
Support Node 網關GPRS支持結點)模塊就實現了NAT功能。
因為大部分移動無線網路運營商都是為了減少網關的NAT映射表的負荷,所以如果發現鏈路中有一段時間沒有數據通訊時,會刪除其對應表,造成鏈路中斷。(關於NAT的作用及其原理可以查看我的另一篇博文:關於使用UDP(TCP)跨區域網,NAT穿透的心得)
Push在Android平台上長連接的實現:
既然我們知道我們移動端要和Internet進行通信,必須通過運營商的網關,所以,為了不讓NAT映射表失效,我們需要定時向Internet發送數據,因為只是為了不然NAT映射表失效,所以只需發送長度為0的數據即可。
這時候就要用到定時器,在android系統上,定時器通常有一下兩種:
1.java.util.Timer
2.android.app.AlarmManager
分析:
Timer:可以按照計劃或者時間周期來執行相關的任務。但是Timer需要用WakeLock來讓CPU保持喚醒狀態,才能保證任務的執行,這樣子會消耗大量流量;當CPU處於休眠的時候,就不能喚醒執行任務,所以應用於移動端明顯是不合適。
AlarmManager:AlarmManager類是屬於android系統封裝好來管理RTC模塊的管理類。這里就涉及到RTC模塊,要更好地了解兩者的區別,就要明白兩者真正的區別。
RTC(Real- Time Clock)實時鬧鍾在一個嵌入式系統中,通常採用RTC
來提供可靠的系統時間,包括時分秒和年月日等;而且要求在系統處於關機狀態下它也能夠正常工作(通常採用後備電池供電),它的外圍也不需要太多的輔助電路,典型的就是只需要一個高精度的32.768KHz
晶體和電阻電容等。(如果對這方面感興趣,可以自己查閱相關資料,這里就說個大概)
好了,回來正題。所以,AlarmManager又稱全局定時鬧鍾。這意味著,當我用使用AlarmManager來定時執行任務,CPU可以正常地休眠,只有在執行任務是,才喚醒CPU,這個過程是很短時間的。
下面簡單來說明其使用:
1.類似於Timer功能:
//獲得鬧鍾管理器
AlarmManager
am = (AlarmManager)getSystemService(ALARM_SERVICE);
//設置任務執行計劃
am.setRepeating(AlarmManager.ELAPSED_REALTIME, firstTime, 5*1000,
sender);//從firstTime才開始執行,每隔5秒再執行
2.實現全局定時功能:
//獲得鬧鍾管理器
AlarmManager
am = (AlarmManager)getSystemService(ALARM_SERVICE);
//設置任務執行計劃
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,
5*1000, sender);//從firstTime才開始執行,每隔5秒再執行
總結:在android客戶端使用Push推送時,應該使用AlarmManager來實現心跳功能,使其真正實現長連接。
10、如何實現單伺服器300萬個長連接的
理論上完全可以達到。
(以下參考值皆是Linux平台上)
1,Linux單個進程可以維持的連接數(fd)理論值是通過ulimit -a設置,或在server內使用setrlimit()設置,具體最大是多少?我看我的64機上是64bits的一個數值,所以,權且認為理論上是2^64-1。 anyway,幾百萬不是問題。
2,TCP連接數。因為是Server端,不用向系統申請臨時埠,只佔fd資源。所以tcp連接數不受限制。
3,維持連接當然需要內存消耗,假如每個連接(fd),我們為其分配5k位元組(應該足夠了,就存放一些用戶信息之類的)。這樣是5k*3000000=15G。 文中有24G內存,應該也足夠了。
================================
下面我們說下文中提及的 多消息循環、非同步非阻塞。
先說非同步和非阻塞吧。權且認為這倆是一個概念。都是指的IO的非同步和非阻塞。
1,非同步+非阻塞的話,Linux上必然是epoll了。
原理上簡而言之吧,非同步就是基於事件的讀寫,epoll同時監聽所有的tcp連接(fd),當有哪些連接上有了事件(讀、寫、錯誤),就返回有事件的連接集合,然後處理這個集合里的需要處理的連接事件。這兒就是基於事件的非同步IO。
非阻塞。 在得到有事件的tcp連接集合之後,逐一進行讀(寫)。分開來說,需要讀的fd,其實數據已經到OS的tcp buffer里了,讀完直接返回,CPU不等待。(返回EAGAIN,其實就進行了幾次memcpy); 需要寫的連接,同樣,其實是把數據寫到了OS的tcp buffer里,寫滿為止。。不會等待對方發來ACK再返回。這樣,其實這里CPU基本上只進行了一些memcpy的操作。。即便同時幾十萬連接有事件,也是瞬間處理完的事。。。然後,CPU再進行非同步io等待(epoll_wait())。
當然這兒要充分利用多核,最好將io線程和work線程分開。
2,多消息循環。。這個應該是他們內部的概念。我個人猜測是非同步的消息協議。
舉例子,傳統的TCP連接是一問一答,如HTTP。