2015-09-07 174 views
0

我們有一個ec2實例,平均使用率約爲10%。有時候我們會得到95%左右的尖峯 - 我們有一個警報觸發,所以我們可以檢查日誌。我檢查了日誌,看起來好像另一家公司擁有的網站爬了我們的網站一堆導致高峯,這引發了一個不再生產的PHP腳本的MySQL錯誤。這是正常的網站飆出你的服務器?AWS ec2實例高CPU使用率

+0

爬網請求的頻率如何,您使用的是哪種實例類型,並且您是否暴露了請求進行大量數據處理的URL。 PLZ更新 – Bijendra

+0

每隔幾天都有請求。我目前正在使用一個EC2微型實例,而不是公開URL。 – Jolen

回答

0

當然,網絡請求中的峯值可能會增加CPU利用率,並且如果網絡負載足夠大,它肯定會導致CPU達到100%。

關於您的PHP腳本中的MySQL錯誤,這可能是因爲您的數據庫無法處理更多連接,並且在腳本中連接到數據庫失敗。如果您記錄錯誤,則應該查看錯誤的詳細信息。如果你不記錄錯誤,你應該開始這樣做。

要驗證此網絡峯值導致此CPU峯值達到100%,請使用CloudWatch - 這是您的朋友。打開您的實例的NetworkIn和CPU Utilization圖,並確保查看「最大」統計量。比較圖表並觀察網絡峯值是否反映在CPU峯值中。

如果你從不需要源接收交通,阻止使用網絡ACLS(NACLS)他們的IPS:
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html

如果經常出現高水平的交通對這種情況下,你應該考慮移動到汽車縮放。藉助Auto Scaling,您可以通過ELB爲多個節點提供服務。 Web請求會發送到您的域名,ELB會將其捕獲並轉發到Auto Scaling Group中的節點。藉助Auto Scaling,您可以使用CloudWatch警報來讓您的基礎架構動態擴展。例如。當我的服務器的平均CPU利用率達到70%時,啓動一個額外的服務器來分散負載。
http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/WhatIsAutoScaling.html

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elastic-load-balancing.html

這裏是如何實現這種架構有很大的教程:
http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-register-lbs-with-asg.html

但把一個簡單的回答你的問題,是的,它是正常的在網絡中大穗過載實例的CPU。

1

當網站的公開網址在google/bing或任何其他機器人上註冊時,人們通常會面臨這種情況,並且bot會在一兩天內抓取每個網址一次,這會導致CPU時間,這是正常的。我之前也遇到過這個問題。如果是來自谷歌機器人,您可以從那裏刪除或取消註冊,對於其他網站,您將需要找出任何自定義解決方案。

3
  • 如果網址中有任何模式,您可以使用haproxy服務器來避免不需要的請求。隨着時間的推移不斷更新。
  • 當url不匹配時總是有404錯誤頁面,並且不會重定向到主頁,因爲它減少了服務器上的負載。如果您的主頁非常輕而且數據查詢量不大,則可以忽略這一點。

檢查增加用戶數量的負載,每個新請求跟蹤cpu利用率如何上升。

您無法完全避免不必要的請求,但可能會將其降低到某個級別。

此外,我還觀察到微觀實例的行爲,一旦達到100%或接近此值。即使沒有進一步的請求,它也需要幾秒鐘的時間。 如果您期望有時發生不必要的流量,那麼微觀實例可能不適合生產。

關於你的錯誤,這可能是由於缺乏可用的內存和MySQL進入死鎖狀態或類似的情況。 我稍後會進一步更新。