
我有一個網頁應用程式。為其購買了一個相當強大的伺服器。伺服器規格如下: CPU:DUAL E5-2620 RAM:32 GB DDR3 HDD:2 x 300GB SAS 10K 網路:100mbps/10TB 網路。
Web伺服器規格:Apache/nginx/PHP 資料庫:MySQL
現在我的用戶一天比一天高。我的服務器無法承受這樣的壓力。並且等待時間越來越長。所以我考慮將MySQL和Web伺服器分離在兩台相同的伺服器上以平衡CPU負載。現在我發現將mysql和php分開,我還會遇到以下問題!
- 等待網路傳輸:我有這樣的MySQL查詢:「SELECT * FROM table」如果表有超過500MB的資料。以我的連線速度來說,透過網路取得這樣的表格需要幾秒鐘的時間。它僅適用於一名用戶的 1 個連接,但它乘以 1 個用戶的 10 個連接和超過 100 個線上用戶。
上面的例子只是一個例子,實際數據顯示 100 個同時線上使用者的資訊如下:
交通量 + ø + 每小時
已收到+ 14.7 GiB + 201.4 MiB
傳送+ 429.4 GiB + 5.7 GiB
全部的+ 444.2 GiB + 5.9 GiB
所以看來分離對於我的網頁應用程式來說是不可能的。現在我被困在如何平衡這兩台伺服器上的負載而不遇到這麼大的問題上。有什麼替代方法可以平衡我的CPU負載而不會出現延遲問題(至少問題較少)?
*****注意:查詢是一個範例。我的查詢已經足夠優化,但我的應用程式要複雜得多,因此與資料庫有很多交互。但 mysql 資訊顯示仍有 6GiB 資料傳輸。
答案1
如果您優化了 Web 應用程序,不使用極其低效的 SQL 查詢,您可能可以將它們放回同一個機器上,負載要低得多。沒有理由每個使用者每次都應該閱讀整張表。適當的查詢和索引可能會在這裡提供巨大的提升 - 遠遠超過僅僅投入更多硬體的程度。
他們現在未能將乙太網路轉接器的速度提高到至少 10Gb/s。對於一些更奇特的類型甚至更快。伺服器之間更快的連結將會有所幫助。但不如正確的 SQL 查詢那麼多。