日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

socks5 运行几个小时后 端口10808不通了,ss5服务正常

發布時間:2024/9/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 socks5 运行几个小时后 端口10808不通了,ss5服务正常 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SS5壓力測試

網絡監控方法


dstat命令,所代表的receive/send,貌似receive是接收的字節數,*8是帶寬,而send并不是機器對外網發送的字節數,故不用它判斷收發流量;

iftop命令,在實驗場景下(每秒大約4個baidu首頁請求,接收流量大約138KB*4),顯示的發送和接收的流量,和程序計算的每秒發送接收流量基本一致,故采用這個命令,判斷網絡流量。


SS5日志


1、STARTED和TERMINATED是配對出現的,代表一次連接的開始和結束

[08/Apr/2015:19:46:57 CST] [1035835136] 10.10.96.106 "" "CONNECT" STARTED 0 0 0 (10.10.96.106:55389 -> 220.181.112.244:80)

[08/Apr/2015:19:48:03 CST] [1035835136] 10.10.96.106 "" "CONNECT" TERMINATED 23189 352 66 (10.10.96.106:55389 -> 220.181.112.244:80)


2、不是每一次代理請求都會被記錄下來

當我們訪問公網時,由于一次Socket請求(Client:IP+Port和Server:IP+Port)會延續較長時間,所以基本不會在1秒內被復用,所以基本都能記錄日志;

當我們測試訪問一個內網URL時,1秒內完成幾百次成功的Socket請求,很多被復用,對于1秒內“Client:IP+Port和Server:IP+Port”相同的Socket,SS5認為是一個,只有1行日志;

這樣,可以解釋,訪問內網URL時,幾千個成功的請求,只有幾百行日志的場景。


以上兩種日志場景,我們都認為是正常的。

3、Socks method unknown or bad request

telnet 1080端口,輸入字符;或者F5心跳檢測1080端口,都會導致這個日志不斷報出。這個應該通過更好的配置過濾掉。


性能指標


大并發情況下,Socket連接沒有正常及時釋放,或者到達臨界值,如下錯誤報出。


日志會報如下錯誤(刷屏):

[08/Apr/2015:16:06:23 CST] [0] [ERRO] $S5ServerAccept$: (Too many open files).

[08/Apr/2015:16:06:23 CST] [1916823296] [ERRO] $S5GetClientInfo$: (Bad file descriptor).


程序會報如下錯誤:

java.net.SocketException: SOCKS server general failure
? ? ? ? at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:526)
? ? ? ? at java.net.Socket.connect(Socket.java:529)
? ? ? ? at sun.net.NetworkClient.doConnect(NetworkClient.java:158)
? ? ? ? at sun.net.www.http.HttpClient.openServer(HttpClient.java:411)
? ? ? ? at sun.net.www.http.HttpClient.openServer(HttpClient.java:525)
? ? ? ? at sun.net.www.http.HttpClient.<init>(HttpClient.java:208)
? ? ? ? at sun.net.www.http.HttpClient.New(HttpClient.java:291)
? ? ? ? at sun.net.www.http.HttpClient.New(HttpClient.java:310)
? ? ? ? at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:987)
? ? ? ? at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:966)
? ? ? ? at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:841)
? ? ? ? at cl.an.HttpConn.run(HttpSocketPressTest.java:188)
? ? ? ? at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
? ? ? ? at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
? ? ? ? at java.util.concurrent.FutureTask.run(FutureTask.java:138)
? ? ? ? at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
? ? ? ? at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
? ? ? ? at java.lang.Thread.run(Thread.java:662)


性能測試結果



Socket連接數-正常臨界值(約值)Socket連接數-異常臨界值(約值)到達異常臨界值后
openfiles -1024450550報上面的Bug,只保留200個線程,35秒后恢復正常
openfiles -409620002100-2500第一種情況:
ss5異常停止,不能恢復:service ss5 status,可以看到:
ss5 已死,但是 subsys 被鎖;有時還會報:*** glibc detected *** /usr/sbin/ss5: free(): invalid pointer: 0x00007f693c0207e0 ***
第二種情況:
報上面的Too many open files,只保留200個線程,10秒后恢復;
openfiles -65536結果和openfiles -4096類似


根據我們的測試結果,可以認為虛擬機10.100.140.85(4個CPU、6G內存),最大支持2000并發。

官網的性能指標是:IBM X360,支持2500并發數。

查看Socket連接數命令:netstat -napo | grep 1080 | wc -l

查看修改最大同時打開文件數命令:vim /etc/security/limits.conf ,需要新開一個終端,ulimit -n,確認生效了,service ss5 restart,才會在ss5中生生效。

關于這個值,很多公司這樣設置:


[plain]?view plain?copy

  • *????????????????soft????nofile??????????1000000??

  • *????????????????hard????nofile??????????1000000??

  • *????????????????soft????core????????????1048576??

  • *????????????????hard????core????????????1048576??




  • 參考網址:

    http://www.codesky.net/article/201105/161796.html

    http://www.justwinit.cn/post/6482/

    http://blog.csdn.net/leili0806/article/details/7534985


    壓測結果


    訪問www.baidu.com(頁面大小:135KB)


    1、囿于帶寬限制(實測、搶公網帶寬,只能搶到1.5M-2M左右),所以,平均每秒,只可能有10-20個成功的Http請求返回。

    2、會報java.net.SocketTimeoutException: Read timed out:這是因為網絡帶寬原因,Timeout時間內沒有從流中讀取完成數據所致的。這是正常的,網絡原因,用不用Socket5代理都有這個問題。

    3、會報java.net.ConnectException: Connection timed out: connect:也是網絡原因,Timeout時間內,沒有連接遠程服務器成功。這是正常的,網絡原因,用不用Socket5代理都有這個問題。

    4、會報java.net.SocketException: Connection reset:懷疑是遠程服務器的原因。

    5、測試截圖如下:

    iftop:


    dstat:


    6、測試過程中,watch -n1 -d 'netstat -an | grep 1080',完全正常,SS5服務本身沒有任何壓力。

    7、測試結果:

    a、3個機器各開100個并發,成功率分別是:85%、65%、67%,失敗的原因基本是Read timee out,即30秒不能完全從網絡輸入流中讀取完成所有返回數據。

    b、1個機器100個并發,成功率大約是98%。


    訪問內容URL


    可以跑帶寬大約50-60M,平均每秒250個成功返回,成功率100%,截圖如下:

    iftop:


    dstat:


    結論

    SS5服務本身能承受巨大壓力,調優ulimit -n后,大約支撐2000并發。

    • SS5服務,帶寬足夠,請求的文件越小,網絡越好,就能支持更多的成功返回。


    轉載于:https://blog.51cto.com/2333657/2062217

    總結

    以上是生活随笔為你收集整理的socks5 运行几个小时后 端口10808不通了,ss5服务正常的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。