『壹』 查看linux中的TCP連接數
1)統計80埠連接數
2)統計httpd協議連接數
3)、統計已連接上的,狀態為「established
4)、查出哪個IP地址連接最多,將其封了.
1、查看apache當前並發訪問數:
對比httpd.conf中MaxClients的數字差距多少。
2、查看有多少個進程數:
3、可以使用如下參數查看數據
統計httpd進程數,連個請求會啟動一個進程,使用於Apache伺服器。
表示Apache能夠處理1388個並發請求,這個值Apache可根據負載情況自動調整。
4341
netstat -an會列印系統當前網路鏈接狀態,而grep -i "80"是用來提取與80埠有關的連接的,wc -l進行連接數統計。
最終返回的數字就是當前所有80埠的請求總數。
netstat -an會列印系統當前網路鏈接狀態,而grep ESTABLISHED 提取出已建立連接的信息。 然後wc -l統計。
最終返回的數字就是當前所有80埠的已建立連接的總數。
查看Apache的並發請求數及其TCP連接狀態:
TIME_WAIT 8947 等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認
FIN_WAIT1 15 等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認
FIN_WAIT2 1 從遠程TCP等待連接中斷請求
ESTABLISHED 55 代表一個打開的連接
SYN_RECV 21 再收到和發送一個連接請求後等待對方對連接請求的確認
CLOSING 2 沒有任何連接狀態
LAST_ACK 4 等待原來的發向遠程TCP的連接中斷請求的確認
TCP連接狀態詳解
LISTEN: 偵聽來自遠方的TCP埠的連接請求
SYN-SENT: 再發送連接請求後等待匹配的連接請求
SYN-RECEIVED:再收到和發送一個連接請求後等待對方對連接請求的確認
ESTABLISHED: 代表一個打開的連接
FIN-WAIT-1: 等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認
FIN-WAIT-2: 從遠程TCP等待連接中斷請求
CLOSE-WAIT: 等待從本地用戶發來的連接中斷請求
CLOSING: 等待遠程TCP對連接中斷的確認
LAST-ACK: 等待原來的發向遠程TCP的連接中斷請求的確認
TIME-WAIT: 等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認
CLOSED: 沒有任何連接狀態
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的
SYN_RECV表示正在等待處理的請求數;
ESTABLISHED表示正常數據傳輸狀態;
TIME_WAIT表示處理完畢,等待超時結束的請求數。
查看Apache並發請求數及其TCP連接狀態
查看httpd進程數(即prefork模式下Apache能夠處理的並發請求數):
返回結果示例:
1388
表示Apache能夠處理1388個並發請求,這個值Apache可根據負載情況自動調整,我這組伺服器中每台的峰值曾達到過2002。
查看Apache的並發請求數及其TCP連接狀態:
返回結果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的SYN_RECV表示正在等待處理的請求數;ESTABLISHED表示正常數據傳輸狀態;TIME_WAIT表示處理完畢,等待超時結束的請求數。
狀態:描述
CLOSED:無連接是活動 的或正在進行
LISTEN:伺服器在等待進入呼叫
SYN_RECV:一個連接請求已經到達,等待確認
SYN_SENT:應用已經開始,打開一個連接
ESTABLISHED:正常數據傳輸狀態
FIN_WAIT1:應用說它已經完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時嘗試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉
vim /etc/sysctl.conf
編輯文件,加入以下內容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然後執行 /sbin/sysctl -p 讓參數生效。
net.ipv4.tcp_syncookies = 1 表示開啟SYN cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防範少量SYN攻擊,默認為0,表示關閉;
net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許將TIME-WAIT sockets重新用於新的TCP連接,默認為0,表示關閉;
net.ipv4.tcp_tw_recycle = 1 表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。
net.ipv4.tcp_fin_timeout 修改系統默認的 TIMEOUT 時間
客戶端與伺服器端建立TCP/IP連接後關閉SOCKET後,伺服器端連接的埠
狀態為TIME_WAIT
是不是所有執行主動關閉的socket都會進入TIME_WAIT狀態呢?
有沒有什麼情況使主動關閉的socket直接進入CLOSED狀態呢?
主動關閉的一方在發送最後一個 ack 後
就會進入 TIME_WAIT 狀態 停留2MSL(max segment lifetime)時間
這個是TCP/IP必不可少的,也就是「解決」不了的。
也就是TCP/IP設計者本來是這么設計的
主要有兩個原因
1。防止上一次連接中的包,迷路後重新出現,影響新連接
(經過2MSL,上一次連接中所有的重復包都會消失)
2。可靠的關閉TCP連接
在主動關閉方發送的最後一個 ack(fin) ,有可能丟失,這時被動方會重新發
fin, 如果這時主動方處於 CLOSED 狀態 ,就會響應 rst 而不是 ack。所以
主動方要處於 TIME_WAIT 狀態,而不能是 CLOSED 。
TIME_WAIT 並不會佔用很大資源的,除非受到攻擊。
還有,如果一方 send 或 recv 超時,就會直接進入 CLOSED 狀態
如何合理設置apache httpd的最大連接數?
手頭有一個網站在線人數增多,訪問時很慢。初步認為是伺服器資源不足了,但經反復測試,一旦連接上,不斷點擊同一個頁面上不同的鏈接,都能迅速打開,這種現象就是說明apache最大連接數已經滿了,新的訪客只能排隊等待有空閑的鏈接,而如果一旦連接上,在keeyalive 的存活時間內(KeepAliveTimeout,默認5秒)都不用重新打開連接,因此解決的方法就是加大apache的最大連接數。
1.在哪裡設置?
apache 2.24,使用默認配置(FreeBSD 默認不載入自定義MPM配置),默認最大連接數是250
在/usr/local/etc/apache22/httpd.conf中載入MPM配置(去掉前面的注釋):
Include etc/apache22/extra/httpd-mpm.conf
可見的MPM配置在/usr/local/etc/apache22/extra/httpd-mpm.conf,但裡面根據httpd的工作模式分了很多塊,哪一部才是當前httpd的工作模式呢?可通過執行 apachectl -l 來查看:
Compiled in moles:
core.c
prefork.c
http_core.c
mod_so.c
看到prefork 字眼,因此可見當前httpd應該是工作在prefork模式,prefork模式的默認配置是:
<IfMole mpm_prefork_mole>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfMole>
2.要加到多少?
連接數理論上當然是支持越大越好,但要在伺服器的能力范圍內,這跟伺服器的CPU、內存、帶寬等都有關系。
查看當前的連接數可以用:
ps aux | grep httpd | wc -l
或:
pgrep httpd|wc -l
計算httpd佔用內存的平均數:
ps aux|grep -v grep|awk '/httpd/{sum+=$6;n++};END{print sum/n}'
由於基本都是靜態頁面,CPU消耗很低,每進程佔用內存也不算多,大約200K。
伺服器內存有2G,除去常規啟動的服務大約需要500M(保守估計),還剩1.5G可用,那麼理論上可以支持1.5 1024 1024*1024/200000 = 8053.06368
約8K個進程,支持2W人同時訪問應該是沒有問題的(能保證其中8K的人訪問很快,其他的可能需要等待1、2秒才能連上,而一旦連上就會很流暢)
控制最大連接數的MaxClients ,因此可以嘗試配置為:
<IfMole mpm_prefork_mole>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 5500
MaxClients 5000
MaxRequestsPerChild 100
</IfMole>
注意,MaxClients默認最大為250,若要超過這個值就要顯式設置ServerLimit,且ServerLimit要放在MaxClients之前,值要不小於MaxClients,不然重啟httpd時會有提示。
重啟httpd後,通過反復執行pgrep httpd|wc -l 來觀察連接數,可以看到連接數在達到MaxClients的設值後不再增加,但此時訪問網站也很流暢,那就不用貪心再設置更高的值了,不然以後如果網站訪問突增不小心就會耗光伺服器內存,可根據以後訪問壓力趨勢及內存的佔用變化再逐漸調整,直到找到一個最優的設置值。
(MaxRequestsPerChild不能設置為0,可能會因內存泄露導致伺服器崩潰)
更佳最大值計算的公式:
apache_max_process_with_good_perfermance < (total_hardware_memory / apache_memory_per_process ) * 2
apache_max_process = apache_max_process_with_good_perfermance * 1.5
附:
實時檢測HTTPD連接數:
watch -n 1 -d "pgrep httpd|wc -l"
『貳』 c語言的recv()非阻塞方法怎麼弄哦
需要將recv設置超時,Linux下設置超時如下:
//設置發送超時
struct timeval timeout={3,0};//3s
setsockopt(socket,SOL_SOCKET,SO_SNDTIMEO,(char *)&timeout,sizeof(struct timeval));
//設置接收超時
setsockopt(socket,SOL_SOCKET,SO_RCVTIMEO,(char *)&timeout,sizeof(struct timeval));
windows下設置超時如下:
int timeout = 3000; //3s
int ret=setsockopt(sock_fd,SOL_SOCKET,SO_SNDTIMEO,&timeout,sizeof(timeout));
int ret=setsockopt(sock_fd,SOL_SOCKET,SO_RCVTIMEO,&timeout,sizeof(timeout));
『叄』 linux瓚呮椂鏃墮棿璁劇疆linux瓚呮椂鏃墮棿
linuxsocket榛樿よ秴鏃舵椂闂達紵
涓句緥錛歴=socket();璁劇疆s涓簄on-blocking錛沜onnect(s,..);FD_SET...;rc=select(...,10s);if(rc==0)琛ㄧず10s瓚呮椂浜嗐傝繖涓瓚呮椂鐨勬剰鎬濇槸錛10s涔嬪唴錛宻elect涓鎵鏈塻ocket鐨勪簨浠跺潎鏈浜х敓錛堝傛灉鑷沖皯鏈変竴涓浜х敓錛屽垯rc澶т簬0)娉ㄦ剰錛氳繖涓10s璺焎onnect鏈韜鐨勮秴鏃舵満鍒跺畬鍏ㄦ棤鍏籌紝鍓嶈呯殑璁劇疆涓嶅獎鍝嶅悗鑰呫
10s鍚巗elect鐨勮繑鍥烇紝琛ㄦ槑10s鍐卌onnect榪樻病鎴愬姛錛宑onnect鍙鑳借繕鍦ㄦ寜鑷宸辯殑瓚呮椂鏈哄埗錛堜緥濡傛參鍚鍔錛夊皾璇曢噸榪烇紙褰撶劧瀹冩渶緇堜篃鏈変釜瓚呮椂錛夈
鑷充簬connect鏈韜鐨勮秴鏃舵槸鍚﹀彲浠ヨ劇疆錛屽彲鑳藉悇緋葷粺涓嶄竴鏍楓傞『渚挎彁閱掞細connect鐨剆ocket蹇呴』鏄痭on-blocking綾誨瀷錛屽惁鍒欙紝connect浼氶樆濉烇紝涔熷氨娌″繀瑕佺敤select鏉ユ嫻嬫槸鍚﹁繛鎺ユ垚鍔熴
鍙﹀栵紝閭d釜s瑕佹敞鍐屽埌write綾誨瀷鐨刦d涓錛屽嵆select鐨勭3涓鍙傛暟涓銆
鍏朵粬listen錛宺ecv浠涔堢殑錛屽畬鍏ㄧ被浼礆紙浣唋isten錛宺ecv鏈韜娌℃湁浠涔堣秴鏃舵傚康錛夈
鍙涓嶈繃listen鐨勫拰recv鐨剆ocket錛岃佹敞鍐屽埌read鐨刦d涓銆
濡備綍淇鏀筶inuxtcpestablished鑰佸寲鏃墮棿錛
1銆佷慨鏀筶inux緋葷粺涓嬬殑tcp_retries2涓1錛屽綋socket鍙戦侀槦鍒楁湁涓瀹氭暟鎹鏃訛紝紿佺劧鍒囨柇緗戠嚎錛岄犳垚寮傚父鏂閾劇殑鍦烘櫙錛屾ゆ椂錛屽ぇ綰﹁繃浜1縐掞紝鐢╪etstat瑙傚療established鐨勮繛鎺ユ秷澶憋紱
2銆佺戶緇鎶婅ュ弬鏁頒慨鏀逛負15錛岄噸澶嶄笂闈㈢殑瀹為獙錛屽彂鐜板ぇ綰﹁繃浜15鍒嗛挓鍚庯紝established鐨勮繛鎺ユ墠鏂寮錛
3銆佹妸鍙傛暟鍐嶆′慨鏀逛負5錛屽ぇ綰﹁繃浜7縐掞紝榪炴帴娑堝け
/proc/sys/net/ipv4/tcp_retries2
鎬濊冿細TCP鐨勮秴鏃跺悗錛岄噸浼犵殑嬈℃暟鍜岄噸浼犵殑鏃墮棿闂撮殧鏄褰卞搷榪炴帴鏂寮鐨勪富瑕佸弬鏁般備絾鏄錛屼粠涓婇潰鐨勫疄楠屾暟鎹鏉ョ湅錛屼技涔庢病鏈変粈涔堣勫緥銆傛煡闃卨inux甯鍔╂枃妗o紝鍙戠幇榪欎釜閲嶄紶鐨勬椂闂撮棿闅斾笌RTO鏈夊叧錛岃岃繖涓鍙傛暟鍙堟槸鍗忚鏍堥氳繃媯嫻嬬綉緇滅姸鍐佃屽疄鏃舵敼鍙樼殑銆
linux鐪嬮棬鐙楄秴鏃剁郴緇熶笉鏂閲嶅惎錛
閭f槸浣犵殑鍐呮牳鏈夐棶棰樸
鎹涓鐗堟湰鎶娿傚傛灉鏄浣犺嚜宸辮佸壀鐨勫唴鏍革紝鐪嬬湅鏄涓嶆槸娌℃湁鍠傜嫍銆傛垨鑰呯矖鏆寸偣鐩存帴紱佺敤鐪嬮棬鐙椼『肆』 recv函數返回什麼值
recv函數返回其實際的位元組數,如果recv在時出錯,那麼它返回SOCKET_ERROR。如果recv函數在等待協議接收數據時網路中斷了,那麼它返回0。
擴展閱讀,linux recv函數詳解:
1 #include <sys/socket.h>
2 ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags);
recv 的前3個參數等同於read函數。
flags參數值為0或:
flags
說明
recv
send
MSG_DONTWAIT
僅本操作非阻塞
MSG_OOB 發送或接收帶外數據
MSG_PEEK
窺看外來消息
MSG_WAITALL
等待所有數據
recv函數解析:
sockfd: 接收端套接字描述符
buff: 用來存放recv函數接收到的數據的緩沖區
nbytes: 指明buff的長度
flags: 一般置為0
1) recv先等待s的發送緩沖區的數據被協議傳送完畢,如果協議在傳送sock的發送緩沖區中的數據時出現網路錯誤,那麼recv函數返回SOCKET_ERROR
2)
如果套接字sockfd的發送緩沖區中沒有數據或者數據被協議成功發送完畢後,recv先檢查套接字sockfd的接收緩沖區,如果sockfd的接收緩
沖區中沒有數據或者協議正在接收數據,那麼recv就一起等待,直到把數據接收完畢。當協議把數據接收完畢,recv函數就把s的接收緩沖區中的數據
到buff中(注意協議接收到的數據可能大於buff的長度,所以在這種情況下要調用幾次recv函數才能把sockfd的接收緩沖區中的數據
完。recv函數僅僅是數據,真正的接收數據是協議來完成的)
3) recv函數返回其實際的位元組數,如果recv在時出錯,那麼它返回SOCKET_ERROR。如果recv函數在等待協議接收數據時網路中斷了,那麼它返回0。
4) 在unix系統下,如果recv函數在等待協議接收數據時網路斷開了,那麼調用 recv的進程會接收到一個SIGPIPE信號,進程對該信號的默認處理是進程終止。
『伍』 linux闃誨炰笌闈為樆濉瀕inux闃誨為潪闃誨
鍦ㄩ潪闃誨炴ā寮忎笂鎬庝箞鐭ラ亾recv鎺ユ敹鏁版嵁瀹屾垚錛
浠linux涓媡cpsocket緙栫▼涓轟緥錛氶樆濉炲氨鏄痳ecv/read鐨勬椂鍊檚ocket鎺ユ敹緙撳啿鍖鴻佹槸鏈夋暟鎹灝辮伙紝娌℃暟鎹鎴戝氨涓鐩寸潯瑙夎禆鐫涓嶈蛋錛岀洿鍒版湁鏁版嵁鏉ヤ簡璇誨畬鎴戞墠璧般
send/write鐨勬椂鍊欙紝瑕佹槸鍙戦佺紦鍐插尯婊′簡錛屾病鏈夌┖闂寸戶緇鍙戦佷簡鎴戜篃涓鐩寸潯瑙夎禆鐫涓嶈蛋錛岀洿鍒板彂閫佺紦鍐插尯鑵懼嚭瓚沖熺殑絀洪棿璁╂垜鎶婃暟鎹鍏ㄩ儴濉炲埌鍙戦佺紦鍐插尯閲屾垜鎵嶈蛋銆
錛堝綋鐒跺傛灉浣犻氳繃setsockopt璁劇疆浜嗚誨啓瓚呮椂錛岃秴鏃舵椂闂村埌浜嗚繕鏄浼氳繑鍥-1鍜孍AGAIN錛屼笉鍐嶇潯瑙夌瓑寰咃級
闈為樆濉炲氨鏄痳ecv/read鐨勬椂鍊欙紝瑕佹槸鎺ユ敹緙撳啿鍖烘湁鏁版嵁鎴戝氨璇誨畬錛屾病鏈夋暟鎹鎴戠洿鎺ュ甫鐫榪斿洖鐨-1鍜孍GAIN璧頒漢錛岀粷涓嶇潯瑙夌瓑寰呰借鏃墮棿銆
write/send鐨勬椂鍊欙紝瑕佹槸鍙戦佺紦鍐插尯鏈夎凍澶熺殑絀洪棿錛屽氨絝嬪埢鎶婃暟鎹濉炲埌鍙戦佺紦鍐插尯鍘伙紝鐒跺悗璧頒漢錛屽傛灉鍙戦佺紦瀛樺尯婊′簡錛岀┖闂翠笉瓚籌紝閭g洿鎺ュ甫鐫榪斿洖鐨-1鍜孍AGAIN璧頒漢銆傝嚦浜嶪O澶氳礬澶嶇敤錛岄栧厛瑕佺悊瑙g殑鏄錛屾搷浣滅郴緇熶負浣犳彁渚涗簡涓涓鍔熻兘錛屽綋浣犵殑鏌愪釜socket鎺ユ敹緙撳瓨鍖烘湁鏁版嵁鍙璇伙紝鎴栬呭彂閫佺紦鍐插尯鏈夌┖闂村彲鍐欑殑鏃跺欙紝瀹冨彲浠ョ粰浣犱竴涓閫氱煡銆
榪欐牱褰撻厤鍚堥潪闃誨炵殑socket浣跨敤鏃訛紝鍙鏈夊綋緋葷粺閫氱煡鎴戝摢涓鎻忚堪絎﹀彲璇諱簡錛屾垜鎵嶅幓鎵ц宺ead鎿嶄綔錛屽彲浠ヤ繚璇佹瘡嬈read閮借兘璇誨埌鏈夋晥鏁版嵁鑰屼笉鍋氱函榪斿洖-1鍜孍AGAIN鐨勬棤鐢ㄥ姛銆
鍐欐搷浣滅被浼箋
鎿嶄綔緋葷粺鐨勮繖涓鍔熻兘閫氳繃select/poll/epoll涔嬬被鐨勭郴緇熻皟鐢ㄥ嚱鏁版潵浣跨敤錛岃繖浜涘嚱鏁伴兘鍙浠ュ悓鏃剁洃瑙嗗氫釜鎻忚堪絎︾殑璇誨啓灝辯華鐘跺喌錛岃繖鏍鳳紝澶氫釜鎻忚堪絎︾殑I/O鎿嶄綔閮借兘鍦ㄤ竴涓綰跨▼鍐呭畬鎴愶紝榪欏氨鍙獻/O澶氳礬澶嶇敤錛岃繖閲岀殑鈥滃嶇敤鈥濇寚鐨勬槸澶嶇敤鍚屼竴涓綰跨▼銆傝嚦浜庝簨浠墮┍鍔錛屽叾瀹炴槸I/O澶氳礬澶嶇敤鐨勪竴涓鍙﹀栫殑縐板懠銆傝嚦浜庡紓姝ュ悓姝ワ紝鎴戜滑甯歌佺殑linux涓嬬殑緗戠粶緙栫▼妯″瀷澶ч儴鍒嗛兘鏄鍚屾io錛屼互璇繪搷浣滀負渚嬶紝鏈璐ㄤ笂閮芥槸闇瑕佺敤鎴瘋皟鐢╮ead/recv鍘諱粠鍐呮牳緙撳啿鍖烘妸鏁版嵁璇誨畬鍐嶅勭悊涓氬姟閫昏緫銆
寮傛io鍒欐槸鍐呮牳宸茬粡鎶婃暟鎹璇誨ソ浜嗭紝鐢ㄦ埛鐩存帴澶勭悊閫昏緫銆
寮傛IO鍦╨inux涓嬩竴鑸鏄鐢╝io搴撱
linuxaccept()鍑芥暟涓鐩村勪簬闃誨炵姸鎬,浠涔堝師鍥狅紵
accept錛堬級鍑芥暟灝辨槸闃誨炵殑鍟婏紝瑕佺瓑寰呮帴鏀跺埌鏈夊㈡埛絝璇鋒眰鎵嶅彲浠ヨ繘琛屽悗緇鐨勬搷浣滐紝浣犳墍璋撶殑涓嶅彲浠ユ槸鎸囦粈涔堬紵
open緋葷粺浣跨敤鎶宸э紵
open緋葷粺鏄澶氱嶈璦銆佺幆澧冪殑涓縐嶅嚱鏁般
LINUX涓璷pen鍑芥暟浣滅敤錛氭墦寮鍜屽壋寤烘枃浠躲侾B紼嬪簭璇璦涓璷pen鍔熻兘錛氭墦寮紿楀彛銆
瀵逛簬open緋葷粺鏉ヨ達紝絎涓変釜鍙傛暟浠呭綋鍒涘緩鏂版枃浠舵椂錛堝嵆浣跨敤浜哋_CREAT鏃訛級鎵嶄嬌鐢錛岀敤浜庢寚瀹氭枃浠剁殑璁塊棶鏉冮檺浣嶃
pathname鏄寰呮墦寮/鍒涘緩鏂囦歡鐨凱OSIX璺寰勫悕錛沠lags鐢ㄤ簬鎸囧畾鏂囦歡鐨勬墦寮/鍒涘緩妯″紡錛岃繖涓鍙傛暟鍙鐢變互涓嬪父閲忛氳繃閫昏緫浣嶆垨閫昏緫鏋勬垚銆
鎵撳紑/鍒涘緩鏂囦歡鏃訛紝鑷沖皯寰椾嬌鐢ㄤ笂榪頒笁涓甯擱噺涓鐨勪竴涓銆
浠ヤ笅甯擱噺鏄閫夌敤鐨勶細
1.璁劇疆涓洪潪闃誨炴ā寮
2.浠ヤ笅涓変釜甯擱噺鍚屾牱鏄閫夌敤鐨勶紝瀹冧滑鐢ㄤ簬鍚屾ヨ緭鍏ヨ緭鍑
3.open榪斿洖鐨勬枃浠舵弿榪扮︿竴瀹氭槸鏈灝忕殑鏈琚浣跨敤鐨勬弿榪扮︺