互聯網資訊
互聯網資訊

Tuning Linode VPS-小規模低性能低流量網站優化實踐

時間:2011-11-02   點擊量:392   關鍵詞:内存  調整  這個  參數  需要  PHP  基本  一點  MySQL  一個  或是  


偶然看(kàn)到以前寫過的這篇帖子《小規模低性能低流量網站設計原則》 ,重新發到微博上引起了一點反響,覺得(de)有必要以 Linode VPS 爲例再做個簡單的優化實踐說(shuō)明,免得(de)總有人(rén)問(wèn)我,也順便賺點點擊量。


假定現在你(nǐ)已經有了一個基本的 VPS 可(kě)用,基本内存 512MB 。參考官方提供的各種安裝指導将 LAMP 這個組合運行了起來(lái),操作(zuò)系統一般 Ubuntu ,Web 服務器 Apache ,數據庫 MySQL ,然後是 PHP ,以及需要安裝的應用軟件(jiàn),WordPress 、Drupal 或是 OpenCart 什麽的,一步一步配置好,能夠正常的浏覽頁面。按照(zhào)官方指導文檔操作(zuò)的一個好處是會包括一些基本的優化一點的配置。不至于出現太大(dà)的錯誤。


一旦應用就(jiù)緒後,登錄到操作(zuò)系統中,通過 top / iostat / free 等基本操作(zuò)系統命令收集基準數據,做記錄。收集信息越全面,對于後面的優化就(jiù)越便利。優化沒有魔法,隻有合理(lǐ)的方法。


1.内存相(xiàng)關的調整


内部測試或是較小範圍使用,可(kě)能這樣也不會遇到太大(dà)問(wèn)題。一旦訪問(wèn)人(rén)數多了一點,機(jī)器響應可(kě)能就(jiù)有點慢(màn)了。對于 VPS ,第一步着手調整的就(jiù)是各個組件(jiàn)對内存的使用。因爲内存受限,對内存的使用一定要精打細算一點。記住一旦内存耗盡,一部分(fēn)内存調用壓到磁盤上,系統負載會飙升,一般就(jiù)會挂掉。


一般來(lái)說(shuō),對于 LAMP 環境,以下幾個地方要注意:


PHP 程序的内存相(xiàng)關的調整


PHP5 配置文件(jiàn) php.ini 中 memory_limit 定義的值默認情況是16MB,該參數定義單個 PHP 腳本消耗最大(dà)的内存大(dà)小(大(dà)意)。如(rú)果程序某個頁面需要的内存超過這個限制,訪問(wèn)者最可(kě)能遇到一個 HTTP 500 錯誤,查看(kàn) Web 服務器錯誤日(rì)志也可(kě)以看(kàn)到。多數情況下,這個值需要做相(xiàng)應調整。比如(rú)設置爲32MB,是否合适,需要做觀察。有一個經驗方法是觀察 top 命令的輸出,看(kàn)相(xiàng)應進程的 SHR 字段的值,實際上總是盡量大(dà)一點點。但(dàn)不能過大(dà),一旦有個别程序寫的不好調用的時候占用過多資源,會導緻 VPS 挂掉。


經常有人(rén)問(wèn),這個服務器跑某某 Web 應用,能支持多少并發? 一個大(dà)緻的思路(lù)是估算單個進程占用的内存,看(kàn)系統能分(fēn)配多少内存給應用程序,并發的量大(dà)緻可(kě)以估算得(de)到。但(dàn)實際上,這個提問(wèn)基本沒多大(dà)價值。


另外,還(hái)有一個比較重要的參數需要修改 output_buffering 需要修改爲 On 或是具體(tǐ)數值(eg, 4096)。修改配置後,檢查是否生(shēng)效(如(rú)何檢查?)。另外,記住error_log的位置,随時查看(kàn)。


MySQL 數據庫内存占用


如(rú)果不确定 MySQL 内存使用情況,可(kě)以利用 MySQLReport 這個工(gōng)具收集一下 MySQL 實例的信息報告,不同時間段多收集幾次作(zuò)爲對比。然後相(xiàng)應的調整 key_buffer/query_cache_size 等參數的大(dà)小, 一次調整一個參數,重啓動 MySQL ,繼續抽取報告,分(fēn)析數據,然後調整下一個參數。既然需要編輯配置文件(jiàn) my.cnf , 建議(yì)順手加大(dà)一點 max_connections 這個參數(爲什麽?)。


多數内存問(wèn)題都(dōu)是由數據庫 I/O 引起,導緻 I/O 問(wèn)題多由不合理(lǐ)數據庫調用有關(這麽說(shuō)嚴謹麽?),解決不合理(lǐ)調用要麽修改應用,要麽通過查詢緩存或是 Key-Value Cache 等辦法緩解。這地方說(shuō)來(lái)話(huà)長,假定 VPS 上基本不會有這麽複雜的環境。


2. 影(yǐng)響 CPU 利用率的調整


這個主要針對 PHP 的 Opcode(Accelerator) 而言,解析、編譯PHP代碼是相(xiàng)當消耗CPU的操作(zuò)。常見(jiàn)的要麽是 APC, 要麽是 eAccelerator 或是 XCache,在 Ubuntu 下安裝配置都(dōu)相(xiàng)對簡單,參數調整簡單搜索一下就(jiù)知曉了。如(rú)果是 PHP 環境,那麽一定要用 Opcode 減少 CPU 的負荷(爲什麽?)。至于用哪一個關系倒是不大(dà),但(dàn)前提是必須要有一個。


另外,張磊同學這篇《讓進程運行在指定的CPU》對于特定需求的應用,很有借鑒意義。



文章(zhāng)内容及圖片來(lái)自(zì)網絡,如(rú)果侵權,請(qǐng)聯系:901070669@qq.com,我們将及時處理(lǐ);
推薦解決方案
熱(rè)門(mén)解決方案