您期望從大約 1000 美元的 MySQL 伺服器中獲得大約多少用途?

您期望從大約 1000 美元的 MySQL 伺服器中獲得大約多少用途?

我知道這是一個可怕的、籠統的問題,沒有好的答案,我提前道歉,但我想知道是否有人可以嘗試一個非常廣泛的估計。

假設您有一個專用 MySQL 伺服器,運行在價值約 1000 美元的現代硬體上。

假設使用者平均每分鐘發出 20 個讀取請求和 5 個寫入請求 - 所有都是直接查詢,沒有連線;主要是從約 10,000,000 行的索引表中「透過 UUID 選擇此行」。

在「推播」之前,您希望這樣的伺服器能夠處理非常、非常、非常、非常大致的並髮用戶數量。

答案1

正如您所指出的,這是一個非常廣泛的估計。

最大的問題是你用這 1000 美元買什麼。假設您使用普通硬碟需要更多的記憶體和更少的處理器能力,我想說,具有這些參數的合理編碼的應用程式(其中合理= 主要使用您的語言提供的任何抽象庫)應該能夠處理大約500並髮用戶。除了行集的大小之外,我會猜測更多(因為直接放入 RAM 的行越多,即使是立即寫入,您也必須執行的磁碟操作就越少)。

在這種情況下,行中的資料類型和您能夠承受的 RAM 量絕對是最大的因素。如果您可以減少寫入次數並減少索引表的大小,我認為您可能可以同時處理 1,000 個使用者。

您將看到兩個問題:

  1. 您能夠在 RAM 中快取的資料量以及您擁有的高於運行基本作業系統和資料庫伺服器操作所需的最低記憶體量的 RAM 量將決定您可以獲得什麼。更多的 RAM、更少的作業系統需求以及更少的應保留在 RAM 中用於查詢和寫入的有用資料將意味著可接受的效能與大量和大量抖動之間的差異。

  2. 應用程式的設計在這裡絕對至關重要。一次寫入覆蓋 500-1000 個使用者會產生巨大的影響。同樣,如果您的呼叫不簡單且高效,那麼您很快就會導致火車失事。我的估計是基於我所見過的一些正在運行的 mySQL 應用程序,並且對它們的工作原理知之甚少。如果應用程式存在根本性問題,那麼您甚至可能無法獲得 40 個使用者。如果您有效地編碼並考慮到硬體限制,您可能可以輕鬆擴展到 2,000 以上。

答案2

我可以回答這個問題。我剛剛下了那趟車,我還會再騎一次。

$650-800 可購買運行 1TB SATA2 硬碟的 8 GB RAM 中速四核心 AMD。 $170 可購買第二個相對較快的 1TB 硬碟。請記住,這是大多數電子產品/辦公室商店/百思買類型場所的現成硬體。你可以在其他地方得到更多的好處,但也不差錢。您可以花更多錢獲得更快的四核心。

現在,關於應用程序,我假設您正在運行 linux/BSD/unix 作業系統,並避免 ms 與 unix 的爭論。這是我發現的:

無論應用程式有多弱,我們都可以毫不費力地在任何應用程式上指定 200 多個活躍用戶/會話。事實上,我們已經有一段時間無法在運行的任何四核伺服器上刪除/崩潰/陷入應用程式......但我們在單核 200mhz 時代吸取了一些教訓。

例如,我們的姊妹公司銷售相當多基於 mysql 的通訊監控系統,每台機器有 1300 多個用戶,平均每小時有數百個並發會話。日誌記錄和報告是即時完成的(好吧,會發生一些緩衝),並且它們一直在[喘息] 緩慢的PATA 驅動器上的3Ghz 雙核機器上運行......實際上,133Mhz P-ata 驅動器。最長的使用者介面延遲約為 2 秒。十年前,他們拋棄了 MSSQL,轉而使用 MySQL,並立即獲得了結果。

請記住,這些機器正在運行網路應用程式+資料庫......所以你可以進行數學計算。它就是有效的。另外,我已經用這些替換了許多 oracle/MS/xxxx 應用程序,並且從未接近耗盡動力。另外,讓我從 dba 的角度詳細闡述其他人所說的內容……以下是來自實踐的 6 個技巧。

  1. 寫入會降低效能,特別是如果鎖定懲罰對編碼人員來說是一個陌生的概念。
  2. 在一張大桌子上做所有事情都會殺了你。
  3. 過度標準化不是你的朋友。如果您的程式設計師採用完整的第三範式,您的應用程式將會運作得很糟糕。非規範化資料佔用更多空間,但可以透過簡單的查詢完成偉大的事情。
  4. 一張大表會因頻繁寫入而阻塞。參見 1。
  5. 如果您編寫應用程式以使用一個(或多個)表進行資料顯示,並使用另一張表進行寫入,並在系統負載允許時將其同步到讀取表,那麼您就可以擺脫各種麻煩。我們使用少量的表來緩衝寫入,並且能夠應對數量驚人的事務,因為沒有人被踩到。
  6. 使用索引。無論如何,如果您知道查詢的哪些部分用作鍵。
  7. 根據記憶體調整資料庫安裝。請參閱 MySQL 線上文件。說實話,如果您的活動會話數少於 1000 個,您通常只需增加連線數即可。 http://dev.mysql.com/doc/refman/5.1/en/too-many-connections.html

透過查看大多數 wordpress/etc,您可以看到愚蠢的 SQL 正在運行。插件。大多數都是由不懂 SQL 的人編寫的,只要少數用戶,他們就會立即使伺服器崩潰。

答案3

$884 伺服器,8GB RAM,雙四核心 Xeon,300GB 7200rpm SATA 驅動器,40% 空閒,5% iowait

Uptime: 780727  Threads: 276  Questions: 1884267879  Slow queries: 3964303  Opens: 60474
Flush tables: 1  Open tables: 440  Queries per second avg: 2413.478

服務速度為 220mb/秒

相關內容