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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

服务器出问题排查

發布時間:2025/7/14 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务器出问题排查 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

1.查看TCP連接情況?

如果服務器資源加載很慢,同事請求出現502錯誤, 則表示服務器可能已經過載(連接超時,我們向服務器發送請求, 由于服務器當前鏈接太多,導致服務器方面無法給于正常的響應,產生此類報錯)。

首先可以用TOP命令查看資源消耗情況。如果資源消耗正常,可以使用netstat命令檢查應用服務器端口的并發連接數:

統計指定應用服務器端口連接數 命令:netstat?-an?|grep?'ESTABLISHED'?|grep?'8080'?|wc?-l

統計 TCP連接數 命令:netstat?-ant |grep?'ESTABLISHED'?|wc?-l

統計各個狀態的連接數: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

CLOSED:無連接是活動的或正在進行 LISTEN:服務器在等待進入呼叫 SYN_RECV:一個連接請求已經到達,等待確認 SYN_SENT:應用已經開始,打開一個連接 ESTABLISHED:正常數據傳輸狀態 FIN_WAIT1:應用說它已經完成 FIN_WAIT2:另一邊已同意釋放 ITMED_WAIT:等待所有分組死掉 CLOSE_WAIT:表示被動關閉,需要從程序本身出發。 CLOSING:兩邊同時嘗試關閉 TIME_WAIT:另一邊已初始化一個釋放 LAST_ACK:等待所有分組死掉

http://blog.csdn.net/chlinwei/article/details/67632928(netstat state詳解)

?

連接狀態含義分別如下:

TIME_WAIT:表示主動關閉,通過優化系統內核參數可容易解決。

CLOSE_WAIT:表示被動關閉,需要從程序本身出發。

ESTABLISHED:表示正在通信。

SYN_SENT狀態:表示主動請求連接,當你要訪問其它的計算機的服務時首先要發個同步信號給該端口,此時狀態為SYN_SENT,如果連接成功了就變為ESTABLISHED,此時SYN_SENT狀態非常短暫。但如果發現SYN_SENT非常多且在向不同的機器發出,那你的機器可能中了沖擊波或震蕩波之類的病毒了。這類病毒為了感染別的計算機,它就要掃描別的計算機,在掃描的過程中對每個要掃描的計算機都要發出了同步請求,這也是出現許多SYN_SENT的原因。

?

一、TIME_WAIT

? ? ? ?TIME_WAIT是主動關閉連接的一方保持的狀態,對于服務器來說它本身就是“客戶端”,在完成一個任務之后,它就會發起主動關閉連接,從而進入TIME_WAIT的狀態,然后在保持這個狀態2MSL(max segment lifetime)時間之后,徹底關閉回收資源。

明明就已經主動關閉連接了為啥還要保持資源一段時間?這個是TCP/IP的設計者規定的,主要出于以下兩個方面的考慮:

? ? ? ? 1.防止上一次連接中的包,迷路后重新出現,影響新連接(經過2MSL,上一次連接中所有的重復包都會消失)

? ? ? ? 2.可靠的關閉TCP連接。在主動關閉方發送的最后一個 ack(fin) ,有可能丟失,這時被動方會重新發fin, 如果這時主動方處于 CLOSED 狀態 ,就會響應 rst (重新建立新的連接)而不是 ack。所以主動方要處于 TIME_WAIT 狀態,而不能是 CLOSED 。另外這么設計TIME_WAIT 會定時的回收資源,并不會占用很大資源的,除非短時間內接受大量請求或者受到攻擊。

?

TIME_WAIT狀態可以通過優化服務器參數得到解決,因為發生TIME_WAIT的情況是服務器自己可控的,要么就是對方連接的異常,要么就是自己沒有迅速回收資源,總之不是由于自己程序錯誤導致的。?解決方案很簡單,通過修改/etc/sysctl.conf文件,服務器能夠快速回收和重用那些TIME_WAIT的資源

#對于一個新建連接,內核要發送多少個 SYN 連接請求才決定放棄,不應該大于255,默認值是5,對應于180秒左右時間 net.ipv4.tcp_syn_retries=2 #net.ipv4.tcp_synack_retries=2 #表示當keepalive起用的時候,TCP發送keepalive消息的頻度。缺省是2小時,改為300秒 net.ipv4.tcp_keepalive_time=1200 net.ipv4.tcp_orphan_retries=3 #表示如果套接字由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間 net.ipv4.tcp_fin_timeout=30 #表示SYN隊列的長度,默認為1024,加大隊列長度為8192,可以容納更多等待連接的網絡連接數。 net.ipv4.tcp_max_syn_backlog = 4096 #表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認為0,表示關閉 net.ipv4.tcp_syncookies = 1 #表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認為0,表示關閉 net.ipv4.tcp_tw_reuse = 1 #表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉 net.ipv4.tcp_tw_recycle = 1 ##減少超時前的探測次數 net.ipv4.tcp_keepalive_probes=5 ##優化網絡設備接收隊列 net.core.netdev_max_backlog=3000

生效,如下命令? ? ? ??

/sbin/sysctl -p

這里頭主要注意到的是:

net.ipv4.tcp_tw_reuse net.ipv4.tcp_tw_recycle net.ipv4.tcp_fin_timeout net.ipv4.tcp_keepalive_*net.ipv4.tcp_tw_reuse和net.ipv4.tcp_tw_recycle的開啟都是為了回收處于TIME_WAIT狀態的資源。 net.ipv4.tcp_fin_timeout這個時間可以減少在異常情況下服務器從FIN-WAIT-2轉到TIME_WAIT的時間。 net.ipv4.tcp_keepalive_*一系列參數,是用來設置服務器檢測連接存活的相關配置。

?

二、CLOSE_WAIT

? 對方主動關閉連接或者網絡異常導致連接中斷,這時我方的狀態會變成CLOSE_WAIT 此時我方要調用close()來使得連接正確關閉

? ? ? ?TCP協議規定,對于已經建立的連接,網絡雙方要進行四次握手才能成功斷開連接,如果缺少了其中某個步驟,將會使連接處于假死狀態,連接本身占用的資源不會被釋放。網絡服務器程序要同時管理大量連接,所以很有必要保證無用連接完全斷開,否則大量僵死的連接會浪費許多服務器資源.

?

? ? ? ?什么情況下,連接處于CLOSE_WAIT狀態呢?

? ??? ?情形1:?在被動關閉連接情況下,在已經接收到FIN,但是還沒有發送自己的FIN的時刻,連接處于CLOSE_WAIT狀態。通常來講,CLOSE_WAIT狀態的持續時間應該很短,正如SYN_RCVD狀態。但是在一些特殊情況下,就會出現連接長時間處于CLOSE_WAIT狀態的情況。

? ? ? ?情形2:?出現大量close_wait的現象,主要原因是某種情況下對方關閉了socket鏈接,但是我方忙與讀或者寫,沒有關閉連接。代碼需要判斷socket,一旦讀到0,斷開連接

? ? ?

附(TCP狀態變化):

1) Client -> FIN? -> Server???
2) Client <- ACK? <- Server? ?此時Client端處于FIN_WAIT_2狀態;而Server 端處于CLOSE_WAIT狀態。???
3) Client <- FIN? <- Server?? 此時Server 發送FIN給Client,Server 就置為LAST_ACK狀態。???
4) Client -> ACK? -> Server?? Client回應了ACK,那么Server 的套接字才會真正置為CLOSED狀態。?

? ?

http://www.cnblogs.com/leezhxing/p/4392263.html

http://linyu19872008.iteye.com/blog/1998832? ?(Centos TCP參數優化)

?

2. 查看線程

ps命令可以查看進程狀態,如執行如下命令:

ps -ef|grep java

結果如下圖:

可以看到,只打印了一個進程的信息;27989是線程id,java是指執行的java命令。這是因為啟動一個tomcat,內部所有的工作都在這一個進程里完成,包括主線程、垃圾回收線程、Acceptor線程、請求處理線程等等。

通過如下命令,可以看到該進程內有多少個線程;其中,nlwp含義是number of light-weight process。

ps -o nlwp 27989

?

可以看到,該進程內部有73個線程;但是73并沒有排除處于idle狀態的線程。要想獲得真正在running的線程數量,可以通過以下語句完成:

ps -eLo pid,stat|grep 175679|grep running|wc -l

其中ps -eLo pid ,stat可以找出所有線程,并打印其所在的進程號和線程當前的狀態;兩個grep命令分別篩選進程號和線程狀態;wc統計個數。其中,ps -eLo pid ,stat | grep 27989輸出的結果如下:

圖中只截圖了部分結果;Sl表示大多數線程都處于空閑狀態。

?

3. traceroute 命令去檢查

如果服務器資源時而能加載時而不能加載,沒有502錯誤,則可以去檢查下網絡狀況,可以使用traceroute 命令去檢查:

traceroute xxx.xxxxcom

traceroute詳解: http://man.linuxde.net/traceroute

轉載于:https://my.oschina.net/trydaydayup/blog/1560200

總結

以上是生活随笔為你收集整理的服务器出问题排查的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲精品少妇一区二区 | 高h免费视频 | 91精品国产入口在线 | www.成人精品| 日韩美女毛片 | 69堂精品| 久久久国产精品成人免费 | 日韩aaaaa| 蜜臀av色欲a片无码精品一区 | 日韩一区二区影院 | 久久视频网 | 国产精品麻豆入口 | 性折磨bdsm欧美激情另类 | 精品国产一区二区三区性色 | 中文字幕一区二区三区免费看 | 亚洲AV成人精品 | 超碰超碰超碰超碰 | 男人都懂的网站 | av女星全部名单 | fc2ppv在线观看 | 亚洲精品综合在线 | 69影院少妇在线观看 | 91ts人妖另类精品系列 | 欧美天天 | 中文在线最新版天堂8 | 精品国产乱码一区二区三区99 | 日朝毛片 | 污污视频网站在线免费观看 | 亚洲怡红院av | 日韩免费中文字幕 | 最好看的2019年中文视频 | 男人日女人免费视频 | 色偷偷网站 | 欧美a视频 | 男女黄色录像 | 揉我啊嗯~喷水了h视频 | 精品人妻一区二区三区三区四区 | 成人视屏在线观看 | 疯狂揉花蒂控制高潮h | 欧美一区二区激情 | 中文字幕视频在线观看 | 琪琪射| 国产 一二三四五六 | 伊人视频 | 国产精品久久久久久无人区 | 国产剧情av在线播放 | 日本一区免费视频 | 人人做人人爱人人爽 | 91黄色免费观看 | 亚洲一区 中文字幕 | 国产免费看黄 | 免费在线观看毛片视频 | 国产又粗又猛又爽又黄的视频在线观看动漫 | 久久午夜伦理 | 亚色91| 在线观看一二三区 | 久久久久久婷婷 | 伦理片中文字幕 | 新婚夫妇白天啪啪自拍 | 欧美一级片网址 | 国产伦精品一区二区三区高清版禁 | 一区二区欧美在线 | 日韩欧美激情 | 涩涩综合 | 天堂网av2018| 国产欧美日韩 | 亚洲色视频 | 久久久三级| 欧美日韩在线影院 | 成人天堂av| 中文字幕国产 | 亚洲精品精品 | 久久99国产精品久久99 | 国产精品一卡二卡在线观看 | 韩国黄色网 | 2级黄色片 | 欧美性猛交99久久久久99按摩 | 国产最爽的乱淫视频国语对白 | 中文字幕在线一区 | 可以免费看的av网站 | 无码精品一区二区三区在线 | 电影《走路上学》免费 | 高清欧美性猛交xxxx黑人猛交 | 太久av | 丁香激情五月少妇 | 久久久久逼 | 成人在线a| 成人黄色国产 | 精品无码一区二区三区的天堂 | 美女毛片在线观看 | 瑟瑟综合网 | 8x8ⅹ国产精品一区二区二区 | 午夜性色福利影院 | 在线播放小视频 | 久久激情综合 | 欧美色综合网站 | av免费影院 | 男人天堂1024 | 日本免费三片在线播放 |