Php

在 Ubuntu Server 10 LTS 上設置 MySQL 的最有效方法是什麼?

  • August 11, 2010

這個問題最初是在 stackoverflow.com 上,但有人告訴我我可能會在這個網站上得到更好的答案……

很快我將為一個網站非常繁忙的客戶設置一個 Web 伺服器。他有一個無法真正更改的論壇(在用 PHP 編寫的Simple Machines Forum SMF 上執行)。我想將它自己移動到一個單獨的虛擬專用伺服器,因為它非常繁忙,每天大約有 40,000 次點擊,每天有 400 多個文章。使用它擁有的 SMF 版本(最好、最穩定的生產版本 1.1)它需要執行 MySQL,所以我不能將它更改為 PostgreSQL(我可能更喜歡)

在 Ubuntu Server 10 LTS 上安裝 MySQL 伺服器時,我很想知道是否有什麼我可以做的,以確保它是最有效的。我希望盡可能快地執行以降低資源並確保我們可以保持在伺服器的資源限制之下。使用虛擬專用伺服器,我可以選擇快速切換資源,但我想確保 MySQL 伺服器的設置盡可能高效,因為我不是那種類型的專家。

我正在做一些研究,發現一篇文章建議這樣做以確保它的效率:

# open mysql conf and set these settings:
#    key_buffer = 16k
#    max_allowed_packet = 1M
#    thread_stack = 64K
nano /etc/mysql/my.cnf
# restart mysql
/etc/init.d/mysql restart

誰能給我一些關於這個主題的提示、提示、連結和知識?

首先; Janne 是正確的:每天 40k 讀取和 400 寫入是零負載。幾乎任何類型的設置都應該絕對沒有性能缺陷。

我在帶有 SMF 的 VPS 上執行類似的設置。我發現它從記憶體機制中受益匪淺,因為它利用了 APC。

我的設置(我向您推薦):

  • Nginx
  • MySQL(大多數 SMF 表的 InnoDB 轉換)
  • PHP-FPM(極具可擴展性,如果您告訴它從少量生成開始,則可以使用很少的資源)
  • APC 記憶體

首先,每天 40 000 次點擊和每天 400 多個文章聽起來不像是讓 MySQL 出汗的事情。一天 40 000 次點擊,如果在一天內傳播,大約每秒點擊 2 次,而 400+ 文章意味著每三分鐘就有一個新文章。

這並不多。真的。

您沒有提到正在使用什麼儲存引擎。對於 MyISAM 表,您需要特別調整key_buffertable_cache值。對於 InnoDB 表, innodb_buffer_pool_size是最重要的一個。

您的範例中的key_buffer = 16k聽起來很奇怪。一個 16 KB 的 key_buffer?沒辦法,至少要 16M(兆字節),或者如果你的伺服器有足夠的記憶體,那麼它可以更多。請注意,儘管許多 MySQL 變數是特定於連接的,而不是全域值,所以如果您的伺服器負載意味著數千個同時 MySQL 連接,那麼您需要調低這些值,但如果您通常只有少數連接但很大數據集,那麼您需要調整值。

引用自:https://serverfault.com/questions/169168