亚洲日本VA中文字幕久久,亚洲精品无码久久久久久久,久久久精品中文字幕麻豆发布,国产美女自慰在线观看

登錄 注冊(cè)
您的位置:首頁(yè)> 建站知識(shí) > 事件營(yíng)銷
網(wǎng)站建設(shè)手機(jī):增加Squid進(jìn)程的FD限額
標(biāo)簽:事件營(yíng)銷
發(fā)表日期:2018-11-05 06:44:27     文章編輯:admin     瀏覽次數(shù):219

網(wǎng)站建設(shè)手機(jī):增加Squid進(jìn)程的FD限額

 

這里可見ngx_http_parse_header_line函數(shù)中的內(nèi)部變量p保存了請(qǐng)求體的部分內(nèi)容。

如果使用$$locals$,可以看到每次輸出(實(shí)際就是ngx_http_parse—headerline讀取請(qǐng)求體

的過(guò)程)p的內(nèi)存地址自增一次,然后在某一時(shí)刻突然中斷。我們計(jì)算自增數(shù),就知道是

在請(qǐng)求體的第幾個(gè)字節(jié)處發(fā)生問(wèn)題了。

    最后在這個(gè)出問(wèn)題的請(qǐng)求的對(duì)應(yīng)字節(jié)處發(fā)現(xiàn)了一個(gè)\0,引發(fā)了舊版本Nginx

NGX_HTTP_PARSE_INVALID_HEADER判斷。

    1.3.8.3.5  增加Squid進(jìn)程的FD限額

    Squid在啟動(dòng)的時(shí)候,會(huì)根據(jù)當(dāng)前shellulimit限制來(lái)設(shè)置自己的rlimit,默認(rèn)情況

就是只能打開1024個(gè)FD。這在大流量的情況下顯然是不夠的。而Squid又不像Nginx

樣提供了配置參數(shù),只能在啟動(dòng)前修改好當(dāng)前登錄shellulimit-這種操作顯然是很容

易被遺忘的。因此我們應(yīng)該通過(guò)自動(dòng)化手段避免它。

    但是無(wú)法避免的是已經(jīng)啟動(dòng)的進(jìn)程,這時(shí)候我們也可以想辦法來(lái)修改。這里涉及較多

 

的源碼流程,就不詳細(xì)闡述了,只直接給出結(jié)果。

(1)squid啟動(dòng)時(shí),會(huì)將當(dāng)前限額記錄在Squid_MaxFD變量中;

1  服務(wù)器監(jiān)測(cè)

(2)當(dāng)FD不足時(shí),會(huì)調(diào)用內(nèi)核的socket來(lái)創(chuàng)建,這里socket需要檢查當(dāng)前的限額;

(3)不限額的話成功創(chuàng)建socket返回給squid;

    (4) squid更新自己的另一個(gè)變量Biggest_FD,但在更新時(shí)會(huì)判斷這個(gè)最新的fd是否

小于Squid_MaxFD;

    (5)如果大于Squid_MaxFD了,依然報(bào)錯(cuò)。

    所以我們需要從兩方面入手,一方面修改已經(jīng)運(yùn)行的squid在調(diào)用socket時(shí)檢測(cè)的系

統(tǒng)rlimit;另一方面修改Squid_MaxFD變量。

    關(guān)于系統(tǒng)的部分,跟蹤socket流程最后找到expand_files()函數(shù),其中關(guān)于FD限額的

判斷流程如下。

( 1)  if (nr >= current->signal->rlim[RLIMIT_NOFILE].rlim_cur)

( 2)  if (nr < fdt->max_fds)

( 3 )  if (nr >= sysctl_nr_open)

以上都通過(guò)了才進(jìn)入真正的expand_fdtable()。所以我們?cè)谶@個(gè)函數(shù)里修改rlim cur

rlim maxstp腳本如下。

%{

#include <linux/sched.h>

#include <linux/resource.h>

%}

probe kernel.function("expand_files@fs/file.c") .call  {.   '

     if  (  execname ()  -= "squid"  )  {

     if ( rlim_cur() < 65535 ) {

               printf("Change statusi  %d\n",  set rlim(65535 ;

function rlim _cur:long  ()

%{

  struct signal_struct *ss = kread( &<current->signal; ;

     THS->   retvalue = kread  (& (ss->rlim[RLIMIT NOFILE] .rlim cur ;

 

留言預(yù)約
關(guān)于我們
易神州網(wǎng)絡(luò)-專業(yè)的軟件開發(fā)和品牌營(yíng)銷公司,提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)與數(shù)字營(yíng)銷產(chǎn)品解決方案專家,14年豐富的軟件開發(fā)、品牌策劃營(yíng)銷。擅長(zhǎng)于系統(tǒng)化解決企業(yè)品牌在互聯(lián)網(wǎng)上的統(tǒng)一性傳播,企業(yè)品牌在互聯(lián)網(wǎng)上的應(yīng)用。我們協(xié)助您通過(guò)在線品牌的塑造,建立長(zhǎng)久的企業(yè)品牌價(jià)值。
聯(lián)系我們
400-611-0508
周一至周六9:00-18:00
全方位的營(yíng)銷咨詢   精準(zhǔn)的解決方案
地址:北京市豐臺(tái)科技園漢威國(guó)際四區(qū)8號(hào)樓7層
關(guān)注公眾號(hào)