|
又是紛繁絮繞的一個(gè)秋,我很遺憾有些事情我做的處置的確實(shí)欠妥亦或是缺乏了些許于年齡不相關(guān)的東西吧。天天2B一樣的活著,突然一個(gè)耳光打來,確實(shí)有些冷靜了!冷笑道:也許確實(shí)是有些什么吧!
迷茫和夢(mèng)想充斥著腦海中。我應(yīng)該慢下來,慢慢的審視自己,聽取別人的意見,規(guī)規(guī)矩矩的!可是誰又理解其中的甘苦呢?猶如一顆長(zhǎng)在巖石夾縫中小樹,必定要委屈求全的,夢(mèng)想很遠(yuǎn)很遠(yuǎn),我很慶幸我一直在走,雖然有時(shí)候走的很難很慢,卻一直沒有停下腳步,可能夢(mèng)想永遠(yuǎn)都不會(huì)實(shí)現(xiàn),即使實(shí)現(xiàn)不了,也無什么可悲哀的--命!
最近又重寫TCP部分APP程序,其中發(fā)現(xiàn)幾處問題第一處是網(wǎng)卡的吞吐量和應(yīng)用程序所能達(dá)到的最高效率處理率的沖突問題,這個(gè)問題毫無疑問在網(wǎng)絡(luò)空閑時(shí)數(shù)據(jù)輸入進(jìn)來,中斷繁忙的進(jìn)出,BUF頻繁的分配釋放,由于使用了堆內(nèi)存,所以效率比構(gòu)建的結(jié)構(gòu)內(nèi)存要快,然后輸入?yún)f(xié)議棧,那么這樣下來協(xié)議棧要處理的包就遠(yuǎn)遠(yuǎn)的超過了CPU時(shí)間片給他的時(shí)間導(dǎo)致了數(shù)據(jù)的擠壓,以至于有些響應(yīng)出問題,重發(fā)和轉(zhuǎn)發(fā)包的問題。這里應(yīng)該加一層過濾,不屬于自己的統(tǒng)統(tǒng)丟掉。有的硬件有數(shù)據(jù)過濾,有的沒有需要軟件構(gòu)成。這樣可以大大的屏蔽不需要的報(bào)文處理上,減少CPU負(fù)擔(dān)。這是提速A+第二處是網(wǎng)卡驅(qū)動(dòng)問題,首先你應(yīng)該有一個(gè)很穩(wěn)定的網(wǎng)卡驅(qū)動(dòng),也就是要在拋去協(xié)議棧的時(shí)候測(cè)試那段DEV代碼,看中斷收發(fā),收發(fā)可以構(gòu)建一些簡(jiǎn)單的包,比如ARP,和廣播包等!這是B+。再者就是TCP的SYN信號(hào)處理,這信號(hào)對(duì)程序員來說陌生!那是因?yàn)闆]看TCPIP協(xié)議,SYN發(fā)送始于socket 的connect host ip ,然后由于TCP的控制塊控制狀態(tài)變?yōu)镾YNSEND,此時(shí)可能鏈接不成功,不在線或者故障阻塞等,不要試圖關(guān)閉,等待TCP SEND SYN ==MAXSYN,這個(gè)間隔在1左右,或者更短一些,發(fā)送完畢之后host還是不在,則關(guān)閉鏈接,這時(shí)候上層關(guān)閉端口才是正確的!!這里處理不好也是要命的!現(xiàn)象時(shí)bind端口不成功,表面上看是綁定的不成功其實(shí)深層的原因是過早的關(guān)閉了控制塊,殊不知協(xié)議棧并不會(huì)按照你的意愿去做,因?yàn)槟氵`背了他的意愿,他還有任務(wù)沒有完成呢,所以他會(huì)掛起這個(gè)繼續(xù)等待,這個(gè)等待就長(zhǎng)了,于是乎你在建立一個(gè)則增加一堆內(nèi)存,在一次往復(fù),最終內(nèi)存爆掉或者協(xié)議棧用完他的堆。再也不能工作為止!GAME OVER!
彼采葛兮,一日不見,如三月兮!
彼采蕭兮,一日不見,如三秋兮!
彼采艾兮!一日不見,如三歲兮!
比特
|
|