linux并發(fā)連接50萬的配置方法
- A 64 bits hardware/kernel (AMD64, Opterons)
- At least 8GB of ram
- A recent linux kernel (2.6.x)
About tuning, I prefer to not fully disclose them because servers are targets of many attacks, so it's better not help hackers.
The most touchy thing is the IP route cache : You have to tune it or else the machine drops many connections
(hint : rhash_entries=... in the boot append string)
hints :
echo 1 > /proc/sys/net/ipv4/route/gc_interval
echo 150 >/proc/sys/net/ipv4/route/gc_timeout
echo 2 >/proc/sys/net/ipv4/route/gc_elasticity
- Use of hugeTLB pages
hint :
echo xxx >/proc/sys/vm/nr_hugepages
Tune tcp :
echo "4096 49152 131072" >/proc/sys/net/ipv4/tcp_wmem
echo xxxx >/proc/sys/net/ipv4/tcp_max_syn_backlog
echo xxxx >/proc/sys/net/core/somaxconn
echo 1200000 > /proc/sys/net/ipv4/tcp_max_tw_buckets
echo 7 >/proc/sys/net/ipv4/tcp_retries2
echo "600000 650000 700000" >/proc/sys/net/ipv4/tcp_mem
echo 0 >/proc/sys/net/ipv4/tcp_timestamps
echo 0 >/proc/sys/net/ipv4/tcp_window_scaling
echo 0 >/proc/sys/net/ipv4/tcp_sack
echo 330000 >/proc/sys/net/ipv4/tcp_max_orphans
echo "10000 62000" >/proc/sys/net/ipv4/ip_local_port_range
others :
echo 1300000 >/proc/sys/fs/file-max
有多種方法加大Linux的threads數(shù)
1、sysctl -w kernel.threads-max=8167 最大threads數(shù)
2、echo 8167 > /proc/sys/kernel/threads-max
重啟后保存修改值
編輯/etc/sysctl.conf
增加
kernel.threads-max = 8167
#sysctl -p 馬上生效
/proc/sys/net/ipv4/參數(shù)說明
參數(shù)名 參數(shù)類型
參數(shù)值(如無特別標(biāo)注,內(nèi)存類的單位為byte,關(guān)于時(shí)間的單位為秒)
官方詳細(xì)說明(skylove對(duì)該參數(shù)的個(gè)人心得或補(bǔ)充說明)
ip_forward :BOOLEAN
0 - 關(guān)閉(默認(rèn)值)
非0值 - 打開ip轉(zhuǎn)發(fā)
在網(wǎng)絡(luò)本地接口之間轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)。該參數(shù)非常特殊,對(duì)該參數(shù)的修改將導(dǎo)致其它所有相關(guān)配置參數(shù)恢復(fù)其默認(rèn)值(對(duì)于主機(jī)參閱RFC1122,對(duì)于路由器參見 RFC1812)(在其他一些操作系統(tǒng)中,這個(gè)參數(shù)不是boolean型,而是INTEGER型,設(shè)置為0為不轉(zhuǎn)發(fā),1為根據(jù)接口情形決定是否轉(zhuǎn)發(fā),2是 始終轉(zhuǎn)發(fā))
ip_default_ttl :INTEGER
默認(rèn)值為 64
表示IP數(shù)據(jù)報(bào)的Time To Live值(在網(wǎng)絡(luò)傳遞中,每經(jīng)過一"跳",該值減少1,當(dāng)ttl為0的時(shí)候,丟棄該包.該值越大,即在網(wǎng)絡(luò)上可以經(jīng)過的路由器設(shè)備的數(shù)量越多,但一個(gè)錯(cuò) 誤的包,也會(huì)越發(fā)浪費(fèi)生存周期.根據(jù)目前的實(shí)際情形而看,設(shè)置為32已經(jīng)足夠普通網(wǎng)絡(luò)訪問Internet的需求了)
ip_no_pmtu_disc :BOOLEAN
默認(rèn)值為FALSE(0)
關(guān)閉路徑MTU探測(cè)(典型的瓶頸原理,一次成功的傳輸中,mtu是由網(wǎng)絡(luò)上最"窄"的位置決定的.如果IP層有一個(gè)數(shù)據(jù)報(bào)要傳,而且數(shù)據(jù)的長度比鏈路層的MTU還大,那么IP層就需要進(jìn)行分片(fragmentation),把數(shù)據(jù)報(bào)分成若干片,這樣每一片都小于MTU。
幾種常見網(wǎng)絡(luò)的MTU值:
超通道 65535
16Mb/ s令牌網(wǎng)(IBM) 17914
4Mb/ s令牌網(wǎng)(IEEE 802.5) 4464
FDDI 4352
以太網(wǎng) 1500
IEEE 802.3/802.2 1492
X.25 576
點(diǎn)對(duì)點(diǎn)(低延時(shí)) 296
ipfrag_high_thresh :INTEGER
默認(rèn)值為262144
用來組裝分段的IP包的最大內(nèi)存量。兩個(gè)文件分別表示用于重組IP分段的內(nèi)存分配最低值和最高值,一旦達(dá)到最高內(nèi)存分配值,其它分段將被丟棄,直到達(dá)到最 低內(nèi)存(ipfrag_low_thresh 見下文)分配值。(根據(jù)我個(gè)人理解,就是達(dá)到最高后,就"關(guān)門打狗",直到處理到最低值的時(shí)候才又開門放分段的ip包進(jìn)來處理.如果最高/最低差距過小, 很可能很快又達(dá)到限制又開始丟棄包;而設(shè)置過大,又會(huì)造成某段時(shí)間丟包時(shí)間持續(xù)過久.因此需要適當(dāng)?shù)乜紤],默認(rèn)值中給出的最低/最高比率值為3/4.此外 補(bǔ)充說明, kernel中,對(duì)內(nèi)存的使用單位,都是以byte為單位的.當(dāng)TCP數(shù)據(jù)包傳輸發(fā)生錯(cuò)誤時(shí),開始碎片整理。有效的數(shù)據(jù)包保留在內(nèi)存,同時(shí)損壞的數(shù)據(jù)包被 轉(zhuǎn)發(fā)。我在1G內(nèi)存的NAT機(jī)器上,分別設(shè)置最低為262144,最高為393216)
ipfrag_low_thresh :INTEGER
默認(rèn)值為196608
參見ipfrag_high_thresh。
ipfrag_time :INTEGER
默認(rèn)值為30
保存一個(gè)IP分片在內(nèi)存中的時(shí)間。
inet_peer_threshold :INTEGER
默認(rèn)值為65664
INET 對(duì)端存儲(chǔ)器某個(gè)合適值,當(dāng)超過該閥值條目將被丟棄。該閥值同樣決定生存時(shí)間以及廢物收集通過的時(shí)間間隔。條目越多?存活期越低?GC 間隔越短(GC=Grabage Collection 廢物收集?默認(rèn)值65664=65536 + 128 是怎么得來的呢?看include/net/inetpeer.h struct inet_peer的內(nèi)容,是為了IP ROUTE更快,緩沖對(duì)方IP的信息,一個(gè)對(duì)方IP一個(gè)記錄.該值與
inet_peer_gc_maxtime
inet_peer_gc_mintime
inet_peer_maxttl
inet_peer_minttl
inet_peer_threshold
參數(shù)都是用來控制這個(gè)cache的大小的。似乎這個(gè)cache消耗比較大,在CU上有朋友提到過在一個(gè)26M的嵌入式Linux中,這個(gè)cache就用到了1M多內(nèi)存)
inet_peer_minttl :INTEGER
默認(rèn)值為120
條目的最低存活期。在重組端必須要有足夠的碎片(fragment)存活期。這個(gè)最低存活期必須保證緩沖池容積是否少于 inet_peer_threshold。該值以 jiffies為單位測(cè)量。(每次整理的時(shí)候,會(huì)考慮小于inet_peer_minttl 的ip條目一定保存,而大于inet_peer_maxttl時(shí)間設(shè)置的ip條目會(huì)被釋放)
inet_peer_maxttl :INTEGER
默認(rèn)值為600
條目的最大存活期。在此期限到達(dá)之后?如果緩沖池沒有耗盡壓力的話(例如?緩沖池中的條目數(shù)目非常少)?不使用的條目將會(huì)超時(shí)。該值以 jiffies為單位測(cè)量。
inet_peer_gc_mintime :INTEGER
默認(rèn)值為10
廢物收集(GC)通過的最短間隔。這個(gè)間隔會(huì)影響到緩沖池中內(nèi)存的高壓力。 該值以 jiffies為單位測(cè)量。(如果長期不整理,會(huì)cache很多條目,而整理的時(shí)間太頻繁,又會(huì)給系統(tǒng)造成壓力,這個(gè)值就是確定最小整理周期間隔的)
inet_peer_gc_maxtime :INTEGER
默認(rèn)值為120
廢物收集(GC)通過的最大間隔,這個(gè)間隔會(huì)影響到緩沖池中內(nèi)存的低壓力。 該值以 jiffies為單位測(cè)量。Jiffie: 內(nèi)核使用的內(nèi)部時(shí)間單位,在i386系統(tǒng)上大小為1/100s,在Alpha中為1/1024S。在/usr/include/asm/param.h中 的HZ定義有特定系統(tǒng)的值。
====================TCP 參數(shù)================
tcp_syn_retries :INTEGER
默認(rèn)值是5
對(duì)于一個(gè)新建連接,內(nèi)核要發(fā)送多少個(gè) SYN 連接請(qǐng)求才決定放棄。不應(yīng)該大于255,默認(rèn)值是5,對(duì)應(yīng)于180秒左右時(shí)間。(對(duì)于大負(fù)載而物理通信良好的網(wǎng)絡(luò)而言,這個(gè)值偏高,可修改為2.這個(gè)值僅 僅是針對(duì)對(duì)外的連接,對(duì)進(jìn)來的連接,是由tcp_retries1 決定的)
tcp_synack_retries :INTEGER
默認(rèn)值是5
對(duì)于遠(yuǎn)端的連接請(qǐng)求SYN,內(nèi)核會(huì)發(fā)送SYN + ACK數(shù)據(jù)報(bào),以確認(rèn)收到上一個(gè) SYN連接請(qǐng)求包。這是所謂的三次握手( threeway handshake)機(jī)制的第二個(gè)步驟。這里決定內(nèi)核在放棄連接之前所送出的 SYN+ACK 數(shù)目。不應(yīng)該大于255,默認(rèn)值是5,對(duì)應(yīng)于180秒左右時(shí)間。(可以根據(jù)上面的 tcp_syn_retries 來決定這個(gè)值)
tcp_keepalive_time :INTEGER
默認(rèn)值是7200(2小時(shí))
當(dāng) keepalive打開的情況下,TCP發(fā)送keepalive消息的頻率。(由于目前網(wǎng)絡(luò)攻擊等因素,造成了利用這個(gè)進(jìn)行的攻擊很頻繁,曾經(jīng)也有cu 的朋友提到過,說如果2邊建立了連接,然后不發(fā)送任何數(shù)據(jù)或者rst/fin消息,那么持續(xù)的時(shí)間是不是就是2小時(shí),空連接攻擊? tcp_keepalive_time就是預(yù)防此情形的.我個(gè)人在做nat服務(wù)的時(shí)候的修改值為1800秒)
tcp_keepalive_probes:INTEGER
默認(rèn)值是9
TCP發(fā)送keepalive探測(cè)以確定該連接已經(jīng)斷開的次數(shù)。(注意:保持連接僅在SO_KEEPALIVE套接字選項(xiàng)被打開是才發(fā)送.次數(shù)默認(rèn)不需要修改,當(dāng)然根據(jù)情形也可以適當(dāng)?shù)乜s短此值.設(shè)置為5比較合適)
tcp_keepalive_intvl:INTEGER
默認(rèn)值為75
探測(cè)消息發(fā)送的頻率,乘以tcp_keepalive_probes就得到對(duì)于從開始探測(cè)以來沒有響應(yīng)的連接殺除的時(shí)間。默認(rèn)值為75秒,也就是沒有活動(dòng) 的連接將在大約11分鐘以后將被丟棄。(對(duì)于普通應(yīng)用來說,這個(gè)值有一些偏大,可以根據(jù)需要改小.特別是web類服務(wù)器需要改小該值,15是個(gè)比較合適的 值)
tcp_retries1 :INTEGER
默認(rèn)值是3
放棄回應(yīng)一個(gè)TCP連接請(qǐng)求前?需要進(jìn)行多少次重試。RFC 規(guī)定最低的數(shù)值是3?這也是默認(rèn)值?根據(jù)RTO的值大約在3秒 - 8分鐘之間。(注意:這個(gè)值同時(shí)還決定進(jìn)入的syn連接)
tcp_retries2 :INTEGER
默認(rèn)值為15
在丟棄激活(已建立通訊狀況)的TCP連接之前?需要進(jìn)行多少次重試。默認(rèn)值為15,根據(jù)RTO的值來決定,相當(dāng)于13-30分鐘(RFC1122規(guī)定,必須大于100秒).(這個(gè)值根據(jù)目前的網(wǎng)絡(luò)設(shè)置,可以適當(dāng)?shù)馗男?我的網(wǎng)絡(luò)內(nèi)修改為了5)
tcp_orphan_retries :INTEGER
默認(rèn)值是7
在近端丟棄TCP連接之前?要進(jìn)行多少次重試。默認(rèn)值是7個(gè)?相當(dāng)于 50秒 - 16分鐘?視 RTO 而定。如果您的系統(tǒng)是負(fù)載很大的web服務(wù)器?那么也許需要降低該值?這類 sockets 可能會(huì)耗費(fèi)大量的資源。另外參的考 tcp_max_orphans 。(事實(shí)上做NAT的時(shí)候,降低該值也是好處顯著的,我本人的網(wǎng)絡(luò)環(huán)境中降低該值為3)
tcp_fin_timeout :INTEGER
默認(rèn)值是 60
對(duì)于本端斷開的socket連接,TCP保持在FIN-WAIT-2狀態(tài)的時(shí)間。對(duì)方可能會(huì)斷開連接或一直不結(jié)束連接或不可預(yù)料的進(jìn)程死亡。默認(rèn)值為 60 秒。過去在2.2版本的內(nèi)核中是 180 秒。您可以設(shè)置該值?但需要注意?如果您的機(jī)器為負(fù)載很重的web服務(wù)器?您可能要冒內(nèi)存被大量無效數(shù)據(jù)報(bào)填滿的風(fēng)險(xiǎn)?FIN-WAIT-2 sockets 的危險(xiǎn)性低于 FIN-WAIT-1 ?因?yàn)樗鼈冏疃嘀怀?1.5K 的內(nèi)存?但是它們存在時(shí)間更長。另外參考 tcp_max_orphans。(事實(shí)上做NAT的時(shí)候,降低該值也是好處顯著的,我本人的網(wǎng)絡(luò)環(huán)境中降低該值為30)
tcp_max_tw_buckets :INTEGER
默認(rèn)值是180000
系統(tǒng)在同時(shí)所處理的最大 timewait sockets 數(shù)目。如果超過此數(shù)的話?time-wait socket 會(huì)被立即砍除并且顯示警告信息。之所以要設(shè)定這個(gè)限制?純粹為了抵御那些簡單的 DoS 攻擊?千萬不要人為的降低這個(gè)限制?不過?如果網(wǎng)絡(luò)條件需要比默認(rèn)值更多?則可以提高它(或許還要增加內(nèi)存)。(事實(shí)上做NAT的時(shí)候最好可以適當(dāng)?shù)卦黾?該值)
tcp_tw_recycle :BOOLEAN
默認(rèn)值是0
打開快速 TIME-WAIT sockets 回收。除非得到技術(shù)專家的建議或要求?請(qǐng)不要隨意修改這個(gè)值。(做NAT的時(shí)候,建議打開它)
tcp_tw_reuse:BOOLEAN
默認(rèn)值是0
該文件表示是否允許重新應(yīng)用處于TIME-WAIT狀態(tài)的socket用于新的TCP連接(這個(gè)對(duì)快速重啟動(dòng)某些服務(wù),而啟動(dòng)后提示端口已經(jīng)被使用的情形非常有幫助)
tcp_max_orphans :INTEGER
缺省值是8192
系統(tǒng)所能處理不屬于任何進(jìn)程的TCP sockets最大數(shù)量。假如超過這個(gè)數(shù)量?那么不屬于任何進(jìn)程的連接會(huì)被立即reset,并同時(shí)顯示警告信息。之所以要設(shè)定這個(gè)限制?純粹為了抵御那些 簡單的 DoS 攻擊?千萬不要依賴這個(gè)或是人為的降低這個(gè)限制(這個(gè)值Redhat AS版本中設(shè)置為32768,但是很多防火墻修改的時(shí)候,建議該值修改為2000)
tcp_abort_on_overflow :BOOLEAN
缺省值是0
當(dāng)守護(hù)進(jìn)程太忙而不能接受新的連接,就象對(duì)方發(fā)送reset消息,默認(rèn)值是false。這意味著當(dāng)溢出的原因是因?yàn)橐粋€(gè)偶然的猝發(fā),那么連接將恢復(fù)狀態(tài)。 只有在你確信守護(hù)進(jìn)程真的不能完成連接請(qǐng)求時(shí)才打開該選項(xiàng),該選項(xiàng)會(huì)影響客戶的使用。(對(duì)待已經(jīng)滿載的sendmail,apache這類服務(wù)的時(shí)候,這 個(gè)可以很快讓客戶端終止連接,可以給予服務(wù)程序處理已有連接的緩沖機(jī)會(huì),所以很多防火墻上推薦打開它)
tcp_syncookies :BOOLEAN
默認(rèn)值是0
只有在內(nèi)核編譯時(shí)選擇了CONFIG_SYNCOOKIES時(shí)才會(huì)發(fā)生作用。當(dāng)出現(xiàn)syn等候隊(duì)列出現(xiàn)溢出時(shí)象對(duì)方發(fā)送syncookies。目的是為了防止syn flood攻擊。
注意:該選項(xiàng)千萬不能用于那些沒有收到攻擊的高負(fù)載服務(wù)器,如果在日志中出現(xiàn)synflood消息,但是調(diào)查發(fā)現(xiàn)沒有收到synflood攻擊,而是合法用戶的連接負(fù)載過高的原因,你應(yīng)該調(diào)整其它參數(shù)來提高服務(wù)器性能。參考:
tcp_max_syn_backlog
tcp_synack_retries
tcp_abort_on_overflow
syncookie 嚴(yán)重的違背TCP協(xié)議,不允許使用TCP擴(kuò)展,可能對(duì)某些服務(wù)導(dǎo)致嚴(yán)重的性能影響(如SMTP轉(zhuǎn)發(fā))。(注意,該實(shí)現(xiàn)與BSD上面使用的tcp proxy一樣,是違反了RFC中關(guān)于tcp連接的三次握手實(shí)現(xiàn)的,但是對(duì)于防御syn-flood的確很有用.)
tcp_stdurg :BOOLEAN
默認(rèn)值為0
使用 TCP urg pointer 字段中的主機(jī)請(qǐng)求解釋功能。大部份的主機(jī)都使用老舊的 BSD解釋,因此如果您在 Linux 打開它?或會(huì)導(dǎo)致不能和它們正確溝通。
tcp_max_syn_backlog :INTEGER
對(duì)于那些依然還未獲得客戶端確認(rèn)的連接請(qǐng)求?需要保存在隊(duì)列中最大數(shù)目。對(duì)于超過 128Mb 內(nèi)存的系統(tǒng)?默認(rèn)值是 1024 ?低于 128Mb 的則為 128。如果服務(wù)器經(jīng)常出現(xiàn)過載?可以嘗試增加這個(gè)數(shù)字。警告?假如您將此值設(shè)為大于 1024?最好修改 include/net/tcp.h 里面的 TCP_SYNQ_HSIZE ?以保持 TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog ?并且編進(jìn)核心之內(nèi)。(SYN Flood攻擊利用TCP協(xié)議散布握手的缺陷,偽造虛假源IP地址發(fā)送大量TCP-SYN半打開連接到目標(biāo)系統(tǒng),最終導(dǎo)致目標(biāo)系統(tǒng)Socket隊(duì)列資源耗 盡而無法接受新的連接。為了應(yīng)付這種攻擊,現(xiàn)代Unix系統(tǒng)中普遍采用多連接隊(duì)列處理的方式來緩沖(而不是解決)這種攻擊,是用一個(gè)基本隊(duì)列處理正常的完 全連接應(yīng)用(Connect()和Accept() ),是用另一個(gè)隊(duì)列單獨(dú)存放半打開連接。這種雙隊(duì)列處理方式和其他一些系統(tǒng)內(nèi)核措施(例如Syn-Cookies/Caches)聯(lián)合應(yīng)用時(shí),能夠比較有 效的緩解小規(guī)模的SYN Flood攻擊(事實(shí)證明<1000p/s)加大SYN隊(duì)列長度可以容納更多等待連接的網(wǎng)絡(luò)連接數(shù),所以對(duì)Server來說可以考慮增大該值.)
tcp_window_scaling :INTEGER
缺省值為1
該文件表示設(shè)置tcp/ip會(huì)話的滑動(dòng)窗口大小是否可變。參數(shù)值為布爾值,為1時(shí)表示可變,為0時(shí)表示不可變。tcp/ip通常使用的窗口最大可達(dá)到 65535 字節(jié),對(duì)于高速網(wǎng)絡(luò),該值可能太小,這時(shí)候如果啟用了該功能,可以使tcp/ip滑動(dòng)窗口大小增大數(shù)個(gè)數(shù)量級(jí),從而提高數(shù)據(jù)傳輸?shù)哪芰?RFC 1323)。(對(duì)普通地百M(fèi)網(wǎng)絡(luò)而言,關(guān)閉會(huì)降低開銷,所以如果不是高速網(wǎng)絡(luò),可以考慮設(shè)置為0)
tcp_timestamps :BOOLEAN
缺省值為1
Timestamps 用在其它一些東西中?可以防范那些偽造的 sequence 號(hào)碼。一條1G的寬帶線路或許會(huì)重遇到帶 out-of-line數(shù)值的舊sequence 號(hào)碼(假如它是由于上次產(chǎn)生的)。Timestamp 會(huì)讓它知道這是個(gè) '舊封包'。(該文件表示是否啟用以一種比超時(shí)重發(fā)更精確的方法(RFC 1323)來啟用對(duì) RTT 的計(jì)算;為了實(shí)現(xiàn)更好的性能應(yīng)該啟用這個(gè)選項(xiàng)。)
tcp_sack :BOOLEAN
缺省值為1
使用 Selective ACK?它可以用來查找特定的遺失的數(shù)據(jù)報(bào)--- 因此有助于快速恢復(fù)狀態(tài)。該文件表示是否啟用有選擇的應(yīng)答(Selective Acknowledgment),這可以通過有選擇地應(yīng)答亂序接收到的報(bào)文來提高性能(這樣可以讓發(fā)送者只發(fā)送丟失的報(bào)文段)。(對(duì)于廣域網(wǎng)通信來說這個(gè) 選項(xiàng)應(yīng)該啟用,但是這會(huì)增加對(duì) CPU 的占用。)
tcp_fack :BOOLEAN
缺省值為1
打開FACK擁塞避免和快速重傳功能。(注意,當(dāng)tcp_sack設(shè)置為0的時(shí)候,這個(gè)值即使設(shè)置為1也無效)
tcp_dsack :BOOLEAN
缺省值為1
允許TCP發(fā)送"兩個(gè)完全相同"的SACK。
tcp_ecn :BOOLEAN
缺省值為0
打開TCP的直接擁塞通告功能。
tcp_reordering :INTEGER
默認(rèn)值是3
TCP流中重排序的數(shù)據(jù)報(bào)最大數(shù)量 。 (一般有看到推薦把這個(gè)數(shù)值略微調(diào)整大一些,比如5)
tcp_retrans_collapse :BOOLEAN
缺省值為1
對(duì)于某些有bug的打印機(jī)提供針對(duì)其bug的兼容性。(一般不需要這個(gè)支持,可以關(guān)閉它)
tcp_wmem(3個(gè)INTEGER變量): min, default, max
min:為TCP socket預(yù)留用于發(fā)送緩沖的內(nèi)存最小值。每個(gè)tcp socket都可以在建議以后都可以使用它。默認(rèn)值為4096(4K)。
default:為TCP socket預(yù)留用于發(fā)送緩沖的內(nèi)存數(shù)量,默認(rèn)情況下該值會(huì)影響其它協(xié)議使用的net.core.wmem_default 值,一般要低于net.core.wmem_default的值。默認(rèn)值為16384(16K)。
max: 用于TCP socket發(fā)送緩沖的內(nèi)存最大值。該值不會(huì)影響net.core.wmem_max,"靜態(tài)"選擇參數(shù)SO_SNDBUF則不受該值影響。默認(rèn)值為 131072(128K)。(對(duì)于服務(wù)器而言,增加這個(gè)參數(shù)的值對(duì)于發(fā)送數(shù)據(jù)很有幫助,在我的網(wǎng)絡(luò)環(huán)境中,修改為了51200 131072 204800)
tcp_rmem (3個(gè)INTEGER變量): min, default, max
min:為TCP socket預(yù)留用于接收緩沖的內(nèi)存數(shù)量,即使在內(nèi)存出現(xiàn)緊張情況下tcp socket都至少會(huì)有這么多數(shù)量的內(nèi)存用于接收緩沖,默認(rèn)值為8K。
default:為TCP socket預(yù)留用于接收緩沖的內(nèi)存數(shù)量,默認(rèn)情況下該值影響其它協(xié)議使用的 net.core.wmem_default 值。該值決定了在tcp_adv_win_scale、tcp_app_win和tcp_app_win=0默認(rèn)值情況下,TCP窗口大小為65535。 默認(rèn)值為87380
max:用于TCP socket接收緩沖的內(nèi)存最大值。該值不會(huì)影響 net.core.wmem_max,"靜態(tài)"選擇參數(shù) SO_SNDBUF則不受該值影響。默認(rèn)值為 128K。默認(rèn)值為87380*2 bytes。(可以看出,.max的設(shè)置最好是default的兩倍,對(duì)于NAT來說主要該增加它,我的網(wǎng)絡(luò)里為 51200 131072 204800)
tcp_mem(3個(gè)INTEGER變量):low, pressure, high
low:當(dāng)TCP使用了低于該值的內(nèi)存頁面數(shù)時(shí),TCP不會(huì)考慮釋放內(nèi)存。(理想情況下,這個(gè)值應(yīng)與指定給 tcp_wmem 的第 2 個(gè)值相匹配 - 這第 2 個(gè)值表明,最大頁面大小乘以最大并發(fā)請(qǐng)求數(shù)除以頁大小 (131072 * 300 / 4096)。 )
pressure:當(dāng)TCP使用了超過該值的內(nèi)存頁面數(shù)量時(shí),TCP試圖穩(wěn)定其內(nèi)存使用,進(jìn)入pressure模式,當(dāng)內(nèi)存消耗低于low值時(shí)則退出 pressure狀態(tài)。(理想情況下這個(gè)值應(yīng)該是 TCP 可以使用的總緩沖區(qū)大小的最大值 (204800 * 300 / 4096)。 )
high:允許所有tcp sockets用于排隊(duì)緩沖數(shù)據(jù)報(bào)的頁面量。(如果超過這個(gè)值,TCP 連接將被拒絕,這就是為什么不要令其過于保守 (512000 * 300 / 4096) 的原因了。 在這種情況下,提供的價(jià)值很大,它能處理很多連接,是所預(yù)期的 2.5 倍;或者使現(xiàn)有連接能夠傳輸 2.5 倍的數(shù)據(jù)。 我的網(wǎng)絡(luò)里為192000 300000 732000)
一般情況下這些值是在系統(tǒng)啟動(dòng)時(shí)根據(jù)系統(tǒng)內(nèi)存數(shù)量計(jì)算得到的。
tcp_app_win : INTEGER
默認(rèn)值是31
保留max(window/2^tcp_app_win, mss)數(shù)量的窗口由于應(yīng)用緩沖。當(dāng)為0時(shí)表示不需要緩沖。
tcp_adv_win_scale : INTEGER
默認(rèn)值為2
計(jì)算緩沖開銷bytes/2^tcp_adv_win_scale(如果tcp_adv_win_scale > 0)或者bytes-bytes/2^(-tcp_adv_win_scale)(如果tcp_adv_win_scale <= 0)。
tcp_rfc1337 :BOOLEAN
缺省值為0
這個(gè)開關(guān)可以啟動(dòng)對(duì)于在RFC1337中描述的"tcp 的time-wait暗殺危機(jī)"問題的修復(fù)。啟用后,內(nèi)核將丟棄那些發(fā)往time-wait狀態(tài)TCP套接字的RST 包.
tcp_low_latency : BOOLEAN
缺省值為0
允許 TCP/IP 棧適應(yīng)在高吞吐量情況下低延時(shí)的情況;這個(gè)選項(xiàng)一般情形是的禁用。(但在構(gòu)建Beowulf 集群的時(shí)候,打開它很有幫助)
tcp_westwood :BOOLEAN
缺省值為0
啟用發(fā)送者端的擁塞控制算法,它可以維護(hù)對(duì)吞吐量的評(píng)估,并試圖對(duì)帶寬的整體利用情況進(jìn)行優(yōu)化;對(duì)于 WAN 通信來說應(yīng)該啟用這個(gè)選項(xiàng)。
tcp_bic :BOOLEAN
缺省值為0
為快速長距離網(wǎng)絡(luò)啟用 Binary Increase Congestion;這樣可以更好地利用以 GB 速度進(jìn)行操作的鏈接;對(duì)于 WAN 通信應(yīng)該啟用這個(gè)選項(xiàng)。
==============IP、ICMP===========
ip_local_port_range: (兩個(gè)INTEGER)
定于TCP和UDP使用的本地端口范圍,第一個(gè)數(shù)是開始,第二個(gè)數(shù)是最后端口號(hào),默認(rèn)值依賴于系統(tǒng)中可用的內(nèi)存數(shù):
> 128Mb 32768-61000
< 128Mb 1024-4999 or even less.
該值決定了活動(dòng)連接的數(shù)量,也就是系統(tǒng)可以并發(fā)的連接數(shù)(做nat的時(shí)候,我將它設(shè)置為了1024 65530 工作正常)
ip_nonlocal_bind : BOOLEAN
默認(rèn)值是0
如果您想讓應(yīng)用程式能夠捆綁到一個(gè)不屬於該系統(tǒng)的位址?就需要設(shè)定這?。(當(dāng)機(jī)器使
用非固定/動(dòng)態(tài)的網(wǎng)絡(luò)連接的時(shí)候,或者離線調(diào)試程序的時(shí)候,當(dāng)線路斷掉之后?該服務(wù)仍可?動(dòng)而且捆綁到特定的位址之上。)
ip_dynaddr : BOOLEAN
默認(rèn)值是0
假如甚至為非0值,那么將支持動(dòng)態(tài)地址.如果是設(shè)置為>1的值,將在動(dòng)態(tài)地址改寫的時(shí)候發(fā)一條內(nèi)核消息。(如要用動(dòng)態(tài)界面位址做 dail-on-demand ?那就設(shè)定它。一旦請(qǐng)求界面起來之
后?所有看不到回應(yīng)的本地 TCP socket 都會(huì)重新捆綁(rebound)?以獲得正確的位址。
假如遇到該網(wǎng)絡(luò)界面的連線不工作?但重新再試一次卻又可以的情形?設(shè)定這個(gè)可解決這
個(gè)問題。)
icmp_echo_ignore_all : BOOLEAN
icmp_echo_ignore_broadcasts : BOOLEAN
默認(rèn)值是0
如果任何一個(gè)設(shè)置為true(>0)則系統(tǒng)將忽略所有發(fā)送給自己的ICMP ECHO請(qǐng)求或那些廣播地址的請(qǐng)求。(現(xiàn)在網(wǎng)絡(luò)上很多病毒/木馬自動(dòng)發(fā)起感染攻擊是先用icmp的echo方式判斷對(duì)方是否存活,因此開啟該值,會(huì)降低一 些被騷擾的可能性。但由于禁止了 icmp,就無法ping到該機(jī)器了,因此網(wǎng)絡(luò)管理員也沒有辦法判斷機(jī)器是否存活了,所以可以考慮用netfilter/iptables來完成該工作會(huì) 更有所選擇針對(duì)性.icmp_echo_ignore_all 是禁止所有的icmp包,而icmp_echo_ignore_broadcasts是禁止了所有的廣播包)
icmp_ratelimit : INTEGER
默認(rèn)值是100 Jiffie
限制發(fā)向特定目標(biāo)的匹配icmp_ratemask的ICMP數(shù)據(jù)報(bào)的最大速率。0表示沒有任何限制,否則表示jiffies數(shù)據(jù)單位中允許發(fā)送的個(gè)數(shù)。 (如果在icmp_ratemask進(jìn)行相應(yīng)的設(shè)置Echo Request的標(biāo)志位掩碼設(shè)置為1,那么就可以很容易地做到ping回應(yīng)的速度限制了)
icmp_ratemask : INTEGER
在這里匹配的ICMP被icmp_ratelimit參數(shù)限制速率.
匹配的標(biāo)志位: IHGFEDCBA9876543210
默認(rèn)的掩碼值: 0000001100000011000 (6168)
關(guān)于標(biāo)志位的設(shè)置,可參考 源程序目錄/include/linux/icmp.h
0 Echo Reply
3 Destination Unreachable *
4 Source Quench *
5 Redirect
8 Echo Request
B Time Exceeded *
C Parameter Problem *
D Timestamp Request
E Timestamp Reply
F Info Request
G Info Reply
H Address Mask Request
I Address Mask Reply
* 號(hào)的被默認(rèn)限速(見上表mask)
icmp_ignore_bogus_error_responses : BOOLEAN
默認(rèn)值是0
某些路由器違背RFC1122標(biāo)準(zhǔn),其對(duì)廣播幀發(fā)送偽造的響應(yīng)來應(yīng)答。這種違背行為通常會(huì)被以告警的方式記錄在系統(tǒng)日志中。如果該選項(xiàng)設(shè)置為True,內(nèi)核不會(huì)記錄這種警告信息。(我個(gè)人而言推薦設(shè)置為1)
===========網(wǎng)絡(luò)接口界面(比如lo,eth0,eth1)參數(shù)===========
/proc/sys/net/ipv4/conf/{interface}/* :
在/proc/sys/net/ipv4/conf/ 下可以發(fā)現(xiàn)類似 all,eth0,eth1,default,lo 等網(wǎng)絡(luò)接口界面,每一個(gè)都是目錄,他們下屬的文件中,每個(gè)文件對(duì)應(yīng)該界面下某些可以設(shè)置的選項(xiàng)設(shè)置.(all/是特定的,用來修改所有接口的設(shè)置, default/ 表示缺省設(shè)置,lo/表示本地接口設(shè)置,eth0/表示第一塊網(wǎng)卡,eth1/表示第2塊網(wǎng)卡.注意:下面有的參數(shù),是需要all和該界面下同時(shí)為 ture才生效,而某些則是只需要該界面下為true即可,注意區(qū)別!!)
log_martians : BOOLEAN
記錄帶有不允許的地址的數(shù)據(jù)報(bào)到內(nèi)核日志中。all/ 或者{interface}/ 下至少有一個(gè)為True即可生效.
accept_redirects : BOOLEAN
對(duì)于主機(jī)來說默認(rèn)為True,對(duì)于用作路由器時(shí)默認(rèn)值為False
收發(fā)接收ICMP重定向消息。all/ 和{interface}/ 下兩者同時(shí)為True方可生效.
(如果不熟悉所在網(wǎng)絡(luò)的結(jié)構(gòu).推薦不修改,因?yàn)樵谟卸鄠€(gè)出口的網(wǎng)絡(luò)的時(shí)候,如果有2個(gè)出口路由器,由于作為主機(jī)的時(shí)候默認(rèn)只指認(rèn)一個(gè)網(wǎng)關(guān),出口路由可能有策略設(shè)置轉(zhuǎn)到另一個(gè)路由器上.)
forwarding : BOOLEAN
在該接口打開轉(zhuǎn)發(fā)功能 (在3塊或以上的網(wǎng)卡的時(shí)候很實(shí)用,有時(shí)候只想讓其中一外一內(nèi),另一塊做服務(wù),就可以讓這塊做服務(wù)的網(wǎng)卡不轉(zhuǎn)發(fā)數(shù)據(jù)進(jìn)出)
mc_forwarding :BOOLEAN
是否進(jìn)行多播路由。只有內(nèi)核編譯有CONFIG_MROUTE并且有路由服務(wù)程序在運(yùn)行該參數(shù)才有效。
medium_id :INTEGER
默認(rèn)值是0
通常,這個(gè)參數(shù)用來區(qū)分不同媒介.兩個(gè)網(wǎng)絡(luò)設(shè)備可以使用不同的值,使他們只有其中之一接收到廣播包.默認(rèn)值為0表示各個(gè)網(wǎng)絡(luò)介質(zhì)接受他們自己介質(zhì)上的媒 介,值-1表示該媒介未知。通常,這個(gè)參數(shù)被用來配合proxy_arp實(shí)現(xiàn)roxy_arp的特性即是允許arp報(bào)文在兩個(gè)不同的網(wǎng)絡(luò)介質(zhì)中轉(zhuǎn)發(fā).(第 一段 Integer value used to differentiate the devices by the medium they
are attached to. Two devices can have different id values when
the broadcast packets are received only on one of them.
The default value 0 means that the device is the only interface
to its medium, value of -1 means that medium is not known.沒讀懂,去cu問人,以后更正)
proxy_arp : BOOLEAN
打開arp代理功能。all/ 或者{interface}/ 下至少有一個(gè)為True即可生效
shared_media : BOOLEAN
默認(rèn)為True
發(fā)送(路由器)或接收(主機(jī)) RFC1620 共享媒體重定向。覆蓋ip_secure_redirects的值。all/ 或者{interface}/ 下至少有一個(gè)為True即可生效
secure_redirects : BOOLEAN
默認(rèn)為True
僅僅接收發(fā)給默認(rèn)網(wǎng)關(guān)列表中網(wǎng)關(guān)的ICMP重定向消息,默認(rèn)值是TRUE。all/ 或者{interface}/ 下至少有一個(gè)為True即可生效。 (這個(gè)參數(shù)一般情形請(qǐng)不要修改,可以有效地防止來自同網(wǎng)段的非網(wǎng)關(guān)機(jī)器發(fā)出惡意ICMP重定向攻擊行為)
send_redirects : BOOLEAN
默認(rèn)為True
如果是router,允許發(fā)送重定向消息.all/ 或者{interface}/ 下至少有一個(gè)為True即可生效。(根據(jù)網(wǎng)絡(luò)而定,如果是做NAT,并且網(wǎng)內(nèi)只有此一個(gè)網(wǎng)關(guān)的時(shí)候,其實(shí)是可以關(guān)閉掉它的,事實(shí)上目前而言,IP Redirects是TCP/IP協(xié)議產(chǎn)生早期為了解決網(wǎng)絡(luò)持續(xù)性而提出的一種方法,后來事實(shí)證明這種措施不太實(shí)用而且具有很大的安全風(fēng)險(xiǎn),可能引起各種 可能的網(wǎng)絡(luò)風(fēng)險(xiǎn)產(chǎn)生 - 拒絕服務(wù)攻擊,中間人攻擊,會(huì)話劫持等等,所以很多安全文檔是推薦關(guān)閉它.)
bootp_relay : BOOLEAN
默認(rèn)為False
接收源地址為0.b.c.d,目的地址不是本機(jī)的數(shù)據(jù)報(bào)。用來支持BOOTP轉(zhuǎn)發(fā)服務(wù)進(jìn)程,該進(jìn)程將捕獲并轉(zhuǎn)發(fā)該包。目前還沒有實(shí)現(xiàn)。
accept_source_route : BOOLEAN
對(duì)于主機(jī)來說默認(rèn)為False,對(duì)于用作路由器時(shí)默認(rèn)值為True
接收帶有SRR選項(xiàng)的數(shù)據(jù)報(bào)。all/ 和{interface}/ 下兩者同時(shí)為True方可生效.(IP 源路由選項(xiàng),也是TCP/IP協(xié)議早期的一個(gè)實(shí)現(xiàn)缺陷,允許IP包自身攜帶路由選擇選項(xiàng),這將允許攻擊者繞過某些安全檢驗(yàn)的網(wǎng)關(guān),或者被用來探測(cè)網(wǎng)絡(luò)環(huán) 境。在企業(yè)網(wǎng)關(guān)上強(qiáng)烈建議設(shè)置關(guān)閉或過綠丟棄IP源路由選項(xiàng)數(shù)據(jù)包。這個(gè)功能在調(diào)試網(wǎng)絡(luò)的時(shí)候很有用,但是在真正的實(shí)際應(yīng)用中,有可能造成一些麻煩和危 險(xiǎn))
rp_filter : BOOLEAN
默認(rèn)值為False
1 - 通過反向路徑回溯進(jìn)行源地址驗(yàn)證(在RFC1812中定義)。對(duì)于單穴主機(jī)和stub網(wǎng)絡(luò)路由器推薦使用該選項(xiàng)。
0 - 不通過反向路徑回溯進(jìn)行源地址驗(yàn)證。
默認(rèn)值為0,但某些發(fā)布在啟動(dòng)時(shí)自動(dòng)將其打開。 (router默認(rèn)會(huì)路由所有東西?就算該封包'顯然'不屬於我們的網(wǎng)路的。常見的例子?莫過於將私有 IP 泄漏到 internet 上去。假如某個(gè)界面?其上設(shè)定的網(wǎng)絡(luò)地址段?
195.96.96.0/24? 那么理論上不會(huì)有212.64.94.1 這樣的地址段封包會(huì)到達(dá)這個(gè)界面上。許多人都不想轉(zhuǎn)發(fā)非本網(wǎng)段的數(shù)據(jù)包?因此核心設(shè)計(jì)者也打開了方便之門。在 /proc ?面有些檔案?透過它們您可以讓核心?您做到這點(diǎn)。此方法被稱? "逆向路徑過濾(Reverse Path Filtering)"?;旧?#63;假如對(duì)此封包作出的回應(yīng)?不是循其進(jìn)入的界面送出去?那它就被置之不理。)
arp_filter : BOOLEAN
默認(rèn)值為False
1 -允許多個(gè)網(wǎng)絡(luò)介質(zhì)位于同一子網(wǎng)段內(nèi),每個(gè)網(wǎng)絡(luò)界面依據(jù)是否內(nèi)核指派路由該數(shù)據(jù)包經(jīng)過此界面來確認(rèn)是否回答ARP查詢(這個(gè)實(shí)現(xiàn)是由來源地址確定路由的時(shí)候決定的),換句話說,允許控制使用某一塊網(wǎng)卡(通常是第一塊)回應(yīng)arp詢問。(做負(fù)載均衡的時(shí)候,可以考慮用
echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
這樣的方式就可以解決,當(dāng)然 利用
echo 2 /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
兩條命令配合使用更好,因?yàn)閍rp_announce 和arp_ignore 似乎是對(duì)arp_filter的更細(xì)節(jié)控制的實(shí)現(xiàn)。)
0 -默認(rèn)值,內(nèi)核設(shè)置每個(gè)網(wǎng)絡(luò)界面各自應(yīng)答其地址上的arp詢問。這項(xiàng)看似會(huì)錯(cuò)誤的設(shè)置卻經(jīng)常能非常有效,因?yàn)樗黾恿顺晒νㄓ嵉臋C(jī)會(huì)。在Linux主機(jī) 上,每個(gè)IP地址是網(wǎng)絡(luò)界面獨(dú)立的,而非一個(gè)復(fù)合的接口。只有在一些特殊的設(shè)置的時(shí)候,比如負(fù)載均衡的時(shí)候會(huì)帶來麻煩。
all/ 或者{interface}/ 下至少有一個(gè)為True即可生效。(簡單來說,就是同一Linux上,如果有某些原因,有2塊網(wǎng)卡必須設(shè)置為同一網(wǎng)段,那么默認(rèn)情況下,會(huì)有一塊工作,而另外一塊不工作或者內(nèi)核頻繁報(bào)告錯(cuò)誤,這個(gè)時(shí)候就需要打開這個(gè)選項(xiàng)了)
arp_announce : INTEGER
默認(rèn)為0
對(duì)網(wǎng)絡(luò)接口上本地IP地址發(fā)出的ARP回應(yīng)作出相應(yīng)級(jí)別的限制:
確定不同程度的限制,宣布對(duì)來自本地源IP地址發(fā)出Arp請(qǐng)求的接口
0 - (默認(rèn)) 在任意網(wǎng)絡(luò)接口上的任何本地地址
1 -盡量避免不在該網(wǎng)絡(luò)接口子網(wǎng)段的本地地址. 當(dāng)發(fā)起ARP請(qǐng)求的源IP地址是被設(shè)置應(yīng)該經(jīng)由路由達(dá)到此網(wǎng)絡(luò)接口的時(shí)候很有用.此時(shí)會(huì)檢查來訪IP是否為所有接口上的子網(wǎng)段內(nèi)ip之一.如果改來訪IP 不屬于各個(gè)網(wǎng)絡(luò)接口上的子網(wǎng)段內(nèi),那么將采用級(jí)別2的方式來進(jìn)行處理.
2 - 對(duì)查詢目標(biāo)使用最適當(dāng)?shù)谋镜氐刂?在此模式下將忽略這個(gè)IP數(shù)據(jù)包的源地址并嘗試選擇與能與該地址通信的本地地址.首要是選擇所有的網(wǎng)絡(luò)接口的子網(wǎng)中外出 訪問子網(wǎng)中包含該目標(biāo)IP地址的本地地址. 如果沒有合適的地址被發(fā)現(xiàn),將選擇當(dāng)前的發(fā)送網(wǎng)絡(luò)接口或其他的有可能接受到該ARP回應(yīng)的網(wǎng)絡(luò)接口來進(jìn)行發(fā)送
all/ 和{interface}/ 下兩者同時(shí)比較,取較大一個(gè)值生效.
提高約束級(jí)別有益于從指定的目標(biāo)接受應(yīng)答,而降低級(jí)別可以給予更多的arp查詢者以反饋信息(關(guān)于arp代理這一段我普遍翻譯地不好,去啃一下tcp/ip bible的卷一,然后再翻譯吧)
arp_ignore : INTEGER
默認(rèn)為0
定義對(duì)目標(biāo)地址為本地IP的ARP詢問不同的應(yīng)答模式
0 - (默認(rèn)值): 回應(yīng)任何網(wǎng)絡(luò)接口上對(duì)任何本地IP地址的arp查詢請(qǐng)求(比如eth0=192.168.0.1/24,eth1=10.1.1.1/24,那么即使 eth0收到來自10.1.1.2這樣地址發(fā)起的對(duì)10.1.1.1 的arp查詢也會(huì)回應(yīng)--而原本這個(gè)請(qǐng)求該是出現(xiàn)在eth1上,也該有eth1回應(yīng)的)
1 - 只回答目標(biāo)IP地址是來訪網(wǎng)絡(luò)接口本地地址的ARP查詢請(qǐng)求(比如eth0=192.168.0.1/24,eth1=10.1.1.1/24,那么即使 eth0收到來自10.1.1.2這樣地址發(fā)起的對(duì)192.168.0.1的查詢會(huì)回答,而對(duì)10.1.1.1 的arp查詢不會(huì)回應(yīng))
2 -只回答目標(biāo)IP地址是來訪網(wǎng)絡(luò)接口本地地址的ARP查詢請(qǐng)求,且來訪IP必須在該網(wǎng)絡(luò)接口的子網(wǎng)段內(nèi)(比如eth0=192.168.0.1/24, eth1=10.1.1.1/24,eth1收到來自10.1.1.2這樣地址發(fā)起的對(duì)192.168.0.1的查詢不會(huì)回答,而對(duì) 192.168.0.2發(fā)起的對(duì)192.168.0.1的arp查詢會(huì)回應(yīng))
3 - 不回應(yīng)該網(wǎng)絡(luò)界面的arp請(qǐng)求,而只對(duì)設(shè)置的唯一和連接地址做出回應(yīng)(do not reply for local addresses configured with scope host,only resolutions for global and link addresses are replied 翻譯地似乎不好,這個(gè)我的去問問人)
4-7 - 保留未使用
8 -不回應(yīng)所有(本地地址)的arp查詢
all/ 和{interface}/ 下兩者同時(shí)比較,取較大一個(gè)值生效.
tag : INTEGER
默認(rèn)為0
相關(guān)文章
Ubuntu16.04搭建NFS 文件共享服務(wù)器的方法
這篇文章主要介紹了Ubuntu16.04搭建NFS 文件共享服務(wù)器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04LAMP服務(wù)器性能優(yōu)化技巧之Apache服務(wù)器優(yōu)化
目前LAMP (Linux + Apache + MySQL + PHP) 近幾年來發(fā)展迅速,已經(jīng)成為Web 服務(wù)器的事實(shí)標(biāo)準(zhǔn)。本文我們將介紹基于LAMP組合的服務(wù)器的性能優(yōu)化技巧2012-02-02ubuntu中編寫shell腳本開機(jī)自動(dòng)啟動(dòng)(推薦)
這篇文章主要介紹了ubuntu中編寫shell腳本開機(jī)自動(dòng)啟動(dòng),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12LNMP系列教程之 解決sendmail不能發(fā)送郵件問題
客戶需要驗(yàn)證郵件注冊(cè)用戶我發(fā)現(xiàn)郵件發(fā)送不了。一般的主機(jī)我用過,直接在dz后臺(tái)開啟就可以實(shí)現(xiàn)。查閱相關(guān)資料應(yīng)該是sendmail不能發(fā)送郵件導(dǎo)致的。那我們?nèi)绾谓鉀Q呢2012-09-09linux安裝mysql數(shù)據(jù)庫以及配置Java項(xiàng)目的圖文詳解
在本篇文章里小編給大家整理的是關(guān)于linux安裝mysql配置Java的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。2019-11-11