桓汗晶 北京中創(chuàng)信測(cè)信息技術(shù)有限公司監(jiān)測(cè)系統(tǒng)產(chǎn)品部產(chǎn)品經(jīng)理
編者按:隨著手機(jī)、平板電腦等智能終端以及互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,在短短幾年的時(shí)間里,國(guó)內(nèi)的移動(dòng)支付市場(chǎng)持續(xù)保持爆發(fā)式的增長(zhǎng)態(tài)勢(shì),而支付成功率則是影響用戶感知的關(guān)鍵因素。本文分享了某市提升移動(dòng)支付成功率的案例,依托專業(yè)的信令分析工具,通過對(duì)移動(dòng)支付服務(wù)器、移動(dòng)支付服務(wù)器端口、現(xiàn)場(chǎng)測(cè)試和用戶投訴信令等不同角度進(jìn)行分析,最終定位并解決了問題,極大地提升了用戶感知??晒┫嚓P(guān)技術(shù)人員參考。
2015年4月,某市移動(dòng)大量移動(dòng)支付POS機(jī)出現(xiàn)支付失敗投訴,導(dǎo)致數(shù)據(jù)業(yè)務(wù)投訴激增,嚴(yán)重影響用戶感知。本文借助專業(yè)信令分析工具,對(duì)移動(dòng)支付服務(wù)器、移動(dòng)支付服務(wù)器端口、移動(dòng)支付信令流程和測(cè)試情況進(jìn)行綜合分析,定位問題并提交優(yōu)化,最終完成了本次移動(dòng)支付專題優(yōu)化分析。
通過信令分析平臺(tái)對(duì)移動(dòng)支付業(yè)務(wù)信令標(biāo)準(zhǔn)流程進(jìn)行抓取,以此來定位移動(dòng)支付問題信令點(diǎn)。如圖1所示,針對(duì)關(guān)鍵信令點(diǎn)的描述如下:
(1)POS在開機(jī)后,使用GPRS網(wǎng)絡(luò)進(jìn)行ATTACH附著,并使用APN為CMNET進(jìn)行PDP激活。
(2)PDP激活后,POS機(jī)向移動(dòng)支付服務(wù)器(211.141.88.164)發(fā)起ping測(cè)試,移動(dòng)支付服務(wù)器進(jìn)行ping響應(yīng)。
(3)POS機(jī)與支付服務(wù)器進(jìn)行TCP三握手連接,目標(biāo)地址為211.141.88.164,端口號(hào)可選為8100或8200,具體使用與POS機(jī)設(shè)置有關(guān)。
圖1 移動(dòng)POS支付信令全流程
(4)完成TCP三握手連接后,POS機(jī)使用標(biāo)準(zhǔn)TCP協(xié)議向支付服務(wù)器發(fā)起業(yè)務(wù)請(qǐng)求消息,使用push-ack進(jìn)行傳輸,支付服務(wù)器回復(fù)ACK消息對(duì)其進(jìn)行響應(yīng),POS收到支付服務(wù)器回復(fù)的ACK消息后,使用push-ack對(duì)其進(jìn)行響應(yīng),完成支付過程。
(5)完成支付過程后,進(jìn)行TCP拆鏈。
2015年4月底某市大量移動(dòng)支付POS機(jī)出現(xiàn)支付失敗投訴,導(dǎo)致數(shù)據(jù)業(yè)務(wù)投訴激增。通過信令回放,并和移動(dòng)支付標(biāo)準(zhǔn)信令流程進(jìn)行對(duì)比發(fā)現(xiàn),問題可定位為POS機(jī)與移動(dòng)支付服務(wù)器進(jìn)行TCP三握手的環(huán)節(jié),由于TCP三握手失敗從而導(dǎo)致移動(dòng)支付失敗。
對(duì)具體信令進(jìn)行分析發(fā)現(xiàn),移動(dòng)支付POS機(jī)終端在附著和PDP激活成功之后,在與移動(dòng)支付平臺(tái)服務(wù)器進(jìn)行(IP地址為“211.141.88.164”)TCP三握手時(shí)失敗,其主要失敗端口為8100,失敗原因?yàn)镻OS機(jī)發(fā)起SYN請(qǐng)求后,一直未得到服務(wù)器的SYN-ACK響應(yīng),從而導(dǎo)致SYN在重發(fā)后超時(shí)失敗,導(dǎo)致POS機(jī)支付失敗。分別抓取POS支付失敗和成功的信令進(jìn)行對(duì)比,具體如圖2、3所示。
對(duì)移動(dòng)支付服務(wù)器全天24h時(shí)段TCP建立情況進(jìn)行跟蹤(見圖4),可見,在業(yè)務(wù)閑時(shí)段TCP三握手成功率為90%以上;7點(diǎn)后,隨著POS支付業(yè)務(wù)量增加,TCP三握手成功率急劇下降為50%左右;在21點(diǎn)后,隨著業(yè)務(wù)量下降,其成功率又逐步回升至70%左右??梢?,服務(wù)器整體TCP三握手成功率較低。
圖2 移動(dòng)POS支付失敗信令流程
圖3 移動(dòng)POS支付成功信令流程
通過以上分析,確認(rèn)服務(wù)器(211.141.88.164)問題異常并導(dǎo)致用戶投訴,需要協(xié)調(diào)處理該服務(wù)器。2015年4月25日,對(duì)移動(dòng)支付服務(wù)器和支付端口進(jìn)行更換,對(duì)更換后TCP三握手成功率情況效果驗(yàn)證如下(見圖5)。
從更換后的TCP三握手成功率來看,更換后通過服務(wù)器(211.141.88.164)的TCP三握手成功率明顯提升,忙時(shí)TCP三握手成功率由60%提升為80%左右,POS機(jī)刷卡成功率明顯改善,但整體成功率依然波動(dòng)較大,仍需進(jìn)行詳細(xì)分析。
從前文分析發(fā)現(xiàn),目前POS機(jī)刷卡的成功率雖有改善,但依然較低,需繼續(xù)進(jìn)行深入分析。為深入定位TCP三握手成功率低的原因,統(tǒng)計(jì)2015年5月20、21日移動(dòng)支付服務(wù)器(211.141.88.164)的TCP三握手趨勢(shì),具體如圖6所示。
可見,隨著業(yè)務(wù)次數(shù)(SYN次數(shù))的增加,TCP網(wǎng)絡(luò)側(cè)響應(yīng)成功率出現(xiàn)急劇下降,由閑時(shí)的90%下降為60%左右,但無線側(cè)成功率基本保持穩(wěn)定,因此移動(dòng)支付服務(wù)器TCP成功率與無線側(cè)關(guān)聯(lián)不大。同時(shí),TCP網(wǎng)絡(luò)側(cè)成功率和SYN超時(shí)次數(shù)存在明顯相關(guān)性。當(dāng)SYN超時(shí)次數(shù)增加時(shí),網(wǎng)絡(luò)側(cè)成功率出現(xiàn)明顯下降。因此,需重點(diǎn)分析移動(dòng)支付服務(wù)器在業(yè)務(wù)量增加時(shí)出現(xiàn)大量SYN超時(shí)是否與支付服務(wù)器負(fù)荷或相關(guān)內(nèi)部參數(shù)設(shè)置相關(guān)。
圖4 移動(dòng)POS支付平臺(tái)服務(wù)器TCP三握手成功率趨勢(shì)
圖5 移動(dòng)POS支付平臺(tái)服務(wù)器更換前后TCP三握手成功率趨勢(shì)
圖6 移動(dòng)POS支付平臺(tái)服務(wù)器TCP三握手成功率趨勢(shì)
統(tǒng)計(jì)使用移動(dòng)支付服務(wù)器(211.141.88.164)的不同支付端口時(shí)各個(gè)支付端口的TCP指標(biāo)情況,具體如表1所示??梢姡?dāng)前移動(dòng)支付服務(wù)器主要使用3個(gè)端口進(jìn)行業(yè)務(wù),分別為8001、8100和8200,但這3個(gè)端口的網(wǎng)絡(luò)側(cè)成功率相差較大,而無線側(cè)成功率基本一致。
通過和POS廠家溝通得知,POS機(jī)可以對(duì)相關(guān)端口進(jìn)行設(shè)置,其中8001端口為管理端口,可進(jìn)行相關(guān)簽到、管理操作,而8100和8200為POS支付端口,在進(jìn)行支付交易時(shí),需采用這兩個(gè)端口進(jìn)行。
從網(wǎng)絡(luò)側(cè)成功率分析來看,8100端口網(wǎng)絡(luò)側(cè)成功率保持在90%以上,但8001和8200端口成功率僅為60%左右;從3個(gè)端口的SYN嘗試次數(shù)來看,某市移動(dòng)POS機(jī)業(yè)務(wù)主要集中在8200和8001端口,8100端口業(yè)務(wù)量較小;從關(guān)聯(lián)SYN超時(shí)次數(shù)來看,8200和8001的SYN超時(shí)次數(shù)明顯高于8100端口,從而拉低了整體支付服務(wù)器的TCP網(wǎng)絡(luò)側(cè)成功率。
表1 支付服務(wù)器不同端口成功率分析
統(tǒng)計(jì)連續(xù)兩天支付服務(wù)器不同端口的小時(shí)級(jí)TCP指標(biāo),具體如圖7所示??梢姡S著業(yè)務(wù)量的增加,8200和8001端口的SYN超時(shí)次數(shù)明顯增加,從而引起兩個(gè)端口的網(wǎng)絡(luò)側(cè)成功率急劇下降;而8100端口隨著業(yè)務(wù)量的增加,SYN超時(shí)次數(shù)未見明顯增加。
因此,從對(duì)支付服務(wù)器的不同端口分析來看,8200和8001端口明顯存在異常,需對(duì)服務(wù)器的端口設(shè)置和相關(guān)參數(shù)進(jìn)行排查。
協(xié)調(diào)相關(guān)人員對(duì)某市移動(dòng)支付POS機(jī)進(jìn)行了相關(guān)測(cè)試,通過在GB口對(duì)業(yè)務(wù)進(jìn)行信令抓取,現(xiàn)場(chǎng)人員反饋某時(shí)間段內(nèi)出現(xiàn)刷卡時(shí)延較大,交易完成較慢的情況。通過wireshark對(duì)異常時(shí)段的測(cè)試信令抓包,具體分析如圖8所示??梢?,當(dāng)現(xiàn)場(chǎng)測(cè)試人員反饋刷卡較慢時(shí),從GB口信令上表現(xiàn)為服務(wù)器始終未對(duì)SYN包進(jìn)行響應(yīng),導(dǎo)致SYN包不斷進(jìn)行重發(fā),從POS發(fā)起SYN請(qǐng)求開始,由于一直未得到服務(wù)器端響應(yīng),導(dǎo)致SYN重發(fā)6次,整體業(yè)務(wù)時(shí)延為60s左右。與正常POS支付業(yè)務(wù)流程相比,正常支付流程時(shí)延僅為10s左右。由此來看,是由于支付服務(wù)器問題,導(dǎo)致不能及時(shí)對(duì)SYN進(jìn)行響應(yīng),從而導(dǎo)致用戶支付時(shí)延較大,影響用戶感知。
綜上分析可推斷移動(dòng)支付服務(wù)器可能存在部分參數(shù)設(shè)置問題,從而導(dǎo)致SYN包超時(shí)率較高。通過支付平臺(tái)服務(wù)器提供商對(duì)服務(wù)器相關(guān)參數(shù)和設(shè)置進(jìn)行核查發(fā)現(xiàn),其服務(wù)器確實(shí)存在對(duì)部分TCP握手消息不響應(yīng)的問題。經(jīng)查為其服務(wù)器開啟tcp_timestamps驗(yàn)證導(dǎo)致。
圖7 移動(dòng)POS支付平臺(tái)服務(wù)器不同端口TCP三握手成功率趨勢(shì)
圖8 刷卡支付測(cè)試抓包信令分析
當(dāng)服務(wù)器端的tcp_tw_recycle和tcp_timestamps都是1的時(shí)候,會(huì)檢查收到數(shù)據(jù)包TCP選項(xiàng)字段中的的timestamp(TS Value),當(dāng)來自同一個(gè)IP地址(任意源端口號(hào)),后來的數(shù)據(jù)包中TCP選項(xiàng)字段如果有timestamp且比前面數(shù)據(jù)包中的timestamp小,則server不做ACK響應(yīng)。
由于POS機(jī)客戶端的業(yè)務(wù)請(qǐng)求經(jīng)過2臺(tái)NAT服務(wù)器轉(zhuǎn)換后,后端服務(wù)器會(huì)認(rèn)為是同一個(gè)TCP連接,由于開啟了tcp_timestamps驗(yàn)證,在POS客戶端發(fā)起的業(yè)務(wù)請(qǐng)求的時(shí)間戳存在不一致情況下,有可能會(huì)導(dǎo)致客戶端發(fā)起SYN后,服務(wù)器端始終不回應(yīng)SYN ACK,從而導(dǎo)致SYN超時(shí)。
通過優(yōu)化,將移動(dòng)支付服務(wù)器端的Linux內(nèi)核參數(shù)tcp_timestamps由1修改為0,關(guān)閉時(shí)間戳驗(yàn)證后解決了SYN超時(shí)問題,從而解決了用戶支付失敗的問題。
5.2.1 整體提升效果
在2015年5月22日16點(diǎn)左右,對(duì)移動(dòng)支付服務(wù)器進(jìn)行了相關(guān)優(yōu)化,統(tǒng)計(jì)優(yōu)化前后(5月20—25日)的服務(wù)器TCP相關(guān)指標(biāo)并進(jìn)行跟蹤,具體如圖9所示。
可見,從優(yōu)化后整體效果來看,移動(dòng)支付服務(wù)器的網(wǎng)絡(luò)側(cè)成功率上升明顯,由之前的60%左右提升為90%以上,并連續(xù)保持穩(wěn)定;從SYN超時(shí)來看,SYN超時(shí)率由28%左右下降為5%左右,SYN超時(shí)次數(shù)明顯下降,由優(yōu)化前最高的400次下降為優(yōu)化后10次左右。
對(duì)移動(dòng)支付服務(wù)器各端口的網(wǎng)絡(luò)側(cè)成功率(見圖10)和SYN超時(shí)率(見圖11)指標(biāo)進(jìn)行跟蹤,可以看到,8001和8200端口在優(yōu)化后,網(wǎng)絡(luò)側(cè)成功率指標(biāo)提升明顯,兩個(gè)端口的網(wǎng)絡(luò)側(cè)成功率均在95%以上,較優(yōu)化前提升30%左右。從SYN超時(shí)率來看,由優(yōu)化前的35%左右下降為5%以內(nèi),下降了30%左右。
5.2.2 各TCP端口提升效果
2015年5月20—25日,對(duì)優(yōu)化前后的8200(見圖12)和8001端口(見圖13)的小時(shí)級(jí)TCP指標(biāo)進(jìn)行跟蹤,可見,在對(duì)服務(wù)器端進(jìn)行相關(guān)參數(shù)優(yōu)化后,8200和8001端口的TCP網(wǎng)絡(luò)側(cè)成功率均提升明顯,SYN超時(shí)次數(shù)下降明顯,從而顯著改善了用戶感知。
圖9 優(yōu)化前后移動(dòng)支付服務(wù)器TCP指標(biāo)跟蹤
圖10 優(yōu)化前后移動(dòng)支付服務(wù)器各端口的TCP成功率跟蹤
圖11 優(yōu)化前后移動(dòng)支付服務(wù)器各端口的SYN超時(shí)率跟蹤
圖13 優(yōu)化前后移動(dòng)支付服務(wù)器8001端口TCP跟蹤
依托專業(yè)的信令分析工具,對(duì)業(yè)務(wù)過程進(jìn)行全程信令分析,從移動(dòng)支付服務(wù)器、移動(dòng)支付服務(wù)器端口、現(xiàn)場(chǎng)測(cè)試和用戶投訴信令等不同角度進(jìn)行分析,發(fā)現(xiàn)隨著業(yè)務(wù)量增加,SYN超時(shí)率明顯上升,明顯影響用戶感知,最終定位為由服務(wù)器端內(nèi)核參數(shù)設(shè)置存在異常導(dǎo)致。依托專業(yè)的信令分析工具,可有效提升現(xiàn)場(chǎng)針對(duì)此類問題的解決能力,從而有效提升用戶實(shí)際感知。