阿里雲工程師解決不了IO問題?
01-05
最近我的伺服器莫名假死。
阿里雲ECS伺服器是裝NGINX 和 PHP 跑了4個網站,兩個Drupal 一個wordpress 一個thinkphp阿里工程師讓我裝一個TOPIO來插排問題。現在關鍵問題是,伺服器正常的時候,IO沒有任何問題一切正常。
只有在伺服器假死後,IO是跑滿的。但最頭疼的是,在伺服器假死的時候,根本沒有辦法SSH到伺服器。阿里雲終端連接也不行。所以在伺服器假死的時候,根本不能進入伺服器排查問題。誰有辦法解決這個阿里工程師也比較頭疼的問題呢?
這不是錢的問題,是價值觀的問題
不是說賠百倍嗎?
超賣太多了就這樣。
試試腳本自己記錄日誌,事後上去看。
後台寫個程序, 每隔一秒建立連接然後關閉. 同時打log. 等到下次伺服器出問題的時候看看系統抱錯是啥. 我猜是Too many open files.
內部也討論熱火朝天,解決不了。。。
1.是iotop,不是TOPIO。
2.性能監控直接寫文件,這樣即使伺服器假死也能繼續輸出監控信息。
3.監控,請把cpu、內存、存儲io、網路io等全部監控。包括但不限於top、iotop、iostat、dstat等。應該是外部加熱導致的
都忙雲棲大會去了,誰有空管你啊
以前在這類部門呆過,明確告訴你,如果你確定你自己業務上不會出現類似問題,那就是母雞上其他子雞的問題,畢竟他們io隔離也就那麼回事。。。
我們有個小的Minecraft伺服器放在阿里雲。一度kswapd狂吃CPU,多次發ticket無解。
最後我們搞了個臟補丁:開機自動調低kswapd進程優先順序,並調高java的優先順序。反正遊戲能玩兒就行。
我在阿里雲跑了好幾個月的odoo,2cpu配置的那種,上上個月開始經常卡死 ,最後直接無法正常使用。 cpu也並無滿負載。 重裝系統還原數據回去,問題依然存在。 花70塊錢買了個linode最低配,裝odoo,還原數據,絲般流暢。 人家還是境外節點,還是單核。 同樣的系統,同樣的安裝方法,同樣的數據哭還原,天差地別的結果。 最近另一台北京節點伺服器也是對威海地區頻繁卡頓。 其他地區正常。
多半是阿里雲盾給跑滿的
先查一下伺服器假死的規律性,是跟時間有關聯,還是跟運行的程序有關聯。以前有碰到過類似假死的情況,就是伺服器不能正常提供服務了,但登陸進去又沒問題,查了很久發現非頁面緩衝池的數據異常,是由一個安全軟體引起的,解決辦法也是簡單粗暴,定時重啟。
沒讓你升配置么
我來猜測一下, 首先你ssh都連不上,感覺cpu佔用率應該也很高了, cpu佔用率高, 磁碟io高, 我能想到的問題就是內存不夠用了, kswap在緊張工作. 然後順著這個思路, 看看能不能發現問題對了, 題主最好發一下你的ECS的配置
帶寬夠嗎?
是的,他們真的解決不了!!!
謹慎懷疑是內存不夠了,你在sysconf文件把系統的保留內存設置一下,ecs系統盤的IOPS和吞吐還是不錯的,我覺得你的應用把IO打滿要比內存打滿困難些。
io跑滿有幾種狀況,假死的時候有沒有留意過網站的連接數多少?
ssh跟控制台都進不去,這個是重點
很大的可能性是配置調優的時候,修改文件描述符限制為65536.這個是系統的最大值,如果跑滿的時候,控制台是進不去的。然額好多blog都是這麼寫的。呵呵。
可以嘗試這麼做,整理伺服器上的服務,例如nginx跟php,然後配置不同的運行用戶(都不要用root),不同用戶分別限制文件描述符數量,總量不超過6w個。留一些給控制台跟系統用。
觀察一段時間,還會不會出現服務假死。
推薦閱讀:
※為什麼手游伺服器一般將登陸伺服器和遊戲伺服器分開?
※Linux 下多線程和多進程程序的優缺點,各自適合什麼樣的業務場景?
※如何使用 Go 語言寫遊戲伺服器?
※對於很多發燒級PC硬體玩家來說,伺服器cpu、recc內存和RAID陣列等等伺服器上的硬體或者技術真的有必要麼?
※為何多個 http 的 80 埠的站點可以共用同一個伺服器(IP),而 https 卻不行?