麻豆精品无码av,欧美1区2区,久久中文字幕乱码人妻,亚洲欧美另类少妇精品,在线看黄射,69pao高清,九九九久久久国产精品,子操大逼1234区,九九爱99热精品

7
點(diǎn)贊
3
評(píng)論
0
轉(zhuǎn)載
收藏

Linux中部署服務(wù)器Tinyhttpd并用Webbench測(cè)試抗壓性能

【背景知識(shí)】

     webbench是由Lionbridge公司開發(fā)的知名的網(wǎng)站壓力測(cè)試工具。它能測(cè)試處在相同硬件上,不同服務(wù)的性能以及不同硬件上同一個(gè)服務(wù)的運(yùn)行狀況。webbench的標(biāo)準(zhǔn)測(cè)試可以向我們展示服務(wù)器的兩項(xiàng)內(nèi)容:每秒鐘相應(yīng)請(qǐng)求數(shù)和每秒鐘傳輸數(shù)據(jù)量。webbench不但能具有便準(zhǔn)靜態(tài)頁面的測(cè)試能力,還能對(duì)動(dòng)態(tài)頁面(ASP,PHP,JAVA,CGI)進(jìn) 行測(cè)試的能力。還有就是他支持對(duì)含有SSL的安全網(wǎng)站例如電子商務(wù)網(wǎng)站進(jìn)行靜態(tài)或動(dòng)態(tài)的性能測(cè)試。Webbench最多可以模擬3萬個(gè)并發(fā)連接去測(cè)試網(wǎng)站的負(fù)載能力。

     Tinyhttpd是超輕量型的http server。這里我將嘗試部署一個(gè)服務(wù)器,并用Webbecn測(cè)試其性能。

 

【任務(wù)說明】

     打開網(wǎng)頁http://blog.jobbole.com/79023/,看到第一和第二個(gè)項(xiàng)目(Webbecn和Tinyhttpd),需要做的是:

    (1)在自己的VMware虛擬機(jī)里centos中,下載Tinyhttpd源碼,編譯并安裝這個(gè)超輕量型的http server;

    (2) 然后編譯安裝Webbench,去測(cè)試Tinyhttpd的性能;

    (3)記錄過程,并匯報(bào)遇到的問題和解決問題的方法,還有測(cè)試結(jié)果。

 

【操作流程】

    首先需要配好環(huán)境。我用的是VMwareWorkstation8.0和CentOS-6.5-x86_64。方便起見,虛擬機(jī)需要共享windows真機(jī)資源。

下面正式進(jìn)入編譯安裝過程:

1:將本機(jī)中的Tinyhttpd源碼拷到本地 /usr/local/src并解壓。 tinyhttpd-0.1.0.tar.gz解壓之后,發(fā)現(xiàn)tinyhttpd-0.1.0文件夾中有makefile文件,沒有./configure文件,說明可以直接make編譯。編譯之前需要參照 httpd.c中注釋行的要求對(duì)httpd.c和makefile文件進(jìn)行修改。編譯之后生成了可執(zhí)行文件httpd。Httpd是可執(zhí)行文件,不用再安裝了,直接在/usr/local/src/tinyhttpd-0.1.0下執(zhí)行./httpd 就運(yùn)行起了一個(gè)websever。在瀏覽器中輸入虛擬機(jī)IP即可進(jìn)入web頁面。

圖1:服務(wù)器部署成功

2: 接下來編譯安裝Webbench。首先將webbench-1.5.tar.gz拷貝到/usr/local/src下并解壓。直接make編譯,此時(shí)如果報(bào)錯(cuò)“/bin/sh: ctags: command not found”則需要安裝ctags,用語句” yum –y install ctags”。編譯完成生成Webbench文件,安裝“make install” ,如果報(bào)錯(cuò)“cannot create regular file `/usr/local/man/man1′: No such file ordirectory”,則需創(chuàng)建“/usr/local/man/man1”文件。Make install安裝成功則:

圖2:webbench安裝成功

    3:現(xiàn)在開始用用Webbench測(cè)試Tinyhttpd的性能。

       webbench -c 500 -t 30 http://192.168.195.128:80/。(這個(gè)過程中可能出現(xiàn)很多問題,詳情見【問題解答】)

 

【問題解答】

    1:使用 “yum grouplist” 指令查看已安裝組時(shí)報(bào)告如下錯(cuò)誤 “Error: Cannot find a valid baseurl for repo: base”。

       解決辦法:echo "nameserver 8.8.8.8">>/etc/resolv.conf。

    

    2:Ping 一個(gè)網(wǎng)址時(shí)報(bào)錯(cuò)“connect: network is unreachable”。

       解決辦法:在/etc/sysconfig/ifcfg-eth0中寫入如下語句(根據(jù)實(shí)際情況修改HWADDR,IPADDR):

       DEVICE=eth0
       HWADDR=00:0C:29:A7:5C:4E
       ONBOOT=yes
       TYPE=Ethernet
       NETMASK=255.255.255.0
       IPADDR=192.168.195.128
       USERCTL=no
       IPV6INIT=no
       PEERDNS=yes

       運(yùn)行語句:sudo dhclient

 

    3:查看本機(jī)物理地址時(shí)報(bào)錯(cuò)“bash: ipconfig: command not found”

      (低級(jí)錯(cuò)誤)linux中用ifconfig,windows中用ipconfig。


    4: 解壓后的Tinyhttpd里沒有configure文件,是不是就說明不用再編譯了?可是直接make && make install又報(bào)錯(cuò)

        ”/usr/bin/ld: cannot find –lsocket”
        解決辦法:一開始以為是缺少lib包等,就yum update再yum install libpcap*,但/lib下還是沒有沒有                           libsocket.a,libsocket.so,沒能解決問題。后來發(fā)現(xiàn)httpd.c文件中的注釋行說明的操作:* To compile for Linux:
        *  1) Comment out the #include line.
        *  2) Comment out the line that defines the variable newthread.
        *  3) Comment out the two lines that run pthread_create().
        *  4) Uncomment the line that runs accept_request().
        *  5) Remove -lsocket from the Makefile. 
        照做之后,直接make就通過并生成了可執(zhí)行文件httpd。


     5: 由于未知原因,可能是手動(dòng)修改了一些網(wǎng)絡(luò)配置,虛擬機(jī)ping不通本機(jī)也連不上外網(wǎng)。
        解決方法:經(jīng)過一番折騰無果,最后采取 “編輯—>虛擬網(wǎng)絡(luò)編輯器—>恢復(fù)默認(rèn)設(shè)置”。所以不得不承認(rèn),有時(shí)候簡單粗暴比慢條斯理來得立竿見影。


     6:在用webbench對(duì)tinyhttpd進(jìn)行測(cè)試時(shí)發(fā)現(xiàn)不是連不上就是卡死。

        解決辦法:還沒找到解決辦法。
        一開始猜想原因應(yīng)該是webbench和tinyhttpd在同一臺(tái)機(jī)子上運(yùn)行,會(huì)相互制約;或者是tinyhttpd太tiny,經(jīng)不起webbench一測(cè)。于是用webbench測(cè)試了linux系統(tǒng)自帶的httpd,沒有問題。所以應(yīng)該是tinyhttpd的問題。

圖3:webbench測(cè)試系統(tǒng)自帶httpd結(jié)果

        具體原因有待進(jìn)一步探究。敬請(qǐng)期待下一篇?jiǎng)討B(tài)!

        【原因補(bǔ)充】

        通過gdb調(diào)試在tinyhttpd的源碼,最終將問題定位在httpd.c文件中第452行send(client,buf,strlen(buf),0)。

        因?yàn)閣ebbench在一次訪問完之后就斷掉了,但是tinyhttp要分12次把一個(gè)網(wǎng)頁的內(nèi)容發(fā)送給webbench,所以第一次發(fā)的時(shí)候是成功的,第二次就失敗了。而且,由于tinyhttpd太簡單了,所以send的時(shí)候沒有異常判斷和處理,所以程序就死在那兒了。

        如何判斷并處理異常,還需進(jìn)一步研究學(xué)習(xí)服務(wù)器測(cè)試訪問過程。這里為簡單起見,僅通過將后面的11次內(nèi)容發(fā)送注釋掉了,然后就得到了正常的測(cè)試結(jié)果,如下圖所示:


聲明:本內(nèi)容系學(xué)者網(wǎng)用戶個(gè)人學(xué)術(shù)動(dòng)態(tài)分享,不代表平臺(tái)立場。

評(píng)論 3

渠曉明 2017-11-08 10:34
以前我準(zhǔn)備秋招的時(shí)候也發(fā)現(xiàn)這個(gè)問題,路過就回答一下吧! 這是因?yàn)閣ebbench向tinnyhttpd發(fā)送了rst,這樣當(dāng)tinnyhttpd的進(jìn)程向該連接寫數(shù)據(jù)的時(shí)候,內(nèi)核會(huì)向該進(jìn)程發(fā)送sigpipe信號(hào),對(duì)該信號(hào)的默認(rèn)處理就是終止當(dāng)前進(jìn)程。 解決辦法就是忽略這個(gè)信號(hào),當(dāng)write寫入的時(shí)候,如果返回-1,并且errno被設(shè)定為EPIPE,就說明收到了rst。
李丁丁 2014-11-12 16:30
好詳實(shí)啊。
陳凌瀟 回復(fù) 李丁丁 2014-11-12 18:09
丁丁老師指導(dǎo)有方,還要多謝劉冰師弟的幫忙~
中國工商銀行軟件開發(fā)中心
SCHOLAT.com 學(xué)者網(wǎng)
免責(zé)聲明 | 關(guān)于我們 | 聯(lián)系我們
聯(lián)系我們:
返回頂部
宝丰县| 资溪县| 扬州市| 宝丰县| 松阳县| 千阳县| 平江县| 从化市| 虞城县| 静乐县| 麻阳| 旺苍县| 青田县| 桐乡市| 罗定市| 霍山县| 顺平县| 江川县| 海盐县| 江口县| 浦城县| 河西区| 蓬溪县| 嘉义市| 凤凰县| 定襄县| 洪湖市| 广平县| 万盛区| 宁武县| 宁海县| 宝鸡市| 汉沽区| 东宁县| 阿坝县| 游戏| 社旗县| 水富县| 尼勒克县| 江都市| 江西省|