最近在玩優化 Apache 跟 MySQL 部份,然後就在 google 上面找一些資料,當然對我自己的網站當然改變不少,速度有增快許多,所以來紀錄一下,其實都是還蠻基本的改 config 檔案就可以了 1. apache 部份 for FreeBSD
# # 利用 ports 安裝 # 在安裝 Apache 時,加入此參數 WITH_MPM=XXXX 即可。 # cd /usr/ports/www/apache22 ; make WITH_MPM=worker install clean如果是要裝在 Linux 機器的話,可能要自己編譯,在 Apache 2.0 有很多效能上得改變,所以原本預設是 prefork
# # 編譯加上 # ./configure --with-mpm=worker在 Ubuntu 底下作法很奇怪,利用 apt-get 方式不能安裝 mpm worker,因為你安裝 php 的時候他會幫你移除,然後裝上 prefork,所以很奇怪,這部份我還不知道怎麼解決。
接下來設定 httpd-mpm.conf,目前我使用的設備 1g ram CPU x 2
# # 修改 httpd-mpm.conf # vi /usr/local/etc/apache22/extra/httpd-mpm.conf # worker MPM # StartServers: initial number of server processes to start # MaxClients: maximum number of simultaneous client connections # MinSpareThreads: minimum number of worker threads which are kept spare # MaxSpareThreads: maximum number of worker threads which are kept spare # ThreadsPerChild: constant number of worker threads in each server process # MaxRequestsPerChild: maximum number of requests a server process serves上面有很多參數,我不是很瞭解,所以還要去參考一下官方網站# Apache 啟動時先開啟 5 個 Threads StartServers 5 # 最大的連線數 MaxClients 1024 ServerLimit 50 MinSpareThreads 50 MaxSpareThreads 200 ThreadsPerChild 64 MaxRequestsPerChild 200 ThreadLimit 64
- StartServers
- MaxClients
- ServerLimit
- MinSpareThreads
- MaxSpareThreads
- ThreadLimit
- ThreadsPerChild
- MaxRequestsPerChild 然後修改 httpd-default.conf 來減少不必要的負擔
# # vi /usr/local/etc/apache22/extra/httpd-default.conf # # 連線超過 60 秒失敗就重試 Timeout 60 # 開啟 KeepAlive KeepAlive On # 設定同一時間可容許的 KeppAlive 量 MaxKeepAliveRequests 5000 # KeepAlive 多久要自動 Timeout 掉 KeepAliveTimeout 3 # 關掉那費時的 DNS 查尋 HostnameLookups Off上面設定好的話,請重新啟動 apache
# # 指令 # /usr/local/etc/rc.d/apache22 restart然後可以加上 php 模組:
[FreeBSD] 安裝 PHP APC 加速網頁速度 或者是加裝 Zend Optimizer (www.zend.com)
# # 安裝 # cd /usr/ports/devel/ZendOptimizer; make install clean # # 修改vi /usr/local/etc/php.ini 加入 # [Zend] zend_optimizer.optimization_level=15 zend_extension_manager.optimizer="/usr/local/lib/php/20060613-zts-debug/Optimizer" zend_extension_manager.optimizer_ts="/usr/local/lib/php/20060613-zts-debug/Optimizer_TS" zend_extension="/usr/local/lib/php/20060613-zts-debug/ZendExtensionManager.so" zend_extension_ts="/usr/local/lib/php/20060613-zts-debug/ZendExtensionManager_TS.so"在 MySQL 優化方面,其實在系統就有設定檔幫我們弄好了 FreeBSD 是放在 /usr/local/share/mysql 底下
* my-huge.cnf: 適合 1GB – 2GB RAM的主機使用。 * my-large.cnf: 適合 512MB RAM的主機使用。 * my-medium.cnf: 只有 32MB – 64MB RAM 的主機使用,或者有 128MB RAM 但需要運行其他伺服器,例如 web server。 * my-small.cnf: 記憶體少於 64MB 時適用這個,MySQL 會佔用較少資源。 選定好我們要的檔案之後,就把他移動到 mysql 設定的目錄底下
# # 複製檔案 # cp /usr/local/share/mysql/my-huge.cnf /var/db/mysql/my.cnf修改 my.cnf 檔案
# # my.cnf 底下的 max_connections 跟 max_user_connections # 必須大於 apache 的 "MaxClients" 值 # max_connections = 1024 max_user_connections = 1024 table_cache = 1200 # # 因為 mysql 預設就是1個user就是用1個 connection # MySQL defaults to 1 max connection, with 1 max connection per user參考網站: http://ms.ntcb.edu.tw/~steven/article/apache-tuning.htm http://www-css.fnal.gov/dsg/external/freeware/mysqlTuning.html
Performance Tuning Apache for mod_perl and Cgi-Proxy Web Server Optimization Guide
See also
- [SQL] 如何從單一資料表取得每個 key 前 n 筆資料
- 在 Docker 偵測 MySQL 或 Postgres 是否啟動
- 來聊聊 PHP & JavaScript & CSS 的 Coding Style
- 為什麼我選擇使用 Laravel Framework?
- Laravel 搭配 Google, Facebook, Twitter 第三方 OAuth 認證
- 將 wordpress 強制使用 SSL 連線
- PHP 7 vs HHVM Benchmark 比較
- Laravel 50 個小技巧 + Laravel 5.2 新功能
- Laravel Homestead 支援 MySQL 5.7 和 Node 5.0
- PHP-FIG 新網站