当前位置: 首页 > Linux

在Linux上查看活跃线程数与连接数

时间:2023-04-06 05:42:34 Linux

鍘熷垱锛氭墸閽夋棩璁帮紙寰俊鍏紬鍙稩D锛歝odelogs锛夛紝娆㈣繋鍒嗕韩锛岄潪鍏紬鍙疯浆杞戒繚鐣欐澹版槑銆傜畝浠嬬幇濡備粖锛屾湁涓ょ甯歌鐨勮蒋浠惰祫婧愬嚑涔庢垚浜咼ava鍚庣绋嬪簭鐨勬爣閰嶏紝鍗崇嚎绋嬫睜涓庤繛鎺ユ睜锛屼絾杩欎簺姹犲寲璧勬簮闈炲父鐨勯噸瑕侊紝涓€鏃︿笉澶熺敤浜嗭紝灏变細瀵艰嚧绋嬪簭闃诲銆佹€ц兘浣庝笅锛屾墍浠ユ湁鏃舵垜浠渶瑕佺湅鐪嬪畠浠殑浣跨敤鎯呭喌锛屼互鍒ゆ柇杩欓噷鏄惁鏄摱棰堛€傛煡鐪嬫椿璺冪嚎绋嬫暟鍦↙inux涓婏紝閫氳繃top -H -p 1鍛戒护锛屽彲浠ユ煡鐪媕ava杩涚▼鐨勭嚎绋嬫儏鍐碉紝鍏朵腑1鏄痡ava杩涚▼鍙凤紝濡備笅锛? 濡備笂锛屽彲浠ョ湅鍒扮嚎绋嬬殑鍚嶇О銆丆PU浣跨敤鐜囩瓑锛屽叾涓環ttp-nio-8080-e灏辨槸Tomcat绾跨▼姹犱腑鐨勭嚎绋嬶紝tomcat绾跨▼鍏ㄥ悕绫讳技浜巋ttp-nio-8080-exec-20锛岀敱浜嶭inux涓嚎绋嬪悕绉版湁闀垮害闄愬埗锛屾墍浠ヨ鎴柇浜嗐€傛敞锛歫dk8鐨勮瘽锛岄渶瑕乯dk8u222浠ヤ笂鐗堟湰锛屾墠鑳藉湪top涓湅鍒扮嚎绋嬪悕绉般€傛垜浠暟涓€涓媓ttp-nio-8080-e绾跨▼鐨勬暟閲忥紝鍙戠幇瀹冩湁20涓紝姝eソ瀵瑰簲涓婁簡鍦╯pringboot涓殑绾跨▼閰嶇疆銆? 杩欐牱鑳介€氳繃top寰楀埌绾跨▼姹犵殑绾跨▼鏁伴噺浜嗭紝浣嗗浣曚簡瑙g嚎绋嬫睜鐨勪娇鐢ㄦ儏鍐碉紝鍗虫椿璺冪嚎绋嬫湁澶氬皯涓憿锛? 缁忚繃鏌ョ湅man鏂囨。锛屾垜鍙戠幇top鍛戒护鏈変竴涓?i閫夐」锛屾弿杩板涓嬶細 鎰忔€濆氨鏄痠鏄竴涓紑鍏抽€夐」锛岄粯璁や細鏄剧ず鍏ㄩ儴绾跨▼锛岃€屾墦寮€姝ら€夐」涔嬪悗锛屽氨鍙樉绀烘椿璺冪嚎绋嬩簡锛? 鎵€浠ワ紝鍙渶瑕佸埄鐢?i閫夐」锛屽啀閰嶅悎sed/awk/uniq绛夋枃鏈鐞嗗懡浠わ紝鍗冲彲浠ョ粺璁″嚭娲昏穬绾跨▼鏁颁簡锛屽涓嬶細$ top -H -i -b -d 1 -n2 -p 1 | awk -v RS= 'END{print $0}' | awk '$1 ~ /[0-9]+/{print $12}' | sed -E 's/[0-9]+/n/g' | sort | uniq -c 鍙互鐪嬪埌锛?0涓嚎绋嬬殑绾跨▼姹犱腑锛屽湪1绉掑唴鍙湁4涓嚎绋嬫槸娲昏穬鐨勶紝绾跨▼姹犱腑绾跨▼鏁伴噺鏄冻澶熺殑銆? 杩欎釜鍛戒护鑴氭湰灏变笉灞曞紑瑙i噴浜嗭紝涔熶笉澶嶆潅锛屾湁linux鍛戒护鍩虹鐨勫皢鍛戒护渚濇鎷嗗紑鎵ц锛屽簲璇ヨ兘Get鍒拌剼鏈€昏緫锛屾病瀛﹁繃linux鍛戒护鐨勮瘽锛屽氨鐩存帴鎷垮幓鐢ㄥ惂馃槄鏌ョ湅娲昏穬杩炴帴鏁板湪Linux涓婏紝浣跨敤ss -natp|grep pid=1鍙互鏌ョ湅1鍙疯繘绋嬬殑TCP杩炴帴锛屽涓嬶細 姣斿鑻edis鏁版嵁搴撶鍙f槸6379鐨勮瘽锛岄偅涔堝彲杩欐牱鏌ョ湅redis杩炴帴姹犱腑杩炴帴鏁伴噺锛屽涓嬶細$ ss -natp | grep pid=1 | awk '$5~/:6379$/' | wc -l20鍙褰撳墠鏈?0涓猺edis缃戠粶杩炴帴锛岄偅鍚屾牱鐨勶紝鍏朵腑鏈夊灏戜釜鏄椿璺冪殑鍛紵 缁忚繃鏌ョ湅man鏂囨。锛屽彂鐜皊s涓篃鏈変竴涓?i閫夐」锛屽涓嬶細 鍙互鍙戠幇锛屾坊鍔?i閫夐」鍚庯紝ss浼氳緭鍑簍cp杩炴帴涓殑涓€浜涢澶栦俊鎭紝鍏朵腑lastsnd琛ㄧず鏈€鍚庝竴娆″彂閫佸寘鍒板綋鍓嶆墍缁忓巻鐨勬绉掓暟锛宭astrcv琛ㄧず鏈€鍚庝竴娆℃帴鏀跺寘鍒板綋鍓嶆墍缁忓巻鐨勬绉掓暟銆? 鏈変簡杩欎釜淇℃伅鍚庯紝灏卞彲浠ラ€氳繃awk杩囨护鍑簂astsnd鎴杔astrcv灏忎簬1000鐨則cp杩炴帴锛岃繖浜涜繛鎺ュ嵆鏄?绉掑唴娲昏穬杩囩殑杩炴帴浜嗭紝鍥犳鎴戝張缂栧啓浜嗗涓嬪懡浠よ剼鏈€? ss -natpi | sed '1!{N;s/\n//;}' | grep pid=1 | awk -v t=1000 'match($0,/lastsnd:(\w+) lastrcv:(\w+)/,a) && (a[1]<t || a[2]<t) && match($4,/(.+):(\w+)$/,s) && match($5,/(.+):(\w+)$/,d) && s[2]>=32768{print d[2]}' |sort |uniq -c |sort -nk2 8 80 3 3306 7 3307 6 6379 1 7916濡備笂锛屽彲浠ョ湅鍒板悇杩炲嚭绔彛鐨勬椿璺冭繛鎺ユ儏鍐碉紝鍏朵腑80鏄痟ttp杩炴帴姹犵鍙o紝3306涓?307鏄疢ySQL涓讳粠搴撶殑杩炴帴姹犵鍙o紝6379鏄痳edis杩炴帴姹犵殑绔彛銆? 杩欐槸java搴旂敤涓诲姩杩炲嚭杩炴帴鐨勬椿璺冩儏鍐碉紝閭h皟鐢ㄦ柟杩炲叆java搴旂敤鐨勫憿锛? 鍏跺疄鍙渶瑕佺◢寰皟鏁翠竴涓媋wk鑴氭湰鍗冲彲锛屽涓嬶細灏唖[2]>=32768璋冩暣涓簊[2]<32768锛屽叾涓?2768鏄疞inux榛樿鐨勪复鏃剁鍙e彿鐨勫垎鐣岀嚎锛屽彲閫氳繃sysctl net.ipv4.ip_local_port_range鏌ヨ锛屾湰鍦扮鍙e彿澶т簬杩欎釜鍊硷紝浠h〃鏄繛鍑鸿繛鎺?灏唒rint d[2]璋冩暣涓簆rint s[2]锛屽拰涓婇潰鏉′欢鑱斿悎璧锋潵锛岃緭鍑虹殑灏辨槸鏈湴鐩戝惉绔彛浜?璋冩暣鍚庯紝鏁堟灉濡備笅锛? ss -natpi | sed '1!{N;s/\n//;}' | grep pid=1 | awk -v t=1000 'match($0,/lastsnd:(\w+) lastrcv:(\w+)/,a) && (a[1]<t || a[2]<t) && match($4,/(.+):(\w+)$/,s) && match($5,/(.+):(\w+)$/,d) && s[2]<32768{print s[2]}' |sort |uniq -c |sort -nk2 8 8080鍙互鍙戠幇锛屾垜浠湇鍔$殑8080绔彛锛?绉掑唴娲昏穬杩囩殑杩炴帴鏁版槸8涓€傛敞锛氬彧鏈夊綋璋冪敤鏂逛篃浣跨敤杩炴帴姹犳椂锛岃繖绉嶆柟娉曡幏鍙栧埌鐨勬椿璺冭繛鎺ユ暟鎵嶆槸鍑嗙‘鐨勶紝鑻ヨ皟鐢ㄦ柟浣跨敤鐭摼鎺ョ殑璇濓紝鍒欎笉鍑嗙‘銆俛rthas鏌ョ湅娲昏穬绾跨▼鏁颁笌杩炴帴鏁伴€氳繃涓婇潰鐨勬柟娉曪紝宸茬粡鍙互鏌ョ湅娲昏穬绾跨▼鏁颁笌杩炴帴鏁颁簡锛屼絾鏈変簺鎯呭喌涓嬶紝浼氫抚澶变竴浜涚粏鑺傦紝濡備笅锛歵op涓殑绾跨▼鍚嶄細鎴柇锛屽鏋滀笉鍚岀嚎绋嬫睜鐨勭嚎绋嬪悕鍓?6瀛楃涓€鏍凤紝鍒欏湪top涓棤娉曞尯鍒嗐€俿s涓槸閫氳繃绔彛鏉ュ尯鍒嗙嚎绋嬫睜鐨勶紝浣唄ttp鏈嶅姟鐨勭鍙e彿鍩烘湰閮芥槸80鎴?43锛屾墍浠ヤ笉鍚屽煙鍚嶇殑http鏈嶅姟鐨勮繛鎺ユ睜鏃犳硶鍖哄垎銆傝嫢闇€瑕佸垎杈╄繖浜涚粏鑺傦紝杩樻槸瑕佹繁鍏ュ埌jvm閲岄潰鏉ワ紝鑰宎rthas灏辨槸涓€涓笉閿欑殑宸ュ叿锛屽畠鐨剉mtool鍛戒护鑳藉鑾峰彇鎸囧畾绫诲瀷鐨凧ava瀵硅薄锛屽苟浠嶫ava瀵硅薄涓幏鍙栦俊鎭€? 浠pringboot涓轰緥锛岃幏鍙栧唴缃畉omcat绾跨▼姹犵殑娲昏穬鎯呭喌锛屽涓嬶細# --action getInstances锛氳〃绀鸿幏鍙栧璞″疄渚? --classLoaderClass锛氭寚瀹氱被鍔犺浇鍣? --className锛氭寚瀹氳鑾峰彇鍝釜绫荤殑瀹炰緥# --express锛氭寚瀹歰gnl琛ㄨ揪寮忥紝鐢ㄦ潵浠庡璞′笂鑾峰彇淇℃伅[arthas@1]$ vmtool --action getInstances --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader --className org.apache.tomcat.util.threads.ThreadPoolExecutor --express 'instances.{ #{"ActiveCount":getActiveCount(),"LargestPoolSize":getLargestPoolSize(),"CorePoolSize":getCorePoolSize(),"MaximumPoolSize":getMaximumPoolSize(),"QueueSize":getQueue().size(),"ThreadName":getThreadFactory().namePrefix }}' -x 2 涓婇潰鍏跺疄灏辨槸閫氳繃vmtool宸ュ叿锛岃幏鍙栧埌浜唗omcat鐨勭嚎绋嬫睜瀵硅薄锛岀劧鍚庤皟鐢ㄧ嚎绋嬫睜鐨刧etActiveCount()绛夋柟娉曪紝鑾峰彇鍒颁簡娲昏穬绾跨▼鏁梆煓? 瑕佽幏鍙栬繛鎺ユ睜鐨勬椿璺冩儏鍐碉紝涔熶竴骞跺憟涓婂惂锛屽涓嬶細# 鑾峰彇druid杩炴帴姹犵殑浣跨敤鎯呭喌[arthas@1]$ vmtool --action getInstances --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader --className com.alibaba.druid.pool.DruidDataSource --express 'instances.{ #{"url":#this.getUrl().split("\\?")[0], "username":#this.getUsername(),"PoolingCount":#this.getPoolingCount(),"ActiveCount":#this.getActiveCount(),"MaxActive":#this.getMaxActive(),"WaitThreadCount":#this.getWaitThreadCount(),"MaxWaitThreadCount":#this.getMaxWaitThreadCount()} }' -x 2# 鑾峰彇httpclient杩炴帴姹犵殑浣跨敤鎯呭喌[arthas@1]$ vmtool --action getInstances --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader --className org.apache.http.impl.conn.PoolingHttpClientConnectionManager --express 'instances.{ #pool=#this.pool.routeToPool.values() }' -x2鍙互鐪嬪埌锛宎rthas鐪熺殑寰堟柟渚垮疄鐢紝瀵逛簬Java Boy鏉ヨ锛屽€煎緱濂藉ソ鐮旂┒鐮旂┒馃憤馃憤馃憤