刷卡機(jī)的區(qū)域代碼對(duì)不對(duì)

瀏覽:157 發(fā)布日期:2023-06-24 00:00:00 投稿人:佚名投稿

網(wǎng)上關(guān)于刷卡機(jī)的區(qū)域代碼對(duì)不對(duì)的刷卡知識(shí)比較多,也有關(guān)于刷卡機(jī)的區(qū)域代碼對(duì)不對(duì)的問(wèn)題,今天第一pos網(wǎng)(www.keemji.com)為大家整理刷卡常見(jiàn)知識(shí),未來(lái)的我們終成一代卡神。

本文目錄一覽:

1、刷卡機(jī)的區(qū)域代碼對(duì)不對(duì)

刷卡機(jī)的區(qū)域代碼對(duì)不對(duì)

排查不一樣的問(wèn)題,往往會(huì)有不一樣的難點(diǎn)。有的問(wèn)題難在重現(xiàn),但只要能重現(xiàn)一次,那么問(wèn)題就會(huì)迎刃而解;有的問(wèn)題難在調(diào)試,比如排查一個(gè)刷卡機(jī)內(nèi)的SD卡,通過(guò)數(shù)據(jù)線連接到電腦上出現(xiàn)文件系統(tǒng)不可見(jiàn)的問(wèn)題。這可能需要研究刷卡機(jī)嵌入式操作系統(tǒng),和桌面操作系統(tǒng)的文件系統(tǒng),存儲(chǔ)系統(tǒng),以及設(shè)備管理三層的實(shí)現(xiàn),才能最終定位到問(wèn)題。

對(duì)于阿里云技術(shù)支持的同學(xué)來(lái)說(shuō),還有另外一種比較特別的技術(shù)難題。這類(lèi)問(wèn)題的難度來(lái)源于客戶的堅(jiān)持:當(dāng)我們的客戶對(duì)一個(gè)我們自己看起來(lái)無(wú)關(guān)緊要的問(wèn)題盤(pán)根問(wèn)底的時(shí)候,這個(gè)問(wèn)題就會(huì)變得非常棘手。今天就跟大家分享一例這樣的問(wèn)題。

是誰(shuí)動(dòng)了我的Cpu資源!

首先我簡(jiǎn)單解釋一下客戶所看到的問(wèn)題。如下圖第三行,top統(tǒng)計(jì)Cpu總體使用情況,使用了八個(gè)指標(biāo)。這八個(gè)指標(biāo)分別是,用戶空間進(jìn)程(us),內(nèi)核空間進(jìn)程(sy),高nice值的用戶空間進(jìn)程(ni),空閑(id),空閑等待io(wa),中斷上半部(hi),中斷下半部(si),以及steal時(shí)間(st)。理論上來(lái)講這八個(gè)指標(biāo)之和,應(yīng)該是100%。這八個(gè)指標(biāo)當(dāng)中,id和wa是Cpu空閑時(shí)間的統(tǒng)計(jì),這兩個(gè)值之和越小,說(shuō)明Cpu越忙碌。客戶這臺(tái)服務(wù)器的id與wa之和是0,所以這臺(tái)服務(wù)器的Cpu使用率是100%,其中占比最大的是ni。

除了第三行Cpu總體統(tǒng)計(jì)指標(biāo)之外,top會(huì)對(duì)Cpu的使用率,從進(jìn)程維度上進(jìn)行統(tǒng)計(jì),也就是CPU這一列。因?yàn)檫@臺(tái)服務(wù)器是16核的,所以每個(gè)進(jìn)程(多線程)的Cpu使用率可以超過(guò)100%,同時(shí)所有進(jìn)程Cpu使用率之和不能超過(guò)上線1600%(平均到每個(gè)核是100%)。

這個(gè)問(wèn)題的“見(jiàn)鬼”之處在于,雖然這個(gè)系統(tǒng)里運(yùn)行著787個(gè)進(jìn)程,但這些進(jìn)程使用Cpu之和,卻遠(yuǎn)小于1600%這個(gè)值。

晴天霹靂:?jiǎn)栴}現(xiàn)場(chǎng)丟失

剛準(zhǔn)備深入探究這個(gè)問(wèn)題的時(shí)候,不幸的事情發(fā)生了。客戶這臺(tái)機(jī)器重啟了。重啟之后問(wèn)題消失!雖然問(wèn)題現(xiàn)場(chǎng)丟失了,但客戶的質(zhì)疑沒(méi)有改變。客戶強(qiáng)烈要求我們提供這臺(tái)服務(wù)器Cpu打滿的原因。

備注:很多時(shí)候,我們?cè)谟龅诫y以解釋的問(wèn)題的時(shí)候,往往傾向于把問(wèn)題歸結(jié)到和這個(gè)問(wèn)題相關(guān)的“黑盒”的部分。這也是為什么,很多客戶在遇到不容易解釋的現(xiàn)象的時(shí)候,會(huì)懷疑原因在虛擬化層,或在物理機(jī)層,有時(shí)候甚至?xí)岩砂⒗镌频漠a(chǎn)品是不是“缺斤短兩”了。

nice!

作為技術(shù)支持工程師,在沒(méi)有重現(xiàn)環(huán)境的情況下,為了滿足客戶的需求,我這邊做的第一件事情是,搞清楚ni這個(gè)指標(biāo)的計(jì)算方法,跟客戶溝通這個(gè)指標(biāo)背后的理論知識(shí),然后期望客戶能夠理解,這個(gè)指標(biāo)跟物理機(jī)沒(méi)有任何關(guān)系,純粹是虛擬機(jī)內(nèi)部行為。

nice是什么

在第一部分,我介紹Cpu八個(gè)統(tǒng)計(jì)指標(biāo)的時(shí)候,提到了ni是高nice值的用戶空間進(jìn)程的Cpu使用率。nice值是什么呢,簡(jiǎn)單來(lái)講,nice值代表著一個(gè)進(jìn)程使用Cpu資源的優(yōu)先程度。每個(gè)進(jìn)程都會(huì)有一個(gè)與之對(duì)應(yīng)的nice值,nice值越高,那么這個(gè)進(jìn)程使用Cpu的優(yōu)先級(jí)就越低,獲得的處理器的時(shí)間相比較而言就會(huì)越少。而ni這個(gè)指標(biāo),統(tǒng)計(jì)的是系統(tǒng)中,所有nice值大于0的用戶空間進(jìn)程的Cpu的使用率。

一般情況下進(jìn)程默認(rèn)的nice值是0,而當(dāng)有些進(jìn)程需要更高的執(zhí)行優(yōu)先級(jí)的時(shí)候,我們會(huì)減小這些進(jìn)程的nice值。當(dāng)然有一些并不需要在高優(yōu)先級(jí)運(yùn)行的進(jìn)程,例如我們跑編譯程序gcc,去編譯一個(gè)內(nèi)核,這個(gè)操作預(yù)計(jì)會(huì)花幾個(gè)小時(shí),那么我們可以增加這個(gè)gcc進(jìn)程的nice值。

linux會(huì)把真正的用戶模式Cpu使用率拆分成兩部分顯示,nice值大于0的顯示為ni,小于等于0的顯示為us。

自己動(dòng)手跑高ni

這里我們做一個(gè)簡(jiǎn)單的測(cè)試去驗(yàn)證上邊的理論。我們使用for語(yǔ)句寫(xiě)一個(gè)簡(jiǎn)單的死循環(huán)程序loop,然后用objdump看代碼編譯之后的匯編程序。這段匯編非常簡(jiǎn)單,前兩行準(zhǔn)備堆棧指針;第三行初始化一個(gè)變量,這個(gè)變量位于堆棧上rpb-0x4這個(gè)位置;然后第四第五行重復(fù)遞增這個(gè)變量。

00000000004004ed <main>:

4004ed: 55 push %rbp

4004ee: 48 89 e5 mov %rsp,%rbp

4004f1: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%rbp)

4004f8: 83 45 fc 01 addl $0x1,-0x4(%rbp)

4004fc: eb fa jmp 4004f8 <main+0xb>

4004fe: 66 90 xchg %ax,%ax

loop進(jìn)程一旦被調(diào)度到一個(gè)Cpu上,那么這個(gè)Cpu就會(huì)被打滿。如下兩張圖,左邊是nice值為0的情況,右邊是nice值為19的情況。進(jìn)程nice值可以在圖下邊NI這一列看到。

下邊是Cpu使用率拆分到每個(gè)核上的情況。

不滿意的客戶

我跟客戶溝通ni這個(gè)指標(biāo)背后的理論知識(shí)和我的結(jié)論:這個(gè)問(wèn)題和物理機(jī)沒(méi)有什么關(guān)系。對(duì)于我的結(jié)論,客戶是不接受的。客戶強(qiáng)調(diào),在機(jī)器重啟之前,他檢查了系統(tǒng)里所有進(jìn)程的Cpu的使用情況,他非常確定沒(méi)有發(fā)現(xiàn)任何異常。雖然當(dāng)時(shí)系統(tǒng)里有一百多個(gè)java進(jìn)程,但是這些java進(jìn)程的Cpu使用率都非常低。

時(shí)間大法,好!

以前處理系統(tǒng)夯機(jī)問(wèn)題的時(shí)候,偶爾會(huì)走投無(wú)路。想象一下,一個(gè)復(fù)雜的系統(tǒng)中,運(yùn)行著上千甚至上萬(wàn)的進(jìn)程。而夯機(jī)則意味著,系統(tǒng)里的這些進(jìn)程,像一團(tuán)亂麻一樣,糾纏在了一起。這個(gè)時(shí)候,只有從這些進(jìn)程中整理出依賴關(guān)系,才能知道哪些進(jìn)程是夯機(jī)問(wèn)題的trouble maker,而哪些進(jìn)程又是夯機(jī)問(wèn)題的受害者。理清這些關(guān)系,大部分情況下,我們是靠理清資源的持有與等待關(guān)系。

可惜的是,這種分析方法并不是萬(wàn)能的。系統(tǒng)為了節(jié)省管理成本,只會(huì)有選擇的維護(hù)其中某些資源的持有與等待關(guān)系。

在我們不能用這種方法分析問(wèn)題的時(shí)候,另外一種方法就派上了用場(chǎng)。這種方法就是分析進(jìn)程進(jìn)入等待狀態(tài)的先后順序。我們稱(chēng)這種方法叫“時(shí)間大法”。

挖礦程序

在因?yàn)闊o(wú)法重現(xiàn)問(wèn)題而“走投無(wú)路”的時(shí)候,“時(shí)間大法”給了我希望。首先,在sa日志里我找到了Cpu達(dá)到100%的開(kāi)始時(shí)間是4月29日凌晨6點(diǎn)40。接著,我翻遍了系統(tǒng)里幾乎所有的文件,發(fā)現(xiàn)有兩個(gè)配置文件在6點(diǎn)39被創(chuàng)建。而存放這兩個(gè)配置文件的目錄,則有兩個(gè)非常可疑的庫(kù)文件libxmr-stak-c.a和libxmr-stak-backend.a。Google這兩個(gè)文件,發(fā)現(xiàn)這是門(mén)羅幣挖礦程序使用的名字。

還是不滿意的客戶

當(dāng)把上邊的發(fā)現(xiàn)同步給客戶的時(shí)候,客戶還是覺(jué)得證據(jù)不足。而且客戶再次強(qiáng)調(diào),他當(dāng)時(shí)看了所有系統(tǒng)里運(yùn)行的進(jìn)程,如果有可疑的進(jìn)程使用Cpu異常的話,他肯定早發(fā)現(xiàn)了。因?yàn)榭蛻舻膱?jiān)持,壓力再次回到了我們這一邊。

隱藏linux進(jìn)程方法一二三

如果客戶所說(shuō)的是真實(shí)情況的話,那么有什么方法可以隱藏linux進(jìn)程,讓客戶不能從ps或top的輸出中,讀到進(jìn)程信息呢?比較常用的三種方法是:創(chuàng)建進(jìn)程的時(shí)候,把pid設(shè)置成為0;直接修改ps和top代碼;或者h(yuǎn)ook libc里readdir和opendir等函數(shù)(因?yàn)閜s和top的實(shí)現(xiàn),直接使用了readdir和opendir等libc庫(kù)函數(shù),來(lái)讀取/proc文件及其子目錄)。

這個(gè)時(shí)候我突然想起自己之前曾經(jīng)看到過(guò)的,在6點(diǎn)39被更改的另外一個(gè)文件ld.so.preload。第一次檢查這個(gè)文件的時(shí)候,看到這個(gè)文件里被寫(xiě)了一條libjdk.so,想當(dāng)然的以為這個(gè)文件和java有關(guān),所以忽略了這條信息。

我知道事情的真相了!

這個(gè)時(shí)候,事情的全貌就顯現(xiàn)出來(lái)了。在6點(diǎn)39分,有人給ld.so.preload增加了一個(gè)庫(kù)文件。從那以后,所有的進(jìn)程,啟動(dòng)的時(shí)候都會(huì)首先加載這個(gè)庫(kù),然后再加載其他庫(kù)。這就產(chǎn)生一個(gè)效果,如果進(jìn)程調(diào)用一個(gè)外部函數(shù),這個(gè)函數(shù)的實(shí)現(xiàn)本來(lái)在其他庫(kù)文件里,但是這個(gè)預(yù)先加載的庫(kù)實(shí)現(xiàn)了同樣的函數(shù),那么動(dòng)態(tài)鏈接會(huì)先使用預(yù)先加載的這個(gè)庫(kù)里定義的這個(gè)函數(shù)。

記得上一次使用這個(gè)技巧的時(shí)候,還是多年前在寫(xiě)opengl trace工具的時(shí)候。后來(lái)轉(zhuǎn)投微軟系,linux上這些技巧就淡忘了。基本上來(lái)說(shuō),使用ld.so.preload,我們可以實(shí)現(xiàn)filter類(lèi)工具,在filter工具中實(shí)現(xiàn)過(guò)濾,追蹤,參數(shù)檢查等功能。當(dāng)然為了保證進(jìn)程正常運(yùn)行,我們的同名過(guò)濾函數(shù),最終還是會(huì)調(diào)用原來(lái)的函數(shù)。

驗(yàn)證了一下,系統(tǒng)里所有的進(jìn)程,因?yàn)橹貑ⅲ技虞d了libjdk這個(gè)庫(kù)文件到自己的地址空間里。下圖是讀bash進(jìn)程/proc/<pid>/maps內(nèi)容的輸出。

libjdk的雕蟲(chóng)小技

這個(gè)庫(kù)libjdk和java沒(méi)有什么關(guān)系,他非常小,實(shí)現(xiàn)也非常簡(jiǎn)單。以致于我們甚至可以通過(guò)讀匯編來(lái)理解它的行為。就如之前猜測(cè)的一樣,這個(gè)庫(kù)hook了readdir之類(lèi)的函數(shù),對(duì)讀取/proc文件夾的操作做了過(guò)濾,所以客戶在使用top或者ps命令的時(shí)候,得到的結(jié)果都是被過(guò)濾過(guò)的結(jié)果。這里不會(huì)對(duì)libjdk匯編代碼進(jìn)行深入分析,但是提供一個(gè)strings輸出的這個(gè)庫(kù)文件里包含的串。從這些串中,我們也能對(duì)這個(gè)庫(kù)的行為猜個(gè)大概。

后記

回顧這個(gè)問(wèn)題的處理過(guò)程,憑良心講,這個(gè)問(wèn)題本來(lái)并不算是什么疑難雜癥。可能抓個(gè)core dump,分分鐘就能搞定。但兩件事情極大的增加了這個(gè)問(wèn)題的排查難度,一個(gè)是問(wèn)題環(huán)境丟失,一個(gè)是客戶的堅(jiān)持。

當(dāng)然如果不是問(wèn)題環(huán)境丟失,那么我也不會(huì)去嘗試其他的排查思路,如果不是客戶的堅(jiān)持,我也不會(huì)做到把匯編代碼都拿出來(lái)做證據(jù)的這種程度。客戶的高要求,不斷的敦促,是我們不斷提升服務(wù)能力的重要驅(qū)動(dòng)力。

以上就是關(guān)于刷卡機(jī)的區(qū)域代碼對(duì)不對(duì)的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于刷卡機(jī)的區(qū)域代碼對(duì)不對(duì)的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)載請(qǐng)帶上網(wǎng)址:http://www.keemji.com/shuakatwo/209221.html

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。
聯(lián)系我們
訂購(gòu)聯(lián)系:小莉
微信聯(lián)系方式
地址:深圳市寶安區(qū)固戍聯(lián)誠(chéng)發(fā)產(chǎn)業(yè)園木星大廈

公司地址:深圳市寶安區(qū)固戍聯(lián)誠(chéng)發(fā)產(chǎn)業(yè)園木星大廈

舉報(bào)投訴 免責(zé)申明 版權(quán)申明 廣告服務(wù) 投稿須知 技術(shù)支持:第一POS網(wǎng) Copyright@2008-2030 深圳市慧聯(lián)實(shí)業(yè)有限公司 備案號(hào):粵ICP備18141915號(hào)

主站蜘蛛池模板: 亚洲欧洲日产韩国在线| 国产免费直播在线观看视频| 全黄性性激高免费视频| 男女同房猛烈无遮挡动态图| 怡红院亚洲红怡院在线观看| 久久青草国产免费观看| 浮力影院第一页小视频国产在线观看免费 | 男女后进式猛烈XX00动态图片| 大学生美女毛片免费视频| 久久精品夜夜夜夜夜久久| 永久免费AV无码网站在线观看| 四虎影永久在线观看网址| 日本另类z0zx| 夜夜爽一区二区三区精品| 中文字幕无码av激情不卡| 欧美xxxx性猛交bbbb| 亚洲色婷婷综合久久| 美女尿口扒开图片免费| 国产成人一区二区精品非洲| 91热视频在线观看| 妖精的尾巴国语版全集在线观看| 久久午夜无码鲁丝片午夜精品| 欧美人与动性行为网站免费| 人妻内射一区二区在线视频| 久久五月激情婷婷日韩| 大陆黄色a级片| 中文字幕a∨在线乱码免费看| 日韩精品高清在线| 亚洲国产综合网| 狠狠做五月深爱婷婷天天综合| 国产男女猛烈无遮挡| 99热这里有免费国产精品| 成人毛片手机版免费看| 久久婷五月综合| 欧洲美女与动性zozozo| 亚洲欧美日韩自偷自拍| 立即播放免费毛片一级| 四虎永久免费地址在线网站| 玖玖精品在线视频| 国产精品无码免费专区午夜| 中文无码av一区二区三区|