阿里雲新伺服器遇到的問題之--完結

  • 2019 年 10 月 3 日
  • 筆記

寫在前面

因為原來的描述錯誤,內容做了更正。對於涉及T系列伺服器的評論,請忽略。我們提供的是C系列計算型。因為著急,提供的錯誤資訊請諒解。

前言

公司一直用的阿里雲伺服器,系統是windows server 2008。因為做技術,了解做一個雲服務有多難。阿里起家早,當時的種種壯舉也早已耳熟能詳。本著技術人的同情與傾佩,一直很相信阿里雲。結果這兩天碰到了一個bug,阿里雲對這個事情的處理態度讓人心寒。回想去年嘲笑騰訊雲因為人為失誤導致用戶數據丟失,結果僅僅賠付購買伺服器的錢,現在覺著好打臉。是天下烏鴉一般黑呢?還是尾大不掉呢?

起因

客戶反應,他遊戲的階段不對了,每個階段非常長。我上伺服器查看,錯誤日誌沒有,資料庫異常語句沒有,cpu正常,記憶體正常,磁碟正常,唯一發現記憶體有硬錯誤,並且有點多。上網查了一下,沒有什麼介紹為什麼記憶體硬錯誤,有一點介紹是硬體讀寫超時導致的。找不出什麼原因,就是感覺系統有點卡,看了一下配置,與我們正常的伺服器沒什麼區別,唯一的區別是系統cpu不一樣。

調查

那隻能調試了。重新編譯了版本,上傳上去,開啟遠程調試,發現GetTickCount64調用異常。

這個函數參考 https://docs.microsoft.com/zh-cn/windows/win32/api/sysinfoapi/nf-sysinfoapi-gettickcount64

Retrieves the number of milliseconds that have elapsed since the system was started.

按照微軟的說法,就是返回系統啟動到現在經歷的毫秒數。並且我們使用了這麼久,沒出過問題,也非常精確。

但是調試發現,GetTickCount64兩次獲取差值是10000,表示正好是10秒鐘,結果伺服器上經過了40多秒才返回。也就是10000個系統時鐘的差值是40多秒,不是10秒。

好奇怪,第一次遇到這個問題。詳細查了一下新系統的cpu,發現與我們原來使用的都不一樣,是新一代升級過的。

 

原來我們以前的伺服器是Intel Xeon CPU 8163 如圖

 

新的伺服器是 Intel 8269cy,如圖

好吧,新產品上線,難免有問題。只好給阿里雲提工單。

不爽的經歷

我們不是第一次給阿里雲提供工單了,公司大,需要流程,OK可以理解,但是這次沒了互聯網公司敏捷的感覺,多了臃腫的政治化寡頭的味道。

第一天提,把問題描述清楚,說我們什麼語言,調用了什麼api,現在是什麼現象,理論上是什麼現象。

下午有人問了一遍大體問題。然後就是請等待,正在找技術調查。

第二天第二個人上線問,結果還是個客服。說是技術,隨便說兩句話就露餡了。讓我們提供測試結果和程式碼。這……好我忍,寫了測試程式碼。

int main()  {      long long stick = GetTickCount64();      long long etick = GetTickCount64();      cout << "start tick " << stick << endl;      time_t stime = time(NULL);      cout << "start time " << stime << endl;      while (etick - stick < 10000)      {          etick = GetTickCount64();      }      cout << "end tick " << etick << endl;      time_t etime = time(NULL);      cout << "end time " << stime << endl;      cout << "end tick - start tick = " << etick - stick << endl;      cout << "end time - start time = " << etime - stime << endl;      char inchar;      cin >> inchar;  }

然後在正常的伺服器上跑一遍,OK,結果都是對的,時間也是10秒。

在異常的伺服器上跑一遍,嗯???奇異的現象發生了,結果也是對的。

下面是結果

 

 

 這這這,完全出乎我的意料了。本來以為,GetTickCount64調用有問題,也就是每次加1,並不是1毫秒了,而是幾毫秒,或是幾十毫秒。但是time是正常的,那麼結果就是GetTickCount64返回值10000的差值應該是time返回值差值的40多。現在都是一樣。我慢慢的點開系統右下角的時間,靈異的事情發生了。如下影片

 

系統時間都變慢了!!!

這足夠可以說明問題了吧,我們把影片發給阿里雲。結果他們說他們測試下來正常的。給我們了他們的影片,如下

但是從阿里雲自己提供的影片上面可以看出。不管是桌面還是系統時間(因為他們是在線,要求我們調查,過了幾分鐘立馬回的),都不是我們有問題的系統。也就是他們隨便找了一台正常的伺服器,錄了一個影片給我,然後告訴我們沒問題。

退款

我們要求退款,然後買一個新的,阿里雲不同意。

沒辦法我打杭州12315消費者協會電話,被告知,阿里雲屬於商業產品,他們不受理,就算是個人買來使用也不行,只能走法律途徑。回到工位給同事說,感覺就是,十幾公里上班的路程,覺著太遠,問一下有沒有公交,被告知,只有飛機,愛坐不坐,不然就走著過來。

強行扯皮

沒辦法,只能死磕了,因為伺服器是客戶賬戶買的,不能說上一個不能使用就讓客戶直接買新的。扯皮了好久,終於同意退款。但是要500多天,錢才可以到賬。可以的,這很霸道。

新伺服器上線

晚上買了新伺服器,查看系統時間,正常。配置好,啟動。打開遊戲,驚呆了!!!遊戲階段變快了。也就是原來10秒鐘的時鐘,現在也就2、3秒。這……

正在準備調試的時候,好了?!戰戰兢兢等了幾十分鐘,沒有異常。OK,回家。

問題重現

早上來到,就被告知,階段變慢的問題又出現了。黑線~~

猜測

昨天我就猜測是不是因為我們C6的系統,用的是C5的鏡像導致的。但是當時因為客戶著急,先應付一下,不用鏡像,配置太麻煩了。所以第二個新系統還是用的鏡像。現在我們重裝系統,不用鏡像,再次測試,因為問題復現需要第二天……

無解

剛剛把通過鏡像創建的伺服器重裝系統,啟動,我還沒配置好,又出現時間走的慢的問題了。求救哪位老哥知道解決方法

回復

很多同學建議換一個實例,實際上我們第二個新的實例,就換了一種,不過還是有問題。關鍵是這個問題,阿里雲沒有給明確的說明,他那麼多實例,從幾百到幾千一個月,不可能作為用戶幫他們一個個測試到底哪個是好用的。就他這個退款速度,實在是也不敢試啊。

對於有的同學說的,使用突發性能實例的問題。是我描述資訊錯誤,我們購買的是計算型實例。如下圖,一般都是4核8G的。根據後續要求,再提升。

 

後續

阿里雲終於解決了,說是換了一個物理機,並且電話回訪,做了解釋。算是挽回一分。等待周六周日看看情況吧。

問題復現

還沒等到周一,剛剛過了一會,問題復現。現在已經呆住……

最新進展

可以打臉某些人了。首先感謝樓下的阿里雲產品經理。提醒我是C6的伺服器,不是T6的實例,他們也在跟蹤解決,並且有回電詢問問題詳細情況。等待中……

完結

周五晚上,與阿里雲那邊協作了好晚,感謝阿里雲提供的支援。目前兩個實例都是正常的。

Tags: