<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    歡迎光臨郝學武的blog。

    2013年12月17日

    因為TCP端口號是16位無符號整數, 最大65535, 所以一臺服務器最多支持65536個TCP socket連接.” – 一個非常經典的誤解! 即使是有多年網絡編程經驗的人, 也會持有這個錯誤結論.

    要戳破這個錯誤結論, 可以從理論和實踐兩方面來.

    理論

    系統通過一個四元組來唯一標識一條TCP連接. 這個四元組的結構是{local ip, local port, remote ip, remote port}, 對于IPv4, 系統理論上最多可以管理2^(32+16+32+16), 2的96次方個連接. 如果不僅僅考慮TCP, 則是一個五元組, 加上協議號(TCP, UDP或者其它).

    實踐

    服務器綁定一個ip:port, 然后accept連接, 所有accept的連接使用的本地地址也是同樣的ip:port.

    擴展內容

    如果某個客戶端向同一個TCP端點(ip:port)發起主動連接, 那么每一條連接都必須使用不同的本地TCP端點, 如果客戶端只有一個IP則是使用不同的本地端口, 該端口的范圍在*nix系統上的一個例子是32768到61000, 可以通過如下命令查看:

    [root@benegg.com ~]# cat /proc/sys/net/ipv4/ip_local_port_range 32768   61000 

    也就是說, 一個客戶端連接同一個服務器(比如進行壓力測試), 最多可以發起30000個左右的連接.

    TCP客戶端(TCP的主動發起者)可以在同一ip:port上向不同的服務器發起主動連接, 只需在bind之前對socket設置SO_REUSEADDR選項.

    系統支持的最大打開文件描述符數(包括socket連接):

    [root@benegg.com ~]# cat /proc/sys/fs/file-max 580382 

    單個進程所能打開的最大文件描述符數:

    [root@benegg.com ~]# ulimit -n 1024 

    結論

    無論是對于服務器還是客戶端, 認為”一臺機器最多建立65536個TCP連接”是沒有根據的, 理論上遠遠超過這個值.

    posted @ 2013-12-17 14:10 陜西BOY 閱讀(385) | 評論 (0)編輯 收藏


    2011年11月11日

    一、http_load

    程序非常小,解壓后也不到100K

    http_load以并行復用的方式運行,用以測試web服務器的吞吐量與負載。但是它不同于大多數壓力測試工

    具,它可以以一個單一的進程運行,一般不會把客戶機搞死。還可以測試HTTPS類的網站請求。

    下載地址:http://soft.vpser.net/test/http_load/http_load-12mar2006.tar.gz
    安裝很簡單
    #tar zxvf http_load-12mar2006.tar.gz
    #cd http_load-12mar2006
    #make && make install

    命令格式:http_load  -p 并發訪問進程數  -s 訪問時間  需要訪問的URL文件

    參數其實可以自由組合,參數之間的選擇并沒有什么限制。比如你寫成http_load -parallel 5 -seconds

    300 urls.txt也是可以的。我們把參數給大家簡單說明一下。
    -parallel 簡寫-p :含義是并發的用戶進程數。
    -fetches 簡寫-f :含義是總計的訪問次數
    -rate    簡寫-p :含義是每秒的訪問頻率
    -seconds簡寫-s :含義是總計的訪問時間

    準備URL文件:urllist.txt,文件格式是每行一個URL,URL最好超過50-100個測試效果比較好.文件格式

    如下:
    http://www.vpser.net/uncategorized/choose-vps.html
    http://www.vpser.net/vps-cp/hypervm-tutorial.html
    http://www.vpser.net/coupons/diavps-april-coupons.html
    http://www.vpser.net/security/vps-backup-web-mysql.html
    例如:

    http_load -p 30 -s 60  urllist.txt
    參數了解了,我們來看運行一條命令來看看它的返回結果
    命令:% ./http_load -rate 5 -seconds 10 urls說明執行了一個持續時間10秒的測試,每秒的頻率為5。

    49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds5916 mean bytes/connection4.89274

    fetches/sec, 28945.5 bytes/secmsecs/connect: 28.8932 mean, 44.243 max, 24.488 minmsecs/first

    -response: 63.5362 mean, 81.624 max, 57.803 minHTTP response codes: code 200 — 49 

    結果分析:
    1.49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
    說明在上面的測試中運行了49個請求,最大的并發進程數是2,總計傳輸的數據是289884bytes,運行的時間是10.0148秒
    2.5916 mean bytes/connection說明每一連接平均傳輸的數據量289884/49=5916
    3.4.89274 fetches/sec, 28945.5 bytes/sec
    說明每秒的響應請求為4.89274,每秒傳遞的數據為28945.5 bytes/sec
    4.msecs/connect: 28.8932 mean, 44.243 max, 24.488 min說明每連接的平均響應時間是28.8932 msecs

    ,最大的響應時間44.243 msecs,最小的響應時間24.488 msecs
    5.msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min
    6、HTTP response codes: code 200 — 49     說明打開響應頁面的類型,如果403的類型過多,那可能

    要注意是否系統遇到了瓶頸。
    特殊說明:
    測試結果中主要的指標是 fetches/sec、msecs/connect 這個選項,即服務器每秒能夠響應的查詢次數,

    用這個指標來衡量性能。似乎比 apache的ab準確率要高一些,也更有說服力一些。
    Qpt-每秒響應用戶數和response time,每連接響應用戶時間。
    測試的結果主要也是看這兩個值。當然僅有這兩個指標并不能完成對性能的分析,我們還需要對服務器的

    cpu、men進行分析,才能得出結論

     

    二、webbench

    webbench是Linux下的一個網站壓力測試工具,最多可以模擬3萬個并發連接去測試網站的負載能力。下載地址可以到google搜,我這里給出一個
    下載地址:http://soft.vpser.net/test/webbench/webbench-1.5.tar.gz
    這個程序更小,解壓后不到50K,呵呵
    安裝非常簡單
    #tar zxvf webbench-1.5.tar.gz
    #cd webbench-1.5
    #make && make install
    會在當前目錄生成webbench可執行文件,直接可以使用了

    用法:

    webbench -c 并發數 -t 運行測試時間 URL
    如:
    webbench -c 5000 -t 120 http://www.vpser.net

    三、ab
    ab是apache自帶的一款功能強大的測試工具
    安裝了apache一般就自帶了,
    用法可以查看它的說明

    $ ./ab
    ./ab: wrong number of arguments
    Usage: ./ab [options] [http://]hostname[:port]/path
    Options are:
    -n requests Number of requests to perform
    -c concurrency Number of multiple requests to make
    -t timelimit Seconds to max. wait for responses
    -p postfile File containing data to POST
    -T content-type Content-type header for POSTing
    -v verbosity How much troubleshooting info to print
    -w Print out results in HTML tables
    -i Use HEAD instead of GET
    -x attributes String to insert as table attributes
    -y attributes String to insert as tr attributes
    -z attributes String to insert as td or th attributes
    -C attribute Add cookie, eg. ‘Apache=1234. (repeatable)
    -H attribute Add Arbitrary header line, eg. ‘Accept-Encoding: gzip’
    Inserted after all normal header lines. (repeatable)
    -A attribute Add Basic WWW Authentication, the attributes
    are a colon separated username and password.
    -P attribute Add Basic Proxy Authentication, the attributes
    are a colon separated username and password.
    -X proxy:port Proxyserver and port number to use
    -V Print version number and exit
    -k Use HTTP KeepAlive feature
    -d Do not show percentiles served table.
    -S Do not show confidence estimators and warnings.
    -g filename Output collected data to gnuplot format file.
    -e filename Output CSV file with percentages served
    -h Display usage information (this message)
    參數眾多,一般我們用到的是-n 和-c
    例如:
    ./ab -c 1000 -n 100 http://www.vpser.net/index.php

    這個表示同時處理1000個請求并運行100次index.php文件.
    四、Siege
    一款開源的壓力測試工具,可以根據配置對一個WEB站點進行多用戶的并發訪問,記錄每個用戶所有請求過程的相應時間,并在一定數量的并發訪問下重復進行。
    官方:http://www.joedog.org/
    Siege下載:http://soft.vpser.net/test/siege/siege-2.67.tar.gz
    解壓:
    # tar -zxf siege-2.67.tar.gz
    進入解壓目錄:
    # cd siege-2.67/
    安裝:
    #./configure ; make
    #make install

    使用
    siege -c 200 -r 10 -f example.url
    -c是并發量,-r是重復次數。 url文件就是一個文本,每行都是一個url,它會從里面隨機訪問的。

    example.url內容:

    http://www.licess.cn
    http://www.vpser.net
    http://soft.vpser.net

    結果說明
    Lifting the server siege… done.
    Transactions: 3419263 hits //完成419263次處理
    Availability: 100.00 % //100.00 % 成功率
    Elapsed time: 5999.69 secs //總共用時
    Data transferred: 84273.91 MB //共數據傳輸84273.91 MB
    Response time: 0.37 secs //相應用時1.65秒:顯示網絡連接的速度
    Transaction rate: 569.91 trans/sec //均每秒完成 569.91 次處理:表示服務器后
    Throughput: 14.05 MB/sec //平均每秒傳送數據
    Concurrency: 213.42 //實際最高并發數
    Successful transactions: 2564081 //成功處理次數
    Failed transactions: 11 //失敗處理次數
    Longest transaction: 29.04 //每次傳輸所花最長時間
    Shortest transaction: 0.00 //每次傳輸所花最短時間

    posted @ 2011-11-11 15:33 陜西BOY 閱讀(647) | 評論 (0)編輯 收藏


    2011年5月16日

         摘要: spring事務管理
      閱讀全文

    posted @ 2011-05-16 11:01 陜西BOY 閱讀(2041) | 評論 (3)編輯 收藏


    2008年12月8日

         摘要: hibernate主鍵常用方式  閱讀全文

    posted @ 2008-12-08 23:26 陜西BOY 閱讀(1719) | 評論 (1)編輯 收藏


    2008年9月19日

         摘要: hibernate的hibernate.hbm2ddl.auto屬性  閱讀全文

    posted @ 2008-09-19 18:10 陜西BOY 閱讀(8034) | 評論 (2)編輯 收藏


    2008年8月8日

         摘要: 1:connect as 選擇sysdba
    2:輸入管理員的密碼 默認一般為change_on_install
    3:新建一個command windows
    執行 alter user 用戶名 identified by xx   閱讀全文

    posted @ 2008-08-08 12:20 陜西BOY 閱讀(4562) | 評論 (0)編輯 收藏


    2008年6月30日

         摘要: 可能大家也都習慣了spring和hibernate對CLOB字段的處理,在spring中配置oracle處理句柄,在hibernate中配置映射類型,然后就可以很輕松的以String 的形式處理大字段。
    今天我做了個需求,需要以jdbc的方式從mysql導一些備份數據到oracle正式庫,就查了一些資料,最后寫了個例子  閱讀全文

    posted @ 2008-06-30 17:15 陜西BOY 閱讀(3893) | 評論 (1)編輯 收藏


    2008年6月20日

         摘要: 今天上午做項目時候因為要用到ajax異步提交數據,這里我用的是prototype.js里包的ajax對象,大家也可以自己實現XMLHttpRequest對象,vm頁面用的是gbk編碼(如果是utf-8就不會有問題了),這個url帶有兩個參數,一個是id,一個是漢字內容,浪費了不少時間!  閱讀全文

    posted @ 2008-06-20 16:43 陜西BOY 閱讀(4361) | 評論 (0)編輯 收藏


    2008年6月2日

         摘要: 前段時間做項目用到了json,今天我抽時間寫了一個struts+ajax+json的例子.
    個人感覺ajax+json在很大程度上降低了網絡和服務器的IO,是一個很不錯的組合!
    1:json的lib我用的是json-lib-2.1-jdk15.jar,它可以在
    2:struts用的是1.2
    3:用到了js第三方prototype.js,主要用它包裝的ajax對象,大家也沒必要用這個,可以直接在js里用XMLHttpRequest。  閱讀全文

    posted @ 2008-06-02 13:11 陜西BOY 閱讀(14778) | 評論 (9)編輯 收藏


    2008年5月15日

         摘要: 以前寫連接池的時候就用過Properties,就知道怎么用,但是不是很明白它都做什么用!今天偶的空閑,在網上轉了轉,收益不小,讓我對它有了進一步的認識。熟悉的就不用看了。
    如果不熟悉 java.util.Properties 類,那么現在告訴您它是用來在一個文件中存儲鍵-值對的,其中鍵和值是用等號分隔的。(如清單 1 所示)。最近更新的 java.util.Properties 類現在提供了一種為程序裝載和存儲設置的更容易的方法: loadFromXML(InputStream is) 和 storeToXML(OutputStream os, String comment) 方法。
      閱讀全文

    posted @ 2008-05-15 17:41 陜西BOY 閱讀(2891) | 評論 (5)編輯 收藏


    僅列出標題  下一頁

    posts - 17, comments - 65, trackbacks - 0, articles - 28

    Copyright © 陜西BOY

    主站蜘蛛池模板: 国产精品视频免费| 久久综合久久综合亚洲| 国产又黄又爽又猛的免费视频播放| 两个人看的www高清免费观看| 亚洲爆乳AAA无码专区| 亚洲成av人片在线看片| 国产亚洲美女精品久久久久狼| 免费jjzz在在线播放国产| 最近免费中文字幕大全| 最近最好最新2019中文字幕免费| 久草免费福利在线| 色吊丝免费观看网站| 在线观看亚洲AV日韩AV| 亚洲色偷偷偷网站色偷一区| 日韩亚洲欧洲在线com91tv| 亚洲Aⅴ无码一区二区二三区软件| 在线看片人成视频免费无遮挡| 97青青草原国产免费观看| a级片免费在线观看| 本道天堂成在人线av无码免费| 国产亚洲精品第一综合| 亚洲AV电影天堂男人的天堂| 亚洲熟伦熟女专区hd高清| 亚洲免费观看网站| 亚洲免费闲人蜜桃| 国产成人亚洲合集青青草原精品| 亚洲精品无码久久久久久久| 亚洲综合网美国十次| 亚洲视频小说图片| 亚洲欧洲日韩在线电影| 亚洲成人福利在线| 久久精品国产亚洲αv忘忧草| 亚洲免费黄色网址| 国产精品亚洲精品| 中文字幕亚洲精品无码| 国产亚洲福利在线视频| 亚洲色偷偷综合亚洲AV伊人蜜桃| 亚洲成av人片在线天堂无| 无码天堂va亚洲va在线va| 国产亚洲男人的天堂在线观看 | 成人嫩草影院免费观看|