公司:HJSD
G項(xiàng)目是在HJSD接觸的第一個(gè)項(xiàng)目伐坏,項(xiàng)目中包含了數(shù)據(jù)采集的功能逝慧,主要的邏輯是截驮,合作方在對(duì)接的時(shí)候婆瓜,根據(jù)我方需求在指定地方埋點(diǎn)快集,然后定時(shí)產(chǎn)生對(duì)應(yīng)的日志數(shù)據(jù),我方定時(shí)通過(guò)rsync腳本獲取到數(shù)據(jù)日志廉白,并對(duì)日志進(jìn)行分析清理个初,最后出統(tǒng)計(jì)報(bào)表。
A商家是項(xiàng)目的合作方猴蹂,在對(duì)接剛開(kāi)始院溺,程序功能一切正常,但隨著A商家的業(yè)務(wù)快速擴(kuò)展磅轻,后期定時(shí)統(tǒng)計(jì)數(shù)據(jù)便出現(xiàn)了問(wèn)題珍逸,主要的現(xiàn)象是,定時(shí)統(tǒng)計(jì)的數(shù)據(jù)異常聋溜,次日發(fā)現(xiàn)排查數(shù)據(jù)文件發(fā)現(xiàn)并無(wú)異常谆膳,重新跑任務(wù)統(tǒng)計(jì)后數(shù)據(jù)正常,后期漸漸發(fā)展到上午排查時(shí)候發(fā)現(xiàn)異常撮躁,中午再次排查漱病,發(fā)現(xiàn)數(shù)據(jù)正常。隨后發(fā)現(xiàn)雙方通過(guò)rsync進(jìn)行同步數(shù)據(jù)時(shí)把曼,同步的延遲越來(lái)越長(zhǎng)缨称,有時(shí)候甚至延遲了超過(guò)6個(gè)小時(shí)
1、從前期程序的數(shù)據(jù)表現(xiàn)可以判定祝迂,后期的數(shù)據(jù)問(wèn)題來(lái)由于統(tǒng)計(jì)時(shí)間點(diǎn)睦尽,對(duì)應(yīng)數(shù)據(jù)尚未同步完
2、雙方通過(guò)rsync進(jìn)行日志數(shù)據(jù)的同步型雳,隨著A商家的擴(kuò)展当凡,已經(jīng)發(fā)展到單天500W個(gè)日志的數(shù)據(jù)量,首先懷疑是由于日志文件數(shù)過(guò)多導(dǎo)致每次同步時(shí)長(zhǎng)太長(zhǎng)纠俭。但是沿量,后期對(duì)比同等量級(jí)的商家,同樣500W個(gè)日志冤荆,同樣大小的日志朴则,同等量級(jí)的商家并未有像A商家這樣的高延遲
3、其次钓简,懷疑雙方網(wǎng)絡(luò)問(wèn)題乌妒,通過(guò)運(yùn)維調(diào)取日志的監(jiān)控日志汹想,發(fā)現(xiàn)雙方網(wǎng)絡(luò)一直正常,帶寬并無(wú)限制撤蚊,也未達(dá)到最高點(diǎn)
4古掏、rsync采取服務(wù)器客戶端模式,懷疑由于服務(wù)器的CPU或者內(nèi)存瓶頸導(dǎo)致服務(wù)器響應(yīng)過(guò)慢侦啸。經(jīng)過(guò)對(duì)比槽唾,服務(wù)器的內(nèi)存和CPU并沒(méi)有超出標(biāo)準(zhǔn),同時(shí)通過(guò)對(duì)其他商家的對(duì)比光涂,發(fā)現(xiàn)服務(wù)器的內(nèi)存和CPU比同等量級(jí)的商家的配置要高庞萍,所以排除CPU和內(nèi)存問(wèn)題
5、最后考慮rsync同步屬于IO密集型的操作忘闻,于是將問(wèn)題鎖定在磁盤IO上挂绰。
首先,通過(guò)iostat獲取磁盤的IO狀態(tài)服赎。發(fā)現(xiàn)日志所在的盤使用率已經(jīng)到達(dá)了100%葵蒂,讀寫延遲都相當(dāng)?shù)母摺?/p>
考慮可能是由于客戶端的原因,導(dǎo)致的使用率過(guò)高重虑,于是先暫停了客戶端腳本的同步践付。隨后,發(fā)現(xiàn)使用率僅降低了20%缺厉。隨后與A商家的運(yùn)維聯(lián)系永高,通過(guò)了解,A商家是通過(guò)多客戶端推送的方式來(lái)進(jìn)行日志匯總的提针。于是命爬,在將客戶端推送關(guān)閉之后,磁盤的使用率恢復(fù)到正常狀態(tài)辐脖。
6饲宛、總結(jié)問(wèn)題所在,由于A商家采用客戶端定時(shí)推送的方式嗜价,原本是每5分鐘一次艇抠,隨著不斷發(fā)展,客戶端越來(lái)越多久锥,造成了磁盤的使用壓力家淤,導(dǎo)致我方客戶端沒(méi)法正常的獲取到文件。在雙方協(xié)商之后瑟由,A商家延遲客戶端推送的周期絮重,改為20分鐘推送一次,同時(shí)錯(cuò)開(kāi)推送時(shí)間,我方去除強(qiáng)制校驗(yàn)青伤,減少rsync服務(wù)壓力督怜,最后問(wèn)題得到了解決。
rsync服務(wù)主要是用于提供高效的數(shù)據(jù)同步潮模,在生產(chǎn)使用的過(guò)程中,隨著數(shù)據(jù)量的增大痴施,需要注意以下幾點(diǎn):
1擎厢、inodes數(shù)目數(shù)問(wèn)題:通常作為rsync服務(wù),大部分運(yùn)維會(huì)考慮將磁盤容量擴(kuò)大辣吃,來(lái)達(dá)到存取文件的效果动遭。然而,除此之外神得,inodes文件數(shù)的限制厘惦,也會(huì)影響到文件的存取。即使數(shù)據(jù)大小沒(méi)有超過(guò)磁盤限制哩簿,inodes也會(huì)影響到數(shù)據(jù)的存儲(chǔ)宵蕉。所以做rsync服務(wù)的時(shí)候,如果存儲(chǔ)的文件數(shù)過(guò)多节榜,需要注意inodes數(shù)目的監(jiān)控羡玛,防止服務(wù)不可用
2、io問(wèn)題:rsync同步的過(guò)程中宗苍,會(huì)對(duì)文件進(jìn)行讀寫稼稿、校驗(yàn)等操作,加上文件數(shù)較多讳窟,此類操作數(shù)據(jù)IO密集型让歼,需要注意服務(wù)調(diào)用的方式與頻率,防止io負(fù)載過(guò)高